在 Kubernetes Secret 中引用密钥
Kubernetes Secrets 是用于存储密码、API 密钥和令牌等敏感数据的对象。这些密钥可以作为环境变量暴露给 Pod,或作为 Secret 提供商集成以增强 API 安全性。
本教程演示如何将 API7 企业版与 Kubernetes 集成作为Secret 提供商,使您能够安全地存储和引用消费者凭据及插件配置。
前提条件
- 安装 API7 企业版
- 网关组中至少有一个网关实例
- 准备用于存储密钥的 Kubernetes 集群
- 安装 cURL 用于服务验证
在网关组中新增 Secret 提供商
- 控制台
- ADC
- Ingress 控制器
- 从侧边栏选择网关组的 Secret 提供商,点击 新增 Secret 提供商。
- 在对话框中:
- Secret 提供商 ID 输入
my-kubernetes-secret。 - 密钥管理器 选择
Kubernetes。 - 填写 API 服务器地址 如
http://127.0.0.1。 - 填写 Token。
- 点击新增。
- Secret 提供商 ID 输入
- 复制 密钥变量 供后续使用,所有密钥引用都基于此生成,例如:
$secret://kubernetes/my-kubernetes-secret/$namespace/$secret_name/$key。
即将推出。
即将推出
为 SSL 证书引用密钥
SSL 证书对象中的敏感字段 certificate 和 private key 可以安全地存储在外部密钥管理器 (如 HashiCorp Vault、 AWS Secret Manager 或 Kubernetes Secret) 中,并在 API7 网关中引用。
存储密钥
创建 ssl-secret.yaml 文件:
apiVersion: v1
kind: Secret
metadata:
namespace: default
name: ssl
type: kubernetes.io/tls
data: # 必须使用 base64 编码值
tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWJzQ0FnMytNQTBHQ1NxR1NJYjNE
UUVCQlFVQU1JR2JNUXN3Q1FZRFZRUUdFd0pLVURFT01Bd0cKQTFVRUNCTUZWRzlyZVc4eEVEQU9C
Z05WQkFjVEIwTm9kVzh0YTNVeEVUQVBCZ05WQkFvVENFWnlZVzVyTkVSRQpNUmd3RmdZRFZRUUxF
dzlYWldKRFpYSjBJRk4xY0hCdmNuUXhHREFXQmdOVkJBTVREMFp5WVc1ck5FUkVJRmRsCllpQkRR
VEVqTUNFR0NTcUdTSWIzRFFFSkFSWVVjM1Z3Y0c5eWRFQm1jbUZ1YXpSa1pDNWpiMjB3SGhjTk1U
TXcKTVRFeE1EUTFNVE01V2hjTk1UZ3dNVEV3TURRMU1UTTVXakJMTVFzd0NRWURWUVFHREFKS1VE
RVBNQTBHQTFVRQpDQXdHWEZSdmEzbHZNUkV3RHdZRFZRUUtEQWhHY21GdWF6UkVSREVZTUJZR0Ex
VUVBd3dQZDNkM0xtVjRZVzF3CmJHVXVZMjl0TUlHYU1BMEdDU3FHU0liM0RRRUJBUVVBQTRHSUFE
Q0JoQUo5WThFaUhmeHhNL25PbjJTbkkxWHgKRHdPdEJEVDFKRjBReTliMVlKanV2YjdjaTEwZjVN
Vm1UQllqMUZTVWZNOU1vejJDVVFZdW4yRFljV29IcFA4ZQpqSG1BUFVrNVd5cDJRN1ArMjh1bklI
QkphVGZlQ09PekZSUFY2MEdTWWUzNmFScG04L3dVVm16eGFLOGtCOWVaCmhPN3F1TjdtSWQxL2pW
cTNKODhDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQmdRQU1meTQzeE15OHh3QTUKVjF2T2NS
OEtyNWNaSXdtbFhCUU8xeFEzazlxSGtyNFlUY1JxTVQ5WjVKTm1rWHYxK2VSaGcwTi9WMW5NUTRZ
RgpnWXcxbnlESnBnOTduZUV4VzQyeXVlMFlHSDYyV1hYUUhyOVNVREgrRlowVnQvRGZsdklVTWRj
UUFEZjM4aU9zCjlQbG1kb3YrcE0vNCs5a1h5aDhSUEkzZXZ6OS9NQT09Ci0tLS0tRU5EIENFUlRJ
RklDQVRFLS0tLS0K
tls.key: RXhhbXBsZSBkYXRhIGZvciB0aGUgVExTIGNydCBmaWVsZA==
应用到 Kubernetes 集群:
kubectl apply -f ssl-secret.yaml
新增 SSL 证书
-
从侧边栏选择网关组的 证书,进入 SSL 证书 标签页。
-
点击 新增 SSL 证书。
-
在对话框中:
- 名称 输入
测试 SSL 证书。 - 证书 输入
$secret://kubernetes/my-kubernetes-secret/default/ssl/tls.crt。 - 私钥 输入
$secret://kubernetes/my-kubernetes-secret/default/ssl/tls.key。 - 点击新增。
- 名称 输入
-
完整使用和验证 SSL 证书,参见 配置客户端与 API7 网关间的 mTLS
为消费者凭据引用密钥
以下消费者凭据中的敏感字段可存储在外部密钥管理器中:
- 密钥认证凭据中的
key - 基础认证凭据中的
password - JWT 认证凭据中的
secret、public key - HMAC 认证凭据中的
secret key