minio/kesKES 是一个云原生分布式密钥管理和加密服务器,旨在为现代应用程序提供大规模安全保障。
KES 是一个可水平扩展的分布式密钥管理服务器。它既可以作为边缘服务器运行在应用附近,减少对中央密钥管理系统(KMS)的延迟和负载,也可以作为中央密钥管理服务器。边缘服务器是靠近应用的独立无状态节点,可以自动扩缩容。中央 KES 服务器或集群是安全存储和管理加密密钥与机密的有状态系统。
KES 服务器和 CLI 可通过单一二进制文件、容器镜像获取,或从源代码构建。
shbrew install minio/stable/kes
通过以下命令拉取最新版本:
docker pull minio/kes
| 操作系统 | 架构 | 二进制文件 |
|---|---|---|
| Linux | amd64 | linux-amd64 |
| Linux | arm64 | linux-arm64 |
| Linux | ppc64le | linux-ppc64le |
| Linux | s390x | linux-s390x |
| Apple M1 | arm64 | darwin-arm64 |
| Apple | amd64 | darwin-amd64 |
| Windows | amd64 | windows-amd64 |
你也可以使用 minisign 验证二进制文件,方法是下载对应的 .minisig 签名文件,然后运行:
minisign -Vm kes-<操作系统>-<架构> -P RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav
通过 Go 工具链下载并安装二进制文件:
shgo install github.com/minio/kes/cmd/kes@latest
我们在 [***] 运行了一个公共 KES 实例供你实验。你可以通过 KES CLI 或 cURL 与该实例交互。或者,你也可以在不到五分钟内搭建自己的 KES 服务器。
将 KES CLI 指向 [***] 的 KES 服务器,并使用以下 API 密钥:
shexport KES_SERVER=[***] export KES_API_KEY=kes:v1:AD9E7FSYWrMD+VjhI6q545cYT9YOyFxZb7UnjEepYDRc
接下来,创建一个新的根加密密钥(例如 my-key):
kes key create my-key
注意:如果密钥已存在,创建操作将失败并显示
key already exist。
现在,你可以使用该密钥派生新的数据加密密钥(DEK):
shkes key dek my-key
DEK 的明文部分将被应用程序用于加密数据,密文部分将与加密数据一起存储,以便将来解密。
如需快速启动设置,请查看我们的 文件系统密钥库指南。更多参考请查看我们的密钥库 指南列表。
首先,你需要下载私钥和证书,以管理员身份认证到 KES 服务器:
shcurl -sSL --tlsv1.2 \ -O '[***] \ -O '[***]
接下来,创建一个新的根加密密钥(例如 my-key):
shcurl -sSL --tlsv1.3 \ --key root.key \ --cert root.cert \ -X POST '[***]
注意:如果密钥已存在,创建操作将失败并显示
key already exist。
现在,你可以使用该密钥派生新的数据加密密钥(DEK):
shcurl -sSL --tlsv1.3 \ --key root.key \ --cert root.cert \ --data '{}' \ -X POST '[***]
DEK 的明文部分将被应用程序用于加密数据,密文部分将与加密数据一起存储,以便将来解密。
完整的 REST API 端点列表请参考 KES API 概述。
如需了解更多关于 KES 的信息,请查看我们的 文档:
insufficient permissions 错误这意味着你使用的 KES 身份无权执行特定操作(如创建或列出密钥)。
KES 管理员身份 可以执行任何通用 API 操作。使用管理员身份执行通用 API 操作时,不应出现 not authorized: insufficient permissions 错误。
除管理员身份外,KES 支持基于策略的访问控制模型。以下两种情况会导致 not authorized: insufficient permissions 错误:
使用未分配任何策略的 KES 身份:KES 拒绝未知身份发出的请求。
解决方法是为该身份分配策略,参考 示例。
使用已分配策略但策略不允许甚至拒绝 API 调用的 KES 身份:
这种情况下,需在分配给该身份的策略中授予 API 权限。参考 API 列表。例如,创建密钥时应允许 /v1/key/create/<key-name>,其中 <key-name> 可以是特定密钥名(如 my-key-1)或允许任意密钥名的模式(如 my-key*)。
注意:拒绝规则优先于允许规则。因此,需确保任何拒绝模式不会意外匹配你的 API 请求。
KES 的使用受 AGPLv3 许可证约束,详情参见 LICENSE 文件。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务