Skip to content

本文为 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_idAWS access key id。默认:环境变量 AWS_ACCESS_KEY_ID 的值。
secret_access_keyAWS 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:secretnameaws_secretsmanager:secretname:some-name存储 SVID 的 secret 的友好名称。若未指定,则必须定义 aws_secretsmanager:arn
aws_secretsmanager:arnaws_secretsmanager:arn:some-arn存储 SVID 的 secret 的 Amazon 资源名称(ARN)。若未指定,则必须定义 aws_secretsmanager:secretname
aws_secretsmanager:kmskeyidaws_secretmanager:kmskeyid指定用于加密 secret 的 AWS KMS 客户主密钥(customer master key, CMK)的 ARN、Key ID 或别名。可使用任何受支持的 AWS KMS key ID 标识方式。若需引用其他账户中的 CMK,只能使用密钥 ARN 或别名 ARN。若未指定,则使用该 AWS 账户的默认 CMK。