本文为 SPIRE 官方文档 plugin_agent_svidstore_aws_secretsmanager 的中文译本,以英文原文为准。 🔗 穿越源码分析:Agent 详解 · SVIDStore
Agent 插件:SVIDStore "aws_secretsmanager"
aws_secretsmanager 插件将 agent 有权获取的条目所对应的 X509-SVID 存储到 AWS Secrets Manager 中。
Secret 格式
用于将已签发身份存入 secret 的格式如下:
json
{
"spiffeId": "spiffe://example.org",
"x509Svid": "X509_CERT_CHAIN_PEM",
"x509SvidKey": "PRIVATE_KEY_PEM",
"bundle": "X509_BUNDLE_PEM",
"federatedBundles": {
"spiffe://federated.org": "X509_FEDERATED_BUNDLE_PEM"
}
}所需的 AWS IAM 权限
本插件需要以下 IAM 权限才能正常工作:
text
secretsmanager:DescribeSecret
secretsmanager:CreateSecret
secretsmanager:RestoreSecret
secretsmanager:PutSecretValue
secretsmanager:TagResource
secretsmanager:DeleteSecret
kms:Encrypt请注意,本插件不会读取它已存储的 secret,因此不需要读取权限。
配置
当 SVID 更新时,插件会负责在 AWS Secrets Manager 中更新它们。
| 配置项 | 说明 |
|---|---|
| access_key_id | AWS access key id。默认:环境变量 AWS_ACCESS_KEY_ID 的值。 |
| secret_access_key | AWS secret access key。默认:环境变量 AWS_SECRET_ACCESSKEY 的值。 |
| region | 用于存储 secret 的 AWS 区域(region)。 |
配置示例:
hcl
SVIDStore "aws_secretsmanager" {
plugin_data {
access_key_id = "ACCESS_KEY_ID"
secret_access_key = "SECRET_ACCESS_KEY"
region = "us-east-1"
}
}选择器
aws_secretsmanager 类型的选择器,用于描述插件在 AWS Secrets Manager 中存储 secret 值所需的元数据。
| 选择器 | 示例 | 说明 |
|---|---|---|
aws_secretsmanager:secretname | aws_secretsmanager:secretname:some-name | 存储 SVID 的 secret 的友好名称。若未指定,则必须定义 aws_secretsmanager:arn。 |
aws_secretsmanager:arn | aws_secretsmanager:arn:some-arn | 存储 SVID 的 secret 的 Amazon 资源名称(ARN)。若未指定,则必须定义 aws_secretsmanager:secretname。 |
aws_secretsmanager:kmskeyid | aws_secretmanager:kmskeyid | 指定用于加密 secret 的 AWS KMS 客户主密钥(customer master key, CMK)的 ARN、Key ID 或别名。可使用任何受支持的 AWS KMS key ID 标识方式。若需引用其他账户中的 CMK,只能使用密钥 ARN 或别名 ARN。若未指定,则使用该 AWS 账户的默认 CMK。 |