文档

使用 KES 进行服务器端对象加密

此过程假设一台本地主机同时运行 MinIO 和 KES 进程。有关运行 KES 的说明,请参阅KES 文档

注意

对于生产编排环境,请使用 MinIO Kubernetes 运算符部署启用了 SSE 并配置为与您的 KMS 一起使用的租户。

对于生产裸机环境,请参阅面向 Linux 的 MinIO 文档,以获取有关将 MinIO 与 KES 和您的 KMS 配合使用的教程。

在此过程中,您将

  1. 创建一个新的 EK 以用于 SSE

  2. 单节点单驱动器模式部署 MinIO 服务器,并将其配置为使用 KES 容器以支持 SSE

  3. 配置自动存储桶默认SSE-KMS

重要

在 MinIO 部署上启用 SSE 会自动使用默认加密密钥加密该部署的后端数据。

MinIO *需要* 访问 KES 和外部 KMS 才能解密后端并正常启动。KMS **必须**维护并提供对MINIO_KMS_KES_KEY_NAME的访问权限。您以后无法禁用 KES 或“撤消” SSE 配置。

先决条件

确保 KES 能够访问受支持的 KMS 目标

此过程假设已安装并连接到受支持的 KMS 安装的 KES,两者均可从本地主机访问。请参阅您受支持的 KMS 目标的安装说明,以部署 KES 并将其连接到 KMS 解决方案。

KES 操作需要未密封的目标

某些受支持的 KMS 目标允许您密封或解除密封保管库实例。如果配置的 KMS 服务已密封,则 KES 会返回错误。

如果您重新启动或以其他方式密封保管库实例,则 KES 无法对保管库执行任何加密操作。您必须解除密封保管库以确保正常操作。

请参阅您选择的 KMS 解决方案的文档,以获取有关是否可能需要解除密封的更多信息。

请参阅您选择的受支持 KMSKES 文档中的配置说明

部署或确保能够访问 MinIO 部署

此过程提供了有关修改 MinIO 部署的启动环境变量以通过 KES 和 KMS 目标启用 SSE 的说明。

有关新的生产部署的说明,请参阅多节点多驱动器(分布式)教程。有关新的本地或评估部署的说明,请参阅单节点单驱动器教程。

在创建部署的环境文件时,请暂停并切换回本教程,以包含支持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:多节点多驱动器中的教程。

# Add these environment variables to the existing environment file

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密钥执行以下加密操作

  • 加密 MinIO 后端(IAM、配置等)。

  • 如果请求未包含特定的EK,则使用SSE-KMS加密对象。

  • 使用SSE-S3加密对象。

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 要求EK在使用该密钥执行SSE操作*之前*存在于 KMS 上。使用kes key create*或*mc admin kms key create添加一个新的EK以用于SSE

以下命令使用mc admin kms key create命令添加一个新的外部密钥 (EK),该密钥存储在 KMS 服务器上,用于加密 MinIO 后端。

mc admin kms key create ALIAS KEYNAME

5) 为存储桶启用 SSE-KMS

您可以使用 MinIO 控制台或 MinIO mc CLI 使用生成的密钥启用存储桶默认 SSE-KMS

通过在您喜欢的浏览器中导航到http://127.0.0.1:9001并使用指定给 MinIO 服务器的根凭据登录来打开 MinIO 控制台。如果您使用不同的控制台侦听端口部署了 MinIO,请将9001替换为该端口值。

登录后,创建一个新的存储桶并将其命名为您喜欢的名称。选择齿轮图标以打开管理视图。

选择铅笔图标,位于加密字段旁边,以打开配置存储桶默认 SSE 方案的模态。

选择SSE-KMS,然后输入上一步中创建的密钥的名称。

保存更改后,尝试将文件上传到存储桶。在对象浏览器中查看该文件时,请注意侧边栏元数据包含 SSE 加密方案以及用于加密该对象密钥的信息。这表示该对象的加密状态成功。

以下命令

  • 为 MinIO 部署创建一个新的别名

  • 创建一个新的存储桶用于存储加密数据

  • 在该存储桶上启用 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以确认关联的加密元数据。