引用 HashiCorp Vault 中的密钥
HashiCorp Vault 是一个集中式平台,用于管理不同环境和应用程序中的密钥和加密。它提供了一个统一的密钥管理平台,用于存储和访问 API 密钥、密码、证书等。
本教程演示了如何将 API7 企业版与 HashiCorp Vault 集成,使你能够安全地存储和引用 Vault 中的消费者凭据和插件配置。
前提条件
- 安装 API7 企业版。
- 在你的网关组中至少有一个网关实例。
- 安装 Docker。
- 安装 cURL 以向服务发送请求进行验证。
- 安装 ZIP 以解压缩 官方分发的压缩文件 中的 Vault 二进制文件。
配置 Vault 服务器
在 Docker 中以开发模式启动一个名为 api7-quickstart-vault
的 Vault 实例,令牌为 api7-quickstart-vault-token
。暴露的端口映射到主机上的 8200
:
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
选择 kv
作为 API7 网关的 SSL 证书存储路径:
API7 网关需要访问 Vault 和检索密钥的权限。你应该创建一个 HashiCorp 配置语言 (HCL) 策略文件来为 API7 网关生成 Vault 访问令牌。在 Vault 实例中创建一个名为 api7-policy.hcl
的 Vault 策略文件,以授予 API7 网关对路径 secret/
的读取权限。你可以将密钥放在路径 secret/
下以允许 API7 网关读取它们:
docker exec api7-quickstart-vault /bin/sh -c "echo '
path \"secret/data/*\" {
capabilities = [\"read\"]
}
' > /etc/api7-policy.hcl"
将策略文件应用于 Vault 实例:
docker exec api7-quickstart-vault vault policy write api7-policy /etc/api7-policy.hcl
接下来,生成附加到新定义的策略的访问令牌,以供 API7 网关访问 Vault:
docker exec api7-quickstart-vault vault token create -policy="api7-policy"
每次执行上述命令都会生成不同的令牌。如果成功,输出应类似于以下内容:
Key Value
--- -----
token hvs.CAESIHUznrV4wgcifUia0FROd6iprK7NjipAiHBYwiZDQP9TGh4KHGh2cy5ndHc5dzBPbXd5Y1pzblZXd2ZuQXA3ZHI
token_accessor YY4iCj2lICDNd50ZJDsBjvZK
token_duration 768h
token_renewable true
token_policies ["api7-policy" "default"]
identity_policies []
policies ["api7-policy" "default"]