跳到主要内容
版本:3.2.16.3

在 AWS Secrets Manager 中引用密钥

AWS Secrets Manager 是一项完全托管的服务,你可以将其与 API7 企业版集成,以安全地存储、管理和检索敏感信息,例如 API 密钥、密码和其他类型的凭据。它允许自动轮换密钥,从而降低凭据随时间推移而暴露的风险。

本教程演示了如何将 API7 企业版与 AWS Secret Manager 集成,使你能够安全地存储和引用消费者凭据和插件配置。

前提条件

  1. 安装 API7 企业版
  2. 在你的网关组中至少有一个网关实例
  3. 拥有一个 AWS 账户

获取 IAM 访问密钥 ID 和秘密访问密钥

获取 IAM 用户访问密钥和秘密访问密钥,这些密钥将在下一步中配置到 API7 企业版中以访问 AWS Secrets Manager。

在网关组中新增Secret 提供商

  1. 从侧边栏选择网关组的Secret 提供商,然后点击新增Secret 提供商
  2. 在对话框中,执行以下操作:
    • Secret 提供商 ID ,输入 my-secrets-manager
    • Secret 管理服务,选择 AWS Secrets Manager
    • 区域,选择你的 AWS Secrets Manager 服务所在的区域。例如,us-east-1
    • 使用上一步中获取的访问密钥和秘密访问密钥填写访问密钥 ID秘密访问密钥字段。
    • 点击新增

引用密钥以创建消费者凭据

消费者凭据中的以下敏感字段可以存储在外部Secret 管理服务(HashiCorp Vault、AWS Secret Manager 等)中,并在 API7 网关中引用:

  • Key Authentication凭据中的 key
  • Basic Authentication凭据中的 password
  • JWT 认证凭据中的 secretpublic key
  • HMAC 认证凭据中的 secret_key

新增消费者

  1. 从侧边栏选择网关组的消费者
  2. 点击新增消费者
  3. 在对话框中,执行以下操作:
    • 名称,输入 Alice
    • 点击新增

在 AWS Secrets Manager 中创建密钥

在本节中,你将创建一个密钥来存储用户 alice 的消费者凭据。

  1. 在控制台中导航到 AWS Secrets Manager 并创建一个密钥。选择 其他类型的密钥 作为密钥类型,并在键值对中输入密钥名称 key 和凭据 alice-primary-key
  2. 在下一步中,将密钥名称配置为 alice-credentials,并可选择新增描述。
  3. 查看其余信息并完成密钥创建。你应该会在 AWS Secrets Manager 中看到列出的密钥。
  4. 重复创建其他消费者凭据的更多键/值对,所有键/值对都在密钥名称 alice-credentials 下:
  • 对于Basic Authentication凭据: password:alice-password
  • 对于 JWT 认证凭据: secret:alice-secret
  • 对于 HMAC 认证凭据: secret-key:alice-secret-key

新增Key Authentication凭据

  1. 从侧边栏选择网关组的消费者
  2. 选择你的目标消费者,例如,Alice
  3. 凭据选项卡下,点击新增Key Authentication凭据
  4. 在对话框中,执行以下操作:
    • 名称,输入 primary-key
    • Key,选择从Secret 提供商引用,然后输入 $secret://aws/my-secrets-manager/alice-credentias/key
    • 点击新增
备注

所有密钥引用都以 $secret:// 开头。aws 是Secret 提供商的Secret 管理服务my-secrets-managerSecret 提供商 ID

新增Basic Authentication凭据

  1. 从侧边栏选择网关组的消费者
  2. 选择你的目标消费者,例如,Alice
  3. 凭据选项卡下,点击Basic Authentication选项卡,然后点击新增Basic Authentication凭据
  4. 在对话框中,执行以下操作:
    • 名称,输入 primary-basic
    • 用户名,输入 alice
    • 密码,选择从Secret 提供商引用,然后输入 $secret://aws/my-secrets-manager/alice-credentias/password
    • 点击新增
备注

所有密钥引用都以 $secret:// 开头。awsSecret 管理服务my-secrets-managerSecret 提供商 ID

新增 JWT 认证凭据

  1. 从侧边栏选择网关组的消费者
  2. 选择你的目标消费者,例如,Alice
  3. 凭据选项卡下,点击JWT选项卡,然后点击新增 JWT 凭据
  4. 在对话框中,执行以下操作:
    • 名称,输入 primary-jwt
    • Key,输入 alice-key
    • 算法,选择 HS256
    • Secret,选择从Secret 提供商引用,然后输入 $secret://aws/my-secrets-manager/alice-credentias/secret
    • 点击新增
备注

所有密钥引用都以 $secret:// 开头。aws 是Secret 提供商的Secret 管理服务my-secrets-managerSecret 提供商 ID

新增 HMAC 认证凭据

  1. 从侧边栏选择网关组的消费者
  2. 选择你的目标消费者,例如,Alice
  3. 凭据选项卡下,点击HMAC 认证选项卡,然后点击新增 HMAC 认证凭据
  4. 在对话框中,执行以下操作:
    • 名称,输入 primary-hmac
    • Key ID ,输入 alice-keyid
    • Secret Key,选择从Secret 提供商引用,然后输入 $secret://aws/my-secrets-manager/alice-credentias/secret-key
    • 点击新增
备注

所有密钥引用都以 $secret:// 开头。aws 是Secret 提供商的Secret 管理服务my-secrets-managerSecret 提供商 ID

引用密钥以启用插件

插件配置中的以下敏感字段可以存储在外部Secret 管理服务(HashiCorp Vault、AWS Secret Manager 等)中,并在 API7 网关中引用:

插件字段
Limit Countredis_usernameredis_password
Authz-Casdoorclient_idclient_secret
Wolf RBACappid
LDAP 认证user_dn

本节以配置 Limit Count 插件 为例进行演示。

创建密钥

在你的 AWS Secrets Manager 中,使用键/值对 username:api7password:redis-api7 在密钥名称 redis 下创建密钥。

配置 Limit Count 插件

有关在何处以及如何启用 Limit Count 插件,请参阅 API 限流限速

将以下配置新增到JSON 编辑器

{
"count": 3,
"time_window": 60,
"key_type": "var",
"rejected_code": 429,
"rejected_msg": "Too many requests",
"key": "remote_addr",
"policy": "redis",
"redis_host": "127.0.0.1",
"redis_port": 6379,
"redis_username": "$secret://aws/my-secrets-manager/redis/username",
"redis_password": "$secret://aws/my-secrets-manager/redis/password",
"redis_database": 1,
"redis_timeout": 1001,
"allow_degradation": false,
"show_limit_quota_header": true
}
备注

所有密钥引用都以 $secret:// 开头。aws 是Secret 提供商的Secret 管理服务my-secrets-managerSecret 提供商 ID

相关阅读