我正在创建一个跨账户角色,以分布在多个AWS账户中。目标是允许我的一个lambda承担这个CrossAccount角色,并在目标帐户中创建CFN堆栈。
为了允许删除堆栈,我需要为角色分配类似ec2:TerminateInstances的操作。但我不想允许对所有资源采取行动。如何只允许对具有特定标记的资源执行此操作?
我尝试了以下策略条件,但不起作用。当尝试删除堆栈时,我在ec2:TerminateInstances操作中遇到未经授权的错误。
- Effect: "Allow"
Action:
- "ec2:TerminateInstances"
Resource: "*"
Condition:
StringEquals:
aws:RequestTag/Usage: TestOnlyTag
我走对了吗?
请注意,此角色需要在创建堆栈之前部署到目标帐户中。因此,无法在此处指定实例Id。
原来我应该使用ResourceTag而不是RequestTag Resource–基于标签控制对AWS服务资源的访问在这些资源上。为此,请使用ResourceTag/key名称条件键来确定是否允许基于附加到资源的标记。 Request–控制可以在请求中传递哪些标记。为此,使用aws:RequestTag/key-namecondition-key指定什么标签键值对可以在标记或取消标记AWS的请求中传递资源 以下是工作策略。- Effect: "Allow"
Action:
- "ec2:TerminateInstances"
Resource: "*"
Condition:
StringEquals:
aws:ResourceTag/Usage: "TestOnlyTag"