查看this post这个人使用了一个策略(应用于角色)让一个实例标记自己。
我完全想要同样的事情。我可以使用这个策略,但如果实例只能标记自己而不是其他实例,那就太好了。
我不能使用$ {ec2:SourceInstanceARN}作为资源,因此我尝试使用与策略变量评估的arn匹配的条件。
此政策不会验证:(Syntax errors in policy
)
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:CreateTags",
"ec2:DescribeTags",
"ec2:DescribeInstances"
],
"Effect": "Allow",
"Resource": [
"*"
],
"Condition": {
"ArnEquals": {
"ec2:SourceInstanceARN": "${ec2:SourceInstanceARN}"
}
}
}
]
}
答案 0 :(得分:2)
您不能使用DescribeTags
将"ec2:SourceInstanceARN"
调用限制为实例本身:
在https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2.html#amazonec2-policy-keys上,DescribeTags
没有显示任何要限制的资源,所以我敢打赌,您不能限制该API调用任何资源。
答案 1 :(得分:1)
对于仅适用于ec2自我行动的政策,您可以不这样做。我们将其用于主机,使其只能自我终止,自我标记等。
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SelfTaggingOnly",
"Effect": "Allow",
"Action": [
"ec2:CreateTags",
"ec2:DeleteTags",
"ec2:DescribeTags"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ARN": "${ec2:SourceInstanceARN}"
}
}
}
]
}
我写了一个小的powershell测试验证来确认。它尝试自标记,删除标记,然后尝试标记严格存在的主机,以验证“ self”领域之外的ec2操作尝试。在下面的验证结果中,第一次运行使用了上面的策略,第二次运行我删除了条件。
已制定上述政策:
Create Tags for self: PASS!
Remove Tags from self: PASS!
Unable to modify another instance's tags: PASS!
You are not authorized to perform this operation. Encoded authorization failure message: b9KG8BIyxQs~truncated_encoded_output~
已删除条件:
Create Tags for self: PASS!
Remove Tags from self: PASS!
Validation falure! I am able to modify other instance's tags!