MinIO 密钥加密服务

本网站提供有关 MinIO 的密钥加密服务 (KES) 项目的信息。

文档包括

  • 架构和配置指南
  • 最佳实践
  • 一般文档

为什么选择 KES

KES 是一种无状态且分布式的密钥管理系统,适用于高性能应用程序。KES 充当在 Kubernetes 上作为容器运行的现代应用程序与集中式密钥管理服务 (KMS) 之间的桥梁。默认情况下,我们设计 KES 使其简单、可扩展且安全。与其他服务相比,KES 提供了简化的配置选项,无需深入了解安全密钥管理或密码学原理。

如果您是 KES 的新手,您可能希望从以下页面开始

KES 访问控制

KES 使用双向 TLS 身份验证 (mTLS) 来执行对向 KES 服务器发出请求的客户端进行身份验证和授权。

身份验证

客户端和服务器都向其对等方展示其 x.509 证书和相应的私钥。如果客户端证书有效且经过身份验证,服务器才会接受连接

  • “有效”证书是指格式正确且当前有效(即未过期)。

    使用 mTLS 进行身份验证还需要以下 扩展密钥用法 扩展名,用于客户端和服务器。

    • 客户端身份验证 (extendedKeyUsage = clientAuth)
    • 服务器身份验证 (extendedKeyUsage = serverAuth)
  • “经过身份验证”的证书由受信任的证书颁发机构 (CA) 颁发。客户端和服务器都必须在其本地系统信任存储中包含对等方证书 CA。

您可以在测试或早期开发期间使用 kes server --auth 选项启动 KES 服务器,以执行使用不受信任或自签名证书的 mTLS。

MinIO 强烈建议在生产环境中仅允许使用受信任的证书。

授权

KES 使用基于策略的访问控制 (PBAC) 来确定给定客户端有权执行的操作。每个策略包含一个或多个身份,每个身份对应于 x.509 证书的 SHA-256 哈希值。服务器仅在以下情况为真时才允许客户端执行请求的操作

  • KES 服务器上的策略包含客户端身份。
  • 策略明确允许请求的操作。

如果 KES 服务器上不存在此类策略策略没有明确允许请求的操作,则 KES 服务器会拒绝客户端的请求。

KES 策略

KES 使用基于策略的访问控制 (PBAC),其中策略描述了已验证客户端可以执行的操作。

以下 YAML 文档提供了一个 :kesconf:policy 部分的示例,该部分来自 KES 服务器配置文档。策略 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.paths 数组中的每个元素代表策略授予访问权限的 API 端点

  • policy.policyname.identities 数组中的每个元素代表客户端提供的 x.509 证书的 SHA-256 哈希值。

    使用 kes identity of 命令计算客户端 x.509 证书的身份哈希值。

策略和身份之间存在一对多关系,其中一个策略可以包含多个身份。但是,给定的身份一次最多只能与一个策略关联。

KES 服务器提供了两种配置策略的方法

  • KES 配置文件policy 部分列出了 KES 服务器的持久策略。

  • kes policy 命令支持为 KES 服务器创建短暂策略。 kes identity 命令支持短暂修改与 KES 服务器上策略关联的身份。

    使用 kes policykes identity 创建或修改的策略在重新启动 KES 服务器后会消失。

每个 KES 服务器都有自己的配置文件,它从中推导出所有持久策略。在分布式 KES 部署中,每个服务器都有自己的独立且不同的策略-身份集,该集基于其配置文件。这可能允许一个身份根据客户端连接的 KES 服务器的不同而关联到不同的策略。

在允许 KES 服务器包含不同的策略时要谨慎,因为这可能会导致服务器之间客户端加密行为不一致。MinIO 强烈建议在分布式 KES 部署中同步对配置文件的更改。


指南

教程

支持的 KMS 目标

外部参考

API 文档

MinIO 博客文章