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