【问题标题】:AWS IAM Policy to allow Role deletion actions only on resources with specific tagAWS IAM 策略仅允许对具有特定标签的资源执行角色删除操作
【发布时间】:2020-03-02 20:17:22
【问题描述】:

我正在创建跨多个 AWS 账户分配的跨账户角色。目标是允许我的 lambda 之一承担此 CrossAccount 角色并在目标帐户中创建 CFN 堆栈。

为了允许删除堆栈,我需要将 ec2:TerminateInstances 之类的操作分配给角色。但我不想允许对所有资源“*”执行操作。如何只允许对具有特定标签的资源执行此操作?

我尝试了以下政策条件,但它不起作用。当尝试删除堆栈时,我在 ec2:TerminateInstances 操作上遇到未经授权的错误。

- Effect: "Allow"
  Action:
    - "ec2:TerminateInstances"
  Resource: "*"
  Condition:
    StringEquals:
      aws:RequestTag/Usage: TestOnlyTag

我走对了吗?

请注意,此角色需要在创建堆栈之前部署到目标帐户中。所以这里没有办法指定Instance-Id。

【问题讨论】:

  • 你试过了吗?有用吗?

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


【解决方案1】:

事实证明我应该使用 ResourceTag 而不是 RequestTag。根据 AWS 文档https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html

,以下是这两者之间的区别

Resource – 根据标签控制对 AWS 服务资源的访问 在那些资源上。为此,请使用 ResourceTag/key-name 条件 键来确定是否允许访问基于资源的资源 附加到资源的标签。

Request – 控制可以在请求中传递哪些标签。去做这个, 使用 aws:RequestTag/key-name 条件键来指定什么标签 键值对可以在请求中传递以标记或取消标记 AWS 资源。

以下是工作政策。

- Effect: "Allow"
  Action:
    - "ec2:TerminateInstances"
  Resource: "*"
  Condition:
    StringEquals:
      aws:ResourceTag/Usage: "TestOnlyTag"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 2022-11-26
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    相关资源
    最近更新 更多