引用 AWS Secrets Manager 中的密钥
AWS Secrets Manager 是一项完全托管的服务,你可以将其与 API7 企业版集成,以安全地存储、管理和检索敏感信息,例如 API 密钥、密码和其他类型的凭据。它允许自动轮换密钥,降低了凭证随时间推移而泄露的风险。
本教程演示了如何将 API7 企业版与 AWS Secrets Manager 集成,使你能够安全地存储和引用消费者凭证及插件配置。
下面是一个交互式演示,提供了将 API7 企业版与 AWS Secrets Manager 集成存储和检索 key-auth 密钥的动手实践。
前置条件
- 安装 API7 企业版。
- 在你的网关组中至少有一个网关实例。
- 拥有一个 AWS 帐户以访问 IAM 和 Secrets Manager 模块。
获取 IAM Access Key ID 和 Secret Access Key
获取 IAM 用户访问密钥 (Access Key ID) 和秘密访问密钥 (Secret Access Key),它们将在下一步中配置在 API7 企业版中,以便访问 AWS Secrets Manager。
请确保为用户正确分配了适当的权限,以避免因权限不足而导致验证失败。
在网关组中添加密钥提供商
- Dashboard
- ADC
- Ingress Controller
- 从侧边导航栏选择你的网关组下的 Secret 提供商,然后点击 新增 Secret 提供商。
- 在弹出的对话框中,执行以下操作:
- 在 Secret 提供商 ID 字段中,输入
my-secrets-manager。 - 在 Secret 管理服务 字段中,选择
AWS Secrets Manager。 - 选择你的 AWS Secrets Manager 服务的区域。例如,
us-east-1。 - 将上一步骤获取的访问密钥和秘密访问密钥填入 Access Key ID 和 Secret Access Key 字段。
- 点击 新增。
- 复制 Secret 变量以供将来引用。所有密钥引用均由此生成,例如:
$secret://aws/my-secrets-manager/$secret_name/$key。
不适用。
API7 Ingress Controller 目前不支持密钥提供商。
引用 SSL 证书的密钥
SSL 证书对象中的敏感字段 certificate 和 private key 可以安全地存储在外部密钥管理器(例如 HashiCorp Vault 或 AWS Secret 管理服务)中,并在 API7 网关中引用。
在 AWS Secrets Manager 中创建密钥
在本节中,你将创建一个密钥(secret)来存储消费者 alice 的凭证。你也可以参考 Create an AWS Secrets Manager secret。
- 在控制台中导航到 AWS Secrets Manager 并存储一个新的密钥。选择 其他类型的密钥 作为密钥类型,并在键值对中输入键名
crt及其 base64 值。 - 在下一步中,将密钥名称配置为
ssl,你可以选择添加描述。 - 点击 下一步 以查看其余信息并完成密钥创建。你应该可以在 AWS Secrets Manager 中看到列出的该密钥。
- 重复上述步骤创建另一个键值对:
private-key: {private key base64}。
添加 SSL 证书
- 从侧边导航栏选择你的网关组下的 证书,进入 SSL 证书选项卡。
- 点击 新增 SSL 证书。
- 在弹出的对话框中,执行以下操作:
- 在 名称字段中,输入
Test SSL Certificate。 - 在 证书字段中,输入
$secret://aws/my-secrets-manager/ssl/crt。 - 在 私钥字段中,输入
$secret://aws/my-secrets-manager/ssl/private-key。 - 点击 新增。
所有的密钥引用均由密钥提供商的 Secret 变量生成:$secret://aws/my-secrets-manager/$secret_name/$key。
- 想要全面使用和验证 SSL 证书,请参阅在客户端与 API7 网关之间配置 mTLS。
引用密钥创建消费者凭证
消费者凭证中的以下敏感字段可存储在外部密钥管理器(HashiCorp Vault、AWS Secrets Manager 等)中并在 API7 企业版中引用:
- 密钥认证(Key Authentication)凭证中的
key - 基本认证(Basic Authentication)凭证中的
password - JWT 认证凭证中的
secret和public key - HMAC 认证凭证中的
secret_key
添加消费者
- Dashboard
- ADC
- Ingress Controller
- 从侧边导航栏选择你的网关组下的 消费者。
- 点击 新增消费者。
- 在弹出的对话框中,执行以下操作:
- 在 名称 字段中,输入
Alice。 - 点击 新增。
若使用 ADC 创建消费者,请创建以下配置:
consumers:
- username: Alice
API7 Ingress Controller 目前不支持密钥提供商。
在 AWS Secrets Manager 中创建密钥
在本节中,你将创建一个密钥来存储消费者 alice 的凭证。你也可以参考 Create an AWS Secrets Manager secret。
- 在控制台中导航到 AWS Secrets Manager 并存储一个新的密钥。选择 其他类型的密钥 作为密钥类型,并在键值对中输入键名
alice-key-auth及其对应的值alice-key。 - 在下一步中,将密钥名称配置为
alice-credentials,你可以选择添加描述。 - 点击 下一步 以查看其余信息并完成密钥创建。你应该可以在 AWS Secrets Manager 中看到列出的该密钥。
- 重复上述步骤为其他消费者凭证创建更多键值对:
- 对于基本认证(Basic Authentication)凭证:
password: alice-password。 - 对于 JWT 认证凭证:
secret: alice-secret。 - 对于 HMAC 认证凭证:
secret-key: alice-secret-key。
添加密钥认证(Key Authentication)凭证
- Dashboard
- ADC
- Ingress Controller
- 从侧边导航栏选择你的网关组下的 消费者。
- 选择你的目标消费者,例如
Alice。 - 在 认证凭据选项卡下,点击 新增 Key Authentication 凭据。
- 在弹出的对话框中,执行以下操作:
- 在 名称字段中,输入
primary-key。 - 在 Key字段中,输入
$secret://aws/my-secrets-manager/alice-credentials/alice-key-auth。 - 点击 新增。
若使用 ADC 创建包含 key-auth 的消费者,请更新你的配置:
consumers:
- username: Alice
credentials:
- name: primary-key
type: key-auth
config:
key: $secret://aws/my-secrets-manager/alice-credentials/alice-key-auth
API7 Ingress Controller 目前不支持密钥提供商。
添加基本认证(Basic Authentication)凭证
- Dashboard
- ADC
- Ingress Controller
- 从侧边导航栏选择你的网关组下的 消费者。
- 选择你的目标消费者,例如
Alice。 - 在 认证凭据选项卡下,点击 Basic Authentication选项卡,然后点击 A新增 Basic Authentication 凭据。
- 在弹出的对话框中,执行以下操作:
- 在 名称字段中,输入
primary-basic。 - 在 用户名字段中,输入
alice。 - 在 密码字段中,输入
$secret://aws/my-secrets-manager/alice-credentials/password。 - 点击 新增。
若使用 ADC 创建包含 basic-auth 的消费者,请更新你的配置:
consumers:
- username: Alice
credentials:
- name: primary-basic
type: basic-auth
config:
password: $secret://aws/my-secrets-manager/alice-credentials/password
username: Alice
API7 Ingress Controller 目前不支持密钥提供商。
添加 JWT 认证凭证
- Dashboard
- ADC
- Ingress Controller
- 从侧边导航栏选择你的网关组下的 消费者。
- 选择你的目标消费者,例如
Alice。 - 在 认证凭据选项卡下,点击 JWT 选项卡,然后点击 新增 JWT 凭据。
- 在弹出的对话框中,执行以下操作:
- 在 名称字段中,输入
primary-jwt。 - 在 Key字段中,输入
alice-key。 - 在 算法字段中,选择
HS256。 - 在 密钥字段中,输入
$secret://aws/my-secrets-manager/alice-credentials/secret。 - 点击 新增。
若使用 ADC 创建包含 jwt-auth 的消费者,请更新你的配置:
consumers:
- username: Alice
credentials:
- name: primary-jwt
type: jwt-auth
config:
algorithm: HS256
key: alice-key
secret: $secret://aws/my-secrets-manager/alice-credentials/secret
API7 Ingress Controller 目前不支持密钥提供商。
添加 HMAC 认证凭证
- Dashboard
- ADC
- Ingress Controller
- 从侧边导航栏选择你的网关组下的 消费者。
- 选择你的目标消费者,例如
Alice。 - 在 认证凭据 选项卡下,点击 HMAC Authentication 选项卡,然后点击 新增 HMAC Authentication 凭据。
- 在弹出的对话框中,执行以下操作:
- 在 名称 字段中,输入
primary-hmac。 - 在 Key ID 字段中,输入
alice-keyid。 - 在 Secret Key 字段 中,输入
$secret://aws/my-secrets-manager/alice-credentials/secret-key。 - 点击 新增。
若使用 ADC 创建包含 hmac-auth 的消费者,请更新你的配置:
consumers:
- username: Alice
credentials:
- name: primary-hmac
type: hmac-auth
config:
key_id: alice-keyid
secret_key: $secret://aws/my-secrets-manager/alice-credentials/secret-key
API7 Ingress Controller 目前不支持密钥提供商。