配置密钥管理
API7 企业版支持密钥提供方,可避免硬编码 API Key(API 密钥)、SSL 证书和插件凭证等敏感数据。通过 $secret:// 引用语法,可以将外部系统中的密钥注入网关资源,同时将密钥值保留在外部系统中。
密钥提供方通过 Admin API 创建和管理。ADC 不管理密钥提供方,但可以在支持的资源中使用 $secret://... 引用现有密钥提供方中的密钥。
前置条件
- API7 企业版实例正在运行。
- 已创建网关组且网关实例正在运行。
- 按照从控制台获取令牌中的步骤准备一个令牌。
- 如果要测试网关完整的密钥解析流程,需要可用的密钥后端。
配置 HashiCorp Vault 密钥提供方
HashiCorp Vault 可用于管理密钥。可以在 API7 企业版中将其配置为密钥提供方。
启动 Vault 进行评估
如果已有 Vault 和供 API7 企业版使用的受限令牌,可跳过本节。否则,请启动一个开发模式的 Vault 容器,并将 KV v1 引擎挂载到 kv/:
docker run -d --cap-add=IPC_LOCK \
-e 'VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200' \
-e 'VAULT_ADDR=http://127.0.0.1:8200' \
-e 'VAULT_DEV_ROOT_TOKEN_ID=api7-quickstart-vault-token' \
-e 'VAULT_TOKEN=api7-quickstart-vault-token' \
--name api7-quickstart-vault \
-p 8200:8200 vault:1.13.0
docker exec api7-quickstart-vault vault secrets enable -path=kv -version=1 kv
如果要改用 KV v2,请按以下方式调整上述步骤(一个挂载路径只能承载一个引擎,因此 v1 和 v2 不能共存于 kv/):
- 使用
vault secrets enable -path=kv kv-v2替代-version=1 kv命令启用引擎。 - 策略路径使用
kv/data/api7/*,因为 KV v2 会将密钥存储在<mount>/data/<path>下。 - 注册密钥提供方时设置
"kv_version": "kv-v2"。
创建网关策略和令牌
授予网关读取 kv/api7/* 的权限并创建受该策略限制的令牌:
docker exec api7-quickstart-vault /bin/sh -c "echo '
path \"kv/api7/*\" {
capabilities = [\"read\"]
}
' > /etc/api7-policy.hcl"
docker exec api7-quickstart-vault vault policy write api7-policy /etc/api7-policy.hcl
docker exec api7-quickstart-vault vault token create -policy="api7-policy"
token create 命令会输出一个 hvs.... 令牌。请保存该值,并在下一步注册密钥提供方时使用。