使用 KES 的服务器端对象加密
本程序假设运行 MinIO 和 KES 进程的是一台单一的本地主机机器。 有关运行 KES 的说明,请参阅 KES 文档。
备注
对于生产环境的编排,请使用 MinIO Kubernetes Operator 来部署一个启用了 SSE 并配置为与您的 KMS 一起使用的租户。
对于生产裸机环境,请参阅 MinIO on Linux文档,了解如何配置 MinIO 与 KES 和您的 KMS 一起使用的教程。
作为此过程的一部分,您将:
.
.
对于生产环境的编排,请使用 MinIO Kubernetes Operator 来部署一个启用了 SSE 并配置为与您的 KMS 一起使用的租户。
对于生产裸机环境,请参阅 MinIO on Linux文档,了解如何配置 MinIO 与 KES 和您的 KMS 一起使用的教程。
.
对于生产环境的裸机系统,请参阅 MinIO on Linux documentation,了解如何使用 KES 和您的 KMS 配置 MinIO 的教程。
重要
在 MinIO 部署中启用 SSE 将会自动使用默认加密密钥加密该部署的后端数据。
MinIO 需要 访问 KES 和外部 KMS 以解密后端并正常启动。
KMS 必须 维护并提供对 MINIO_KMS_KES_KEY_NAME
的访问。
先决条件
确保 KES 访问支持的 KMS 目标
此过程假设现有 KES 安装连接到受支持的 KMS 可安装,均可从本地主机访问。 请参考您所使用 支持的关键管理系统目标 的安装说明,以部署 KES 并将其连接到 KMS 解决方案。
KES Operations Require Unsealed Target
一些支持 KMS 目标允许您密封或解封保管库实例。 如果配置 KMS,KES 将返回错误 服务是密封的。
如果您重新启动或以其他方式密封您的保管库实例,KES 将无法针对该保管库执行任何加密操作。 您必须开启保管库才能确保正常运行。
请参阅您选择的 KMS 解决方案的文档,以获取有关是否需要解封的更多信息。
请参考您选择的受支持 KMS 的 KES 文档 中的配置说明。
部署或确保对 MinIO 部署的访问
此程序提供了修改 MinIO 部署的启动环境变量的说明,以通过 KES 和 KMS 目标启用 SSE。
有关新生产部署说明,请参阅:ref:多节点多硬盘(分布式) <minio-mnmd> 教程。 有关新的本地或评估部署说明,请参阅:单节点单硬盘 教程。
在为部署创建环境变量配置文件时,请暂停并切换回本教程,以包括支持 SSE 所需的必要环境变量。
对于现有的 MinIO 部署,您可以按照本过程中的说明修改现有的环境变量配置文件,并重新启动部署。
部署带有服务器端加密的 MinIO 和 KES
在开始这些步骤之前,创建以下文件夹:
New-Item -Path "C:\minio-kes-vault\certs" -ItemType "directory"
New-Item -Path "C:\minio-kes-vault\config" -ItemType "directory"
New-Item -Path "C:\minio-kes-vault\minio" -ItemType "directory"
先决条件
根据您选择的 支持的 KMS 目标 配置,您可能需要将 kes-server.cert
作为可信的证书权威(CA)传递。
请参考客户端文档中有关信任第三方 CA 的说明。
1) 创建 MinIO 配置
创建MinIO环境文件
使用您喜欢的文本编辑器创建环境文件。 以下示例使用 Windows 记事本程序:
notepad C:\minio-kes-vault\config\minio
在 Windows 主机上的 MinIO 环境变量配置文件中添加以下行。 请参阅 单节点单硬盘部署MinIO 教程,以获取有关基本 MinIO 环境变量配置文件的更详细描述。
该命令假设 minio-kes.cert
、 minio-kes.key
和 kes-server.cert
证书可以在指定位置访问:
# 将以下环境变量添加到现有的环境变量配置文件中。
MINIO_KMS_KES_ENDPOINT=https://127.0.0.1:7373
MINIO_KMS_KES_API_KEY=<API-key-identity-string-from-KES>
MINIO_KMS_KES_CAPATH=C:\minio-kes-vault\certs\kes-server.cert
MINIO_KMS_KES_KEY_NAME=minio-backend-default-key
备注
API 密钥是与 KES 服务器进行身份验证的首选方式,因为它提供了一个简化、安全的 KES 服务器身份验证过程。
或者,指定
MINIO_KMS_KES_KEY_FILE
和MINIO_KMS_KES_CERT_FILE
而不是MINIO_KMS_KES_API_KEY
。API 密钥与基于证书的身份验证相互排斥。 指定 API 密钥变量 或 密钥文件和证书文件变量。
本网站的文档使用 API 密钥。
MINIO_KMS_KES_CERT_FILE=C:\minio-kes-vault\certs\minio-kes.cert
MINIO_KMS_KES_KEY_FILE=C:\minio-kes-vault\certs\minio-kes.key
MinIO 使用 MINIO_KMS_KES_KEY_NAME
环境变量来执行以下密码操作:
minio-kes
证书 仅 允许 MinIO 部署与 KES 服务器之间进行 mTLS(基于证书的 mutual TLS)通信。
它们(minio-kes 证书)不会为其他客户端连接到 MinIO 的其他通信启用 TLS。
2) 启动 MinIO 服务器
备注
您 必须 在启动 MinIO 之前启动 KES。 MinIO 部署需要在启动过程中访问 KES。
启动 MinIO 服务器
在终端或壳盘中运行以下命令以将 MinIO 服务器作为前台进程启动。
export MINIO_CONFIG_ENV_FILE=C:\minio-kes-vault\config\config\minio
C:\minio.exe server --console-address :9090
3) 生成新的加密密钥
您可以使用MinIO控制台或MinIO mc
CLI来使用生成的密钥启用默认SSE-KMS。
通过在您喜欢的浏览器中访问 http://127.0.0.1:9001,然后使用MinIO服务器中指定的root凭据登录,来打开MinIO控制台。
如果您在部署MinIO时使用了不同的控制台监听端口,请将 9001
替换为那个端口值。
登录后,创建一个新的存储桶并按您的喜好命名。 选择齿轮 图标以打开管理视图。
选择 加密 字段旁边的铅笔 图标,打开模态框以配置存储桶默认的SSE方案。
选择 SSE-KMS ,然后输入在上一步中创建的密钥的名称。
保存更改后,请尝试将文件上传到存储桶中。 在对象浏览器中查看该文件时,请注意侧边栏的元数据中包含了SSE加密方案以及用于加密该对象的密钥信息。 这表明对象已成功加密。
以下命令:
创建一个新的MinIO部署的 alias。
创建一个新的存储加密数据的桶。
在该桶上启用SSE-KMS加密。
mc alias set local http://127.0.0.1:9000 ROOTUSER ROOTPASSWORD
mc mb local/encryptedbucket
mc encrypt set SSE-KMS encrypted-bucket-key ALIAS/encryptedbucket
使用 mc cp
或任何带有 PutObject
函数的S3兼容SDK将文件写入桶中。
然后,您可以运行 mc stat
命令以确认相关的加密元数据。
4) 为存储桶启用 SSE-KMS
您可以使用MinIO控制台或MinIO mc
CLI来使用生成的密钥启用默认SSE-KMS。
通过在您喜欢的浏览器中访问 http://127.0.0.1:9001,然后使用MinIO服务器中指定的root凭据登录,来打开MinIO控制台。
如果您在部署MinIO时使用了不同的控制台监听端口,请将 9001
替换为那个端口值。
登录后,创建一个新的存储桶并按您的喜好命名。 选择齿轮 图标以打开管理视图。
选择 加密 字段旁边的铅笔 图标,打开模态框以配置存储桶默认的SSE方案。
选择 SSE-KMS ,然后输入在上一步中创建的密钥的名称。
保存更改后,请尝试将文件上传到存储桶中。 在对象浏览器中查看该文件时,请注意侧边栏的元数据中包含了SSE加密方案以及用于加密该对象的密钥信息。 这表明对象已成功加密。
以下命令:
创建一个新的MinIO部署的 alias。
创建一个新的存储加密数据的桶。
在该桶上启用SSE-KMS加密。
mc alias set local http://127.0.0.1:9000 ROOTUSER ROOTPASSWORD
mc mb local/encryptedbucket
mc encrypt set SSE-KMS encrypted-bucket-key ALIAS/encryptedbucket
使用 mc cp
或任何带有 PutObject
函数的S3兼容SDK将文件写入桶中。
然后,您可以运行 mc stat
命令以确认相关的加密元数据。