我创建了一个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实例关联的正确原因是什么,除非它们具有特定值的特定标记?
谢谢
我不确定你描述的是否可行,但请继续探索!
您的策略是“允许EC2服务在具有特定标记的情况下调用AssumeRole”。
控制是否可以为EC2实例分配角色的官方方法是将iam:PassRole
授予正在启动实例的IAM实体。
如果有人没有iam:PassRole
,那么在启动实例时他们无法指定角色。如果您希望它们能够使用特定角色,您可以为特定角色授予它们iam:PassRole
,然后在启动实例时可以使用它们。
此方法授予IAM用户/组/角色选择角色的权限,而不是基于实例控制权限(当前不一定存在)。