MinIO 密钥加密服务
本网站提供有关信息MinIO’s 密钥加密服务 (KES) 项目。
文档内容包括:
- 架构与配置指南
- 最佳实践
- 通用文档
MinIO 已于即日起弃用并归档 Community KES 项目Release 2025-03-12T09-35-18Z.
MinIO Enterprise 用户应计划迁移至 AIStor KES 以获取持续的维护更新。 如需进一步指导,请在 SUBNET 中提交问题。
MinIO 还提供了AIStor Key Manager作为迁移路径。
本文档仅作为历史参考资料提供。
为什么选择 KES
KES 是一个无状态分布式密钥管理系统,适用于高性能应用场景。 KES 充当了在容器中运行的现代应用程序与Kubernetes和集中式密钥管理服务(KMS)。 默认情况下,我们将KES设计为简单、可扩展且安全。 与其他服务相比,KES具有简化的配置选项,不需要深入理解安全密钥管理或密码学原理。
如果您是 KES 的新用户,可以从以下页面开始:
- 立即开始使用入门指南
- 查看设置选项配置指南
- 了解 KES 的工作原理,请访问我们的Concepts page.
KES访问控制
KES使用双向TLS认证(mTLS)来对向KES服务器发出请求的客户端执行认证和授权。
认证
客户端和服务器都向其对等方出示其x.509证书和相应的私钥。 只有当客户端证书有效且通过认证时,服务器才会接受连接:
-
一个"有效"证书是指格式正确且当前有效(即未过期)的证书。
使用 mTLS 进行身份验证还需要以下条件扩展密钥用法客户端和服务器的扩展。
- 客户端认证 (
extendedKeyUsage = clientAuth) - 服务器认证 (
extendedKeyUsage = serverAuth)
- 客户端认证 (
-
一个"真实"的证书由受信任的证书颁发机构(CA)签发。 客户端和服务器必须将对方证书的CA包含在其本地系统信任存储中。
您可以使用以下命令启动 KES 服务器:kes server --auth在测试或早期开发期间使用不受信任或自签名证书执行mTLS的选项。
MinIO强烈建议在生产环境中仅允许使用受信任的证书。
授权
KES 使用基于策略的访问控制(PBAC)来确定给定客户端有权执行哪些操作。 每个策略包含一个或多个身份标识,其中每个身份标识对应一个 x.509 证书的 SHA-256 哈希值。 只有在满足以下条件时,服务器才允许客户端执行所请求的操作:
- KES服务器上的策略包含客户端身份。
- 该策略明确允许所请求的操作。
如果KES服务器上不存在此类策略or如果策略未明确允许所请求的操作,KES服务器将拒绝客户端的请求。
KES Policies
KES采用基于策略的访问控制(PBAC),其中策略描述了经过身份验证的客户端可以执行的操作。
以下YAMLdocument provides an example of the :kesconf:policyKES服务器配置文档的章节。
策略minio-sse包含支持 MinIO 服务端加密的相应 :API 端点:
policy:
minio-sse:
paths:
- /v1/key/create/*
- /v1/key/generate/*
- /v1/key/decrypt/*
- /v1/key/delete/*
identities:
- <SHA-256 HASH>
-
数组中的每个元素
policy.policyname.pathsarray 表示一个API endpoint策略授予访问权限的。 -
数组中的每个元素
policy.policyname.identitiesarray 表示客户端提供的 x.509 证书的 SHA-256 哈希值。使用
kes identity of计算客户端 X.509 证书标识哈希的命令
策略与身份具有一对多关系,一个策略可以包含多个身份。然而一个给定的身份在同一时间最多只能关联一个策略。
KES服务器提供了两种配置策略的方法:
-
The
policyKES 的 section配置文件列出 KES 服务器的持久化策略。 -
The
kes policycommand 支持创建短暂的KES 服务器的策略。 该kes identity命令支持短暂的修改与 KES 服务器策略关联的身份信息。使用任一方式创建或修改的策略
kes policyorkes identity重启 KES 服务器后消失。
每个 KES 服务器都有自己的配置文件,从中获取所有持久化策略。 在分布式 KES 部署中,每个服务器基于其配置文件拥有独立且不同的策略-身份集合。 这可能导致一个身份根据客户端连接的 KES 服务器不同而关联到不同的策略。
在允许KES服务器包含不同策略时需谨慎,因为这可能导致服务器间客户端加密行为不一致。 MinIO强烈建议在分布式KES部署中同步配置文件变更。
指南
教程
支持的 KMS 目标
- AWS Secrets Manager
- Azure KeyVault
- Entrust KeyControl
- Fortanix SDKMS
- Google Cloud Secret Manager
- Hashicorp Vault
- 本地文件系统
- Thales CipherTrust Manager(前身为 Gemalto KeySecure)