如何防止没有特定标签的角色与EC2相关联?

时间:2019-03-27 16:03:12

标签: amazon-web-services amazon-cloudformation amazon-iam

我创建了一个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实例关联的正确原因是什么?

谢谢

1 个答案:

答案 0 :(得分:1)

我不确定您所描述的内容是否可行,但请继续探索!

您的政策是“如果EC2服务具有特定标记,则允许EC2服务调用AssumeRole”。

控制是否可以向EC2实例分配角色的官方方式是将iam:PassRole授予启动该实例的IAM实体。

如果某人没有iam:PassRole,则他们 无法在启动实例时指定角色。如果希望他们能够使用特定角色,则可以为他们授予iam:PassRole的特定角色,然后他们可以在启动实例时使用它们。

此方法授予IAM用户/组/角色选择角色的权限,而不是根据实例(甚至不一定存在)控制权限。