使用 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
在开始这些步骤之前,创建以下文件夹:
mkdir -P ~/minio-kes-vault/certs
mkdir -P ~/minio-kes-vault/config
mkdir -P ~/minio-kes-vault/minio
先决条件
根据您 选择的 KMS 目标 配置,您可能需要将 kes-server.cert 作为可信的证书权威(CA)传递。 请参考客户端文档中有关信任第三方 CA 的说明。
1) 创建 MinIO 配置
创建MinIO环境文件
使用您喜欢的文本编辑器创建环境文件。
以下示例使用 nano
文本编辑器:
nano ~/minio-kes-vault/config/minio
在每个MinIO主机的MinIO环境变量配置文件中添加以下行。 有关基本MinIO环境变量配置文件的更详细说明,请参阅 单节点单硬盘部署MinIO 、 单节点多硬盘部署MinIO 或 minio-mnmd 教程。
# Add these environment variables to the existing 环变变量配置文件
MINIO_KMS_KES_ENDPOINT=https://HOSTNAME:7373
MINIO_KMS_KES_API_KEY="kes:v1:ACTpAsNoaGf2Ow9o5gU8OmcaG6Af/VcZ1Mt7ysuKoBjv"
# Allows validation of the KES Server Certificate (Self-Signed or Third-Party CA)
# Change this path to the location of the KES CA Path
MINIO_KMS_KES_CAPATH=~/minio-kes-vault/certs/kes-server.cert
# Sets the default KMS key for the backend and SSE-KMS/SSE-S3 Operations)
MINIO_KMS_KES_KEY_NAME=minio-backend-default-key
将 HOSTNAME
替换为KES服务器的IP地址或主机名。
如果MinIO服务器主机无法解析或无法访问指定的 HOSTNAME
,则部署可能会返回错误或无法启动。
如果使用单个KES服务器主机,请指定该主机的IP或主机名。
如果使用多个KES服务器主机,请指定每个主机的IP或主机名,用逗号分隔。
MinIO在以下加密操作中使用 MINIO_KMS_KES_KEY_NAME
密钥:
3) 启动 MinIO 服务器
备注
您 必须 在启动 MinIO 之前启动 KES。 MinIO 部署在启动过程中需要访问 KES。
在终端或shell中运行以下命令以将MinIO服务器作为前台进程启动。
export MINIO_CONFIG_ENV_FILE=~/minio-kes-vault/config/minio
minio server --console-address :9001
前台进程依赖于它们运行的 shell 或终端。 退出或终止 shell/终端实例也会结束附属的进程。 要在后台运行进程,请参考您的操作系统的最佳实践。
4) 生成一个新的加密密钥
MinIO 要求在执行使用该密钥的 SSE 操作 之前,EK 必须存在于 KMS 上。
使用 kes key create
或 mc admin kms key create
添加新的 EK ,以便用于 SSE 。
以下命令使用 mc admin kms key create
命令在 KMS 服务器上添加一个新外部密钥(EK),用于加密 MinIO 后端。
mc admin kms key create ALIAS KEYNAME
5) 为存储桶启用 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
命令以确认相关的加密元数据。