AWS Secrets Manager资源策略配置:仅允许根账号访问GetValue
AWS Secrets Manager资源策略配置方案(仅允许根账号执行GetValue)
核心权限逻辑说明
AWS权限评估遵循默认拒绝原则:所有请求初始状态为拒绝,只有当存在显式的Allow规则(身份策略或资源策略)且无优先级更高的Deny规则时,请求才会被允许。这也是AWS示例仅提供Allow策略的原因——只要显式授权目标主体,其他未被授权的请求会自动被默认拒绝。
针对你的场景的两种策略配置
根据DevOps用户的身份策略情况,选择对应配置:
场景1:DevOps用户的身份策略未授予secretsmanager:GetValue权限
只需显式允许根账号访问即可,其他请求因默认拒绝无法执行:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "secretsmanager:GetValue", "Resource": "*" } ] }
场景2:DevOps用户的身份策略已授予secretsmanager:GetValue权限
此时需要显式拒绝DevOps用户的请求(Deny规则优先级高于Allow),同时保留根账号的授权:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "secretsmanager:GetValue", "Resource": "*" }, { "Effect": "Deny", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/devops-user1", "arn:aws:iam::123456789012:user/devops-user2" ] }, "Action": "secretsmanager:GetValue", "Resource": "*" } ] }
你之前配置失效的常见原因
- 未显式Allow根账号:仅配置
Deny规则(如NotPrincipal结合Deny)会导致根账号也因默认拒绝无法访问,必须添加针对根的Allow规则。 - 错误使用
aws:SourceArn:该条件用于标识触发请求的资源ARN(如Lambda、ECS任务),而非请求发起者的用户ARN,应直接通过Principal指定用户/根账号。 NotPrincipal策略逻辑错误:若使用Deny + NotPrincipal,需确保根账号有对应的Allow规则,否则根请求会因默认拒绝失败。
内容的提问来源于stack exchange,提问作者Felipe Buccioni
相关产品推荐
相关产品推荐

