跳到主要内容
版本:3.10.x

安全凭证管理

保护 SSL 证书、API Key(API 密钥)和密码等敏感信息,是重要的安全与合规要求。API7 网关提供可靠的工具,既可以在网关内部安全管理这些凭证,也可以与外部密钥管理系统集成。

前置条件

能力

  • 安全 SSL 管理:集中存储并自动续订 SSL 证书。
  • 静态凭证加密:敏感值在存入网关配置数据库前会进行加密。
  • 密钥管理器集成:与 HashiCorp Vault、AWS Secrets Manager 和 Azure Key Vault 集成,集中控制密钥。
  • 环境变量支持:部署期间以环境变量形式注入密钥。

SSL 证书管理

API7 网关允许通过控制面存储和管理 SSL 证书。可以将证书与特定域名(SNI)关联,为路由启用 HTTPS。

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

外部密钥管理器

要实现企业级密钥管理,请使用外部密钥管理器。API7 网关可以在运行时直接从这些系统获取敏感值。

集成 HashiCorp Vault

API7 网关可以在运行时从 HashiCorp Vault 获取敏感值。端到端流程如下:

  1. 通过 Admin API 在网关组中创建 Vault 密钥提供商。有关请求结构、必填字段(uriprefixtoken)、可选字段(kv_versionauthentication_method),以及部署 Vault 实例和限制令牌权限范围的步骤,请参阅配置 HashiCorp Vault 密钥提供商
  2. 使用 $secret://{provider_type}/{provider_id}/{secret_key} URI 格式,在资源或插件配置中引用密钥。
# 在你的插件配置中
plugins:
key-auth:
key: "$secret://vault/my-vault/api-key-path/my-key"

静态凭证加密

API7 控制面会在敏感字段(例如插件的 passwordkey)存入配置数据库(PostgreSQL)前自动加密。即使数据库遭到入侵,实际凭证仍会受到保护。

后续步骤