安全凭证管理
保护 SSL 证书、API Key(API 密钥)和密码等敏感信息,是重要的安全与合规要求。API7 网关提供可靠的工具,既可以在 网关内部安全管理这些凭证,也可以与外部密钥管理系统集成。
前置条件
- 按照从控制台获取令牌中的步骤获取令牌。
能力
- 安全 SSL 管理:集中存储并自动续订 SSL 证书。
- 静态凭证加密:敏感值在存入网关配置数据库前会进行加密。
- 密钥管理器集成:与 HashiCorp Vault、AWS Secrets Manager 和 Azure Key Vault 集成,集中控制密钥。
- 环境变量支持:部署期间以环境变量形式注入密钥。
SSL 证书管理
API7 网关允许通过控制面存储和管理 SSL 证书。可以将证书与特定域名(SNI)关联,为路由启用 HTTPS。
- Admin API
- ADC
curl -k "https://localhost:7443/apisix/admin/ssls/example-com-ssl?gateway_group_id={gateway_group_id}" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"snis": ["example.com"],
"cert": "$CERTIFICATE_CONTENT",
"key": "$PRIVATE_KEY_CONTENT"
}'
将 {gateway_group_id} 替换为控制台 Gateway Groups 页面中的网关组 ID。快速入门创建的网关组使用 default。将 $CERTIFICATE_CONTENT 和 $PRIVATE_KEY_CONTENT 替换为 PEM 编码的证书和私钥,并将换行符转义为 \n。
adc.yaml
ssls:
- snis:
- example.com
certificates:
- certificate: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
key: |
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
adc sync -f adc.yaml
外部密钥管理器
要实现企业级密钥管理,请使用外部密钥管理器。API7 网关可以在运行时直接从这些系统获取敏感值。
集成 HashiCorp Vault
API7 网关可以在运行时从 HashiCorp Vault 获取敏感值。端到端流程如下:
- 通过 Admin API 在网关组中创建 Vault 密钥提供商。有关请求结构、必填字段(
uri、prefix、token)、可选字段(kv_version、authentication_method),以及部署 Vault 实例和限制令牌权限范围的步骤,请参阅配置 HashiCorp Vault 密钥提 供商。 - 使用
$secret://{provider_type}/{provider_id}/{secret_key}URI 格式,在资源或插件配置中引用密钥。
# 在你的插件配置中
plugins:
key-auth:
key: "$secret://vault/my-vault/api-key-path/my-key"
静态凭证加密
API7 控制面会在敏感字段(例如插件的 password 或 key)存入配置数据库(PostgreSQL)前自动加密。即使数据库遭到入侵,实际凭证仍会受到保护。
后续步骤
- 控制面与数据面之间的双向 TLS,保护控制面与数据面之间的通信。
- 控制面 IP 限制,限制对管理界面的访问。