AWS CDK Secrets Manger 获取完整的 arn (python)

AWS CDK Secrets Manger getting the full arn (python)

我正在尝试创建一个 Canary 资源,该资源使用需要机密的脚本。 我正在尝试向金丝雀角色(我作为 cdk 的一部分创建)添加策略声明。 为此,我需要获得完整的秘密 arn,我可以通过

获得部分 arn
secret_from_name = secretsmanager.Secret.from_secret_name_v2

然后像这样使用它

resources = [secret_from_name.secret_arn]

但这并没有给我完整的 arn 并且权限不起作用。

.....because no identity-based policy allows the secretsmanager:GetSecretValue action

以为我可以通过

来解决这个问题
resources = [secret_from_name.secret_full_arn]

但是因为这是按名称派生的,所以它没有得到完整的 arn 而你得到 'undefined'

我也尝试使用部分 arn 从属性中获取它,但也没有任何乐趣。

那么有什么办法解决这个问题吗?因为我不想做的是传递完整的 arn's 还是有其他方法可以授予对此资源的访问权限?

Secret ARN 的末尾有一个破折号和 6 个随机字符。使用 -?????? wildcard suffix 定义 IAM 策略语句的资源,以授予您的角色访问所有版本的秘密名称的权限。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": [
        "arn:aws:secretsmanager:<region>:<account-id-number>:secret:<secret-name>-??????"
      ]
    }
  ]
}

在 CDK 上下文中,您可以简单地使用字符串连接 assemble 来自密钥名称的策略语句的资源 ARN。或者使用 CDK ARN 实用程序 (Arn.format or Stack.format_arn)。