我正在尝试设置一个在启动时配置我的实例的应用,并希望尽可能关闭该应用的API访问权限。我目前的政策如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1388183890000",
"Effect": "Allow",
"Action": [
"ec2:AssociateAddress",
"ec2:CreateTags",
"ec2:DescribeInstances",
"ec2:RebootInstances"
],
"Resource":"*"
}
]
}
然而,这允许应用程序对EC2中的任何内容执行任何这些操作。有没有办法可以将ec2实例上的应用操作锁定到该特定实例,或者锁定到具有相同IAM角色的所有框?
答案 0 :(得分:2)
是的,你可以。您需要首先为相关的EC2实例分配一些相关和通用标记。然后使用ec2:ResourceTag/tag-key
将IAM策略访问限制为仅限于那些实例。
检查this example:
以下是上例中的相关代码:
{
"Effect": "Allow",
"Action": "ec2:TerminateInstances",
"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/purpose": "test"
}
}
}
这样,您可以将访问权限仅限于那些具有必要标记的实例。
详细了解标记here。希望这会有所帮助。
答案 1 :(得分:1)
要使实例读取自己的标签,您还需要describe标签权限。
"ec2:DescribeTags"