使用 KES 的服务器端对象加密
本程序提供了部署配置使用KES并启用 服务器端加密 的MinIO的指导。 有关运行KES的说明,请参阅 KES文档。
作为此过程的一部分,您将:
创建一个新的 EK 以用于 SSE。
使用 KES 创建或修改支持 SSE 的 MinIO 部署。 对于生产环境的MinIO部署,请参考 部署分布式MinIO 教程。
配置自动桶默认的 SSE-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 部署,您可以按照本过程中的说明修改现有的环境变量配置文件,并重新启动部署。
操作步骤
此过程提供了使用您选择的 支持的KMS解决方案 在生产环境中配置和服务器端加密的说明。 具体而言,本操作指南假定以下情况:
现有的生产级 KMS 目标
连接到 KMS 目标的一台或多台 KES 服务器
一个或多个用于新的或现有 MinIO 部署的主机
先决条件
根据您选择的 支持的KMS目标 配置,您可能需要将 kes-server.cert
作为可信的证书权威(CA)传递。
请参考客户端文档,以获取关于信任第三方CA的说明。
1) 为MinIO生成一个KES API密钥
从 KES 版本 2023-02-15T14-54-37Z 开始,您可以生成一个 API 密钥,用于对 KES 服务器进行身份验证。
使用 kes identity new 命令为 MinIO 服务器生成一个新的 API 密钥:
kes identity new
输出包括用于 MinIO 的 API 密钥和用于 KES 策略配置 的 Identity hash。
2) 创建 MinIO 配置
配置MinIO环境文件
为目标部署中的所有主机创建或修改MinIO服务器环境文件,包括以下环境变量:
在每个MinIO主机的MinIO环境变量配置文件中添加以下行。 有关基本MinIO环境变量配置文件的更详细说明,请参阅 单节点单硬盘部署MinIO 、 单节点多硬盘部署MinIO 或 多节点多硬盘部署 教程。
# 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=/opt/kes/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
密钥:
MinIO 默认期望此文件位于 /etc/default/minio
。
如果您修改了部署以使用不同位置的环境文件,请修改该位置的文件。
3) 启动 MinIO
KES Operations Requires Unsealed Vault
根据您选择的KMS解决方案,您可能需要解封密钥实例,以允许正常的加密操作,包括密钥创建或检索。 KES 需要一个未封密的密钥目标来执行其操作。
请参阅您选择的 KMS 解决方案的 文档,以获取有关是否需要对实例进行封印和解封以进行操作的信息。
您 必须 在启动 MinIO 之前启动 KES。 MinIO 部署在启动过程中需要访问 KES。
此步骤使用 systemd
来启动和管理 MinIO 服务器进程。
启动 MinIO 服务器
对于新的MinIO部署, 在每个MinIO主机上运行以下命令以启动服务:
systemctl start minio
对于现有的MinIO部署,请在每台MinIO主机上运行以下命令来重启服务:
systemctl reload minio
systemctl restart minio
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加密方案以及用于加密该对象的密钥信息。 这表明对象已成功加密。