IAM用户无法附加ssm-role启动EC2实例问题求助
问题排查与解决方案
我来帮你一步步定位这个问题,核心原因大概率是权限配置的细节没踩对——咱们从几个关键环节入手:
1. 最关键:缺少iam:PassRole权限
你当前给test-user配置的sts:AssumeRole权限是让用户自己扮演ssm-role的,但启动EC2时附加角色的动作,本质是把角色“传递”给EC2服务,让EC2去扮演它,这需要的是iam:PassRole权限,而非sts:AssumeRole。
请把test-user的内联策略替换成如下内容(替换<ACC_ID>为你的实际AWS账号ID):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPassSSMRoleToEC2", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::<ACC_ID>:role/ssm-role" } ] }
2. 调整ssm-role的信任关系
你的信任关系里添加了test-user的ARN是多余的——因为是EC2服务需要扮演这个角色,不是test-user直接扮演。保留服务主体即可,修正后的信任关系:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
3. 验证ARN的准确性
仔细检查所有配置中的ARN:
- 确认
<ACC_ID>是你的实际12位AWS账号ID(没有多余符号或大小写错误) - 角色名称
ssm-role完全匹配,没有拼写错误
4. 排查策略冲突
检查test-user是否被附加了拒绝(Deny)类型的策略(比如权限边界、托管策略或其他内联策略),Deny权限会优先覆盖Allow权限。你可以通过IAM控制台的策略模拟功能,验证test-user是否拥有iam:PassRole权限,目标资源为ssm-role的ARN。
按照以上步骤调整后,应该就能正常启动EC2并附加ssm-role了。
内容的提问来源于stack exchange,提问作者Reyansh Kharga
相关产品推荐
相关产品推荐

