我创建了一个AWS IAM角色,其中包括以下内容
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Principal:
Service:
- "ec2.amazonaws.com"
Action:
- "sts:AssumeRole"
Condition:
StringEquals:
ec2:ResourceTag/AppCode: !Sub "${AppCode}"
我验证了我的EC2确实包含标签AppCode,并且该值已传递给CloudFormation。
将角色与EC2关联后,在EC2上运行“ aws configure list”时,我看不到角色。
消除上述条件后,它立即起作用! “ aws configure list”返回了正确的结果。
除非角色具有带有特定值的特定标签,否则阻止角色与EC2实例关联的正确原因是什么?
谢谢
答案 0 :(得分:1)
我不确定您所描述的内容是否可行,但请继续探索!
您的政策是“如果EC2服务具有特定标记,则允许EC2服务调用AssumeRole”。
控制是否可以向EC2实例分配角色的官方方式是将iam:PassRole
授予启动该实例的IAM实体。
如果某人没有iam:PassRole
,则他们 无法在启动实例时指定角色。如果希望他们能够使用特定角色,则可以为他们授予iam:PassRole
的特定角色,然后他们可以在启动实例时使用它们。
此方法授予IAM用户/组/角色选择角色的权限,而不是根据实例(甚至不一定存在)控制权限。