我对Secrets Manager的IAM策略管理感到困惑。
设置:
问题:
Action: secretsmanager:*
不起作用,用户可以创建机密,但无法读取它们。
为了允许getSecretValue
,我必须指定第二条策略语句来明确提供访问权限。
在第一个语句中使用条件ForAnyValue:StringLike
时,如果我将其添加到第二个语句中以限制用户,则会授予拒绝权限。
以下是我的政策声明,这是使其发挥作用的唯一方法。但是据我所知,只包含第一个语句应该没问题。
我通过python包装器呈现策略。因此,请不要与格式字符串混淆
{
"Effect": "Allow",
"Action": [
"secretsmanager:*"
],
"Resource": [
f"arn:aws:secretsmanager:{region}:{account_number}:secret:{role_name}-*"
],
"Condition": {
"ForAnyValue:StringLike": {
"secretsmanager:Name": f"{role_name}-*"
}
}
}
allow_user_to_list_secrets_manager = {
"Effect": "Allow",
"Action": [
"secretsmanager:DescribeSecret",
"secretsmanager:ListSecrets",
"secretsmanager:GetSecretValue"
],
"Resource": [
f"*"
]
}
更新 我仍然没有完全理解为什么我需要两个策略,但是删除条件元素解决了我的问题。我从aws docs得到它,但似乎使策略声明感到困惑。按资源过滤也可以。