基于标签的AWS Parameter Store IAM策略授权异常求助
排查IAM显式拒绝SSM GetParameter的问题
1. 先找有没有带Deny的IAM策略
首先得确认Supplier1用户或者他所属的组,有没有挂着带"Effect": "Deny"的策略——包括直接绑在用户身上的、组里的、账户级的IAM边界,甚至AWS组织的SCP都要查。重点找那些涉及ssm:GetParameter动作,或者资源范围包含你要访问的那个参数ARN的Deny语句,显式拒绝的根源大概率在这儿。
2. 检查你的允许策略写对了没
你要实现的是按标签控制权限,正确的策略得同时满足动作许可和标签匹配,给你个参考示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter", "ssm:PutParameter", "ssm:DeleteParameter" ], "Resource": "arn:aws:ssm:eu-north-1:XXXXXXXXXXXX:parameter/*", "Condition": { "StringEquals": { "ssm:ResourceTag/Supplier": "Supplier1" } } } ] }
要注意这几点:
- Resource的范围要覆盖目标参数,比如你要访问的是
dev/ai/parameter1,用parameter/*就没问题,别写窄了 - 标签条件的键必须是
ssm:ResourceTag/Supplier,不是通用的aws:ResourceTag,SSM参数有自己的条件键 - 标签值要和参数实际的标签完全一致,大小写敏感,别拼错
3. 确认目标参数的标签真的配对了
去SSM Parameter Store控制台找到dev/ai/parameter1,看看它的标签里是不是真的有Supplier:Supplier1——有时候可能标签键写错了(比如写成supplier小写),或者值输错了,这都会导致策略不匹配。
4. 用IAM Access Analyzer查具体原因
打开IAM控制台的Access Analyzer,用“验证权限”功能,输入Supplier1的ARN、ssm:GetParameter动作和目标参数的ARN,跑一下分析,它会明确告诉你是哪个策略触发的显式拒绝,比自己瞎找高效多了。
5. 排查权限边界限制
如果用户或者组设置了IAM权限边界,就算允许策略对了,边界里没开ssm:GetParameter的话也会出问题,但你的错误是显式拒绝,所以优先找Deny语句,这个可以作为补充检查。
内容的提问来源于stack exchange,提问作者Random Guy
相关产品推荐
相关产品推荐

