KES 是一个云原生分布式密钥管理和加密服务器,旨在为现代应用程序提供大规模安全保障。
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 文件。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429