【问题标题】:How do you prevent a Role from being associated with an EC2 without a specific tag?如何防止角色与没有特定标签的 EC2 关联?
【发布时间】:2019-03-28 04:35:53
【问题描述】:

我创建了一个 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 配置列表”返回了正确的结果。

阻止角色与 EC2 实例关联的正确原因是什么,除非它们具有具有特定值的特定标签?

谢谢

【问题讨论】:

  • 你说的是两个不同的角色吗?防止实例在另一个现有角色上调用AssumeRole 会是 1 个关联角色吗?因为在您将角色与 EC2 实例关联后,该角色已被 EC2 实例“代入”。不知道你想达到什么目标。
  • 我想创建一个附加了策略和关联的 InstanceProfile 的角色。此实例配置文件(或其关联角色)只能与具有特定标签 key=value 的 EC2 实例关联。

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


【解决方案1】:

我不确定你描述的是否可行,但请继续探索!

您的策略是“允许 EC2 服务调用 AssumeRole 如果具有特定标签”。

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

如果某人没有iam:PassRole,那么他们不能在启动实例时指定角色。如果您希望他们能够使用特定角色,您可以为特定角色授予他们iam:PassRole,然后他们可以在启动实例时使用该角色。

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

【讨论】:

  • 谢谢约翰。我希望启动实例的实体具有 iam:PassRole,但能够分配给 EC2 的角色受到 EC2 标签的限制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
  • 2021-03-11
相关资源
最近更新 更多