标题说什么。
在主 AWS 账户中,我有几个个人账户,即AWS Identity and Access Management (IAM)用户。我想将某些 IAM 用户分配给组,并防止他们终止某些Amazon EC2 实例、取消注册某些Amazon 系统映像 (AMI)等。
我不介意他们是否在玩自己的东西,但我不希望他们碰我的东西。
那可能吗?
标题说什么。
在主 AWS 账户中,我有几个个人账户,即AWS Identity and Access Management (IAM)用户。我想将某些 IAM 用户分配给组,并防止他们终止某些Amazon EC2 实例、取消注册某些Amazon 系统映像 (AMI)等。
我不介意他们是否在玩自己的东西,但我不希望他们碰我的东西。
那可能吗?
AWS 刚刚宣布了 Amazon EC2 和 Amazon RDS 的资源级权限,以解决 EC2 和 RDS 中 IAM 支持这一长期存在的缺陷(与其他 AWS 服务相比,有关详细信息/背景,请参阅下面的原始答案):
今天,我们通过为Amazon EC2和Amazon RDS引入资源级权限使 IAM 变得更加强大。[...]
在 EC2 方面,您现在可以构建和使用 IAM 策略来控制对 EC2 实例、EBS 卷、映像和弹性 IP 地址的访问。[...]
以下是您可以做的一些事情:
- 允许用户在更大的多用户 EC2 环境中对有限的资源集采取行动。
- 为“开发”和“测试”资源设置不同的权限。
- 控制哪些用户可以终止哪些实例。
- 在对某些资源进行操作时,需要额外的安全措施,例如 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 通常不发布任何路线图):
- 实例 - 重启、启动、停止、终止。
- EBS 卷 - 附加、删除、分离。
恐怕这不可能按照您想要的方式进行(以及许多其他人,包括我自己)。
您希望限制对特定服务资源的访问,而不是限制其操作- 虽然AWS Identity and Access Management (IAM)原则上支持两者,但并非每个 AWS 产品/服务都提供基于资源的限制;不幸的是, Amazon EC2就是其中之一,甚至作为这种差异的示例,请参阅与其他 AWS 产品集成:
下表总结了您是否可以授予 IAM 权限来控制对服务的操作、资源或两者的访问。例如,您可以使用 IAM 来控制用户可以访问哪些 Amazon EC2 操作,但您不能使用 IAM 来控制用户对 AMI、卷、实例等的访问。 [强调我的]
根据其他账户的需求,您至少可以限制他们执行那些被认为具有破坏性的操作的能力——您可以通过 AWS Policy Generator 探索可用的操作,例如:
ec2:DeregisterImage
- 明显效果,当拒绝用户/组时ec2:ModifyInstanceAttribute
-当用户/组被拒绝时,这将有助于通过为实例启用终止保护:默认情况下,您可以终止您启动的任何实例。如果您想防止实例意外终止,您可以为实例启用终止保护。
也就是说,一旦您启用了终止保护,任何未经许可使用的人ec2:ModifyInstanceAttribute
都无法终止这些实例。
显然,分别受限制的帐户将无法再为这些对自己资源的调用提供便利。
此外,这不会阻止他们运行一个花哨的集群计算 8 个超大型实例左右,从而产生相应的成本;)
根据您的设置/环境,您可能希望改为查看整合账单,它本质上提供了一种将一个或多个 AWS 账户收集到另一个账户下的方法,该账户为其他账户使用的资源付费。
虽然这主要是一个会计功能,但它也可以用来区分关注的领域——例如,促进单独的开发和生产账户以实现各自独立操作是很常见的,尤其是在 IAM 权利等方面。
介绍性博文New AWS Feature: Consolidated Billing提供了很好的概述,以下是AWS Consolidated Billing Guide中关于您的明显使用案例的相关主题:
支付账户将支付链接账户的所有费用。 但是,每个链接账户在其他方面都是完全独立的(注册服务、访问资源、使用 AWS 高级支持等)。支付账户所有者无法访问属于关联账户所有者的数据(例如,他们在 Amazon S3 中的文件)。每个账户所有者使用他们自己的 AWS 凭证来访问他们的资源(例如,他们自己的 AWS 秘密访问密钥)。 [强调我的]
显然,此功能针对较大的客户,但根据您的场景,您可能能够提出一个解决方案来根据需要分离您的 AWS 账户和资源。