适用于AWS EC2启动/停止实例的IAM策略

时间:2015-11-11 16:43:21

标签: amazon-ec2 amazon-iam

我希望用户能够登录到aws帐户并启动和停止一个特定的ec2-instance。 到目前为止,我发现ec2描述只能在资源中使用catch -all star“*”。 用户可以登录,查看所有实例,但他无法启动或停止实例,因为出现了权限被拒绝错误:(

这是我的政策

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "TheseActionsDontSupportResourceLevelPermissions",
"Effect": "Allow",
"Action": [
"ec2:Describe*"
],
"Resource": "*"
},
{
"Sid": "TheseActionsSupportResourceLevelPermissions",
"Effect": "Allow",
"Action": [
"ec2:TerminateInstances",
"ec2:StopInstances",
"ec2:StartInstances"
],
"Resource": "arn:aws:ec2:eu-central-1a:MY_ACCOUNT_ID:instance/MY_INSTANCE_ID"
}
]
}

1 个答案:

答案 0 :(得分:2)

答案是,你做不到。

ec2:Stopinstancesec2:StartInstancesec2:TerminateInstances确实支持资源级权限,但不支持实例ID的条件键。它们支持条件键:

  • EC2:AvailabilityZone
  • ec2:EbsOptimized
  • ec2:InstanceProfile
  • ec2:InstanceType
  • ec2:PlacementGroup
  • ec2:Region
  • ec2:ResourceTag / tag-key
  • ec2:RootDeviceType
  • EC2:租约

文档here中突出显示了这一点。 (在页面上搜索API调用)

唯一可能有用的条件键是ec2:ResourceTag/tag-key。您可以在特定实例上添加资源标记,并允许用户在具有该标记的实例上调用这3个API调用。

但是,除非您有与拒绝的标记相关的API调用,否则没有什么可以阻止用户将标记添加到另一个实例,并在该实例上执行API调用。您需要确定是否拒绝标记适合您的情况。

希望这有帮助。