在IAM中,我可以限制一组用户只访问/启动/终止某些EC2 ami或实例吗?< / h1 >



标题怎么说

在主AWS账户中,我有几个个人账户,即AWS身份和访问管理(IAM)用户。我想将某些IAM用户分配给组,并防止他们终止某些Amazon EC2实例,注销某些Amazon Machine Images (ami)等。

我不介意他们玩自己的东西,但我不希望他们碰我的东西。

这可能吗?

更新

AWS刚刚宣布了Amazon EC2和Amazon RDS的资源级权限,以解决EC2和RDS中IAM支持的长期缺点(与其他AWS服务相比,请参阅下面我的原始回答以了解详细信息/背景):

今天,我们为Amazon EC2和Amazon RDS引入了资源级权限,使IAM更加强大。[…]

在EC2端,您现在可以构造和使用IAM策略来控制访问EC2实例、EBS卷、映像和弹性IP地址。[…]

这里有一些你可以做的事情:

  • 允许用户在更大的多用户EC2环境中对有限的一组资源进行操作。
  • 为"开发"one_answers"测试"资源设置不同的权限。
  • 控制哪些用户可以终止哪些实例。
  • 需要额外的安全措施,如MFA认证,当作用于某些资源时。

这解决了大量的安全问题,并支持了相当多的新用例。

此外,EC2策略声明可以包含对EC2资源上的标记的引用,这允许对权限和计费报告使用相同的标记模型和模式。最后,有一个扩展的条件标签集[…]]包括ec2:Region、ec2:Owner、ec2:InstanceType,详情请参见Amazon ec2的条件键。

解决方案下面是示例3的一个变体:允许用户只针对手头的用例停止和启动特定的实例,其中允许用户只启动和停止[和终止]具有"department=dev"标签的实例:

{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"ec2:StopInstances", 
"ec2:StartInstances",
"ec2:TeminateInstances"
],
"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/department": "dev"
}
}
}
]
}

警告

对资源级权限的支持仍然限于对指定资源的以下操作集,不包括部分用例(例如取消注册ami) -对这个复杂且影响深远的特性的基础信心显然足够高,尽管宣布他们计划在2013年剩余时间内增加对其他api的支持(AWS通常不发布任何路线图):

  • Instances - Reboot, Start, Stop, Terminate.
  • EBS卷-附加,删除,分离。

原始回答

恐怕这是不可能的,你想这样做(和其他许多人,包括我自己)。

您希望限制对特定服务的资源而不是其操作的访问-虽然AWS身份和访问管理(IAM)原则上支持这两种方式,但并非每个AWS产品/服务都提供基于资源的限制;不幸的是,Amazon EC2就是其中之一,甚至还被作为这种差异的一个例子,请参阅与其他AWS产品集成:

下表总结了是否可以授予IAM权限控制对服务操作、资源或两者的访问。为例如,您可以使用IAM来控制哪些Amazon EC2操作用户,但你不能使用IAM来控制用户的访问权限ami、卷、实例等(我强调)

(部分)解决方案

根据其他帐户的需要,您可能至少仍然能够限制它们执行那些被认为具有破坏性的操作的能力—您可以通过AWS策略生成器探索可用的操作,例如:

  • ec2:DeregisterImage-当拒绝用户/组
  • 时,效果明显
  • ec2:ModifyInstanceAttribute-当用户/组拒绝时,这将有助于为实例启用终止保护:

默认情况下,您可以终止您启动的任何实例。如果你想防止意外终止实例,可以启用实例终止保护。

也就是说,一旦你启用了终止保护,任何没有权限使用ec2:ModifyInstanceAttribute的人都不能终止这些实例。

显然,各自受限的帐户将无法再为这些调用提供便利。

此外,这不会阻止他们运行一个花哨的集群计算八个超大实例左右,从而产生各自的成本;)

替代方法

根据您的设置/环境,您可能需要查看统一计费,它本质上提供了一种将一个或多个AWS帐户收集到另一个帐户下的方法,该帐户为其他帐户使用的资源付费。

虽然这主要是一个会计功能,但它也可以用于分离关注的领域-例如,促进单独的开发和生产帐户以实现各自独立的操作是很常见的,尤其是关于IAM权限等。

介绍性博客文章《AWS新功能:综合计费》提供了一个很好的概述,下面是《AWS综合计费指南》中关于您的明显用例的相关主题:

支付账户将支付关联账户的所有费用。然而,每个链接的帐户在彼此之间是完全独立的方式(注册服务、访问资源、使用AWS Premium)支持,等等)。付费帐户所有者无法访问所属的数据链接到帐户所有者(例如,他们在Amazon S3中的文件)。每帐户所有者使用他们自己的AWS凭证来访问他们的资源(例如,他们自己的AWS秘密访问密钥)。(我强调)

显然,这个功能是针对大客户的,但根据您的场景,您可能能够提出一个解决方案,根据需要分离您的AWS帐户和资源。

最新更新