标题已经说明了问题。
在主AWS帐户中,我有几个个人帐户,即AWS身份和访问管理(IAM)用户。我想将某些IAM用户分配到组中,并防止他们终止某些Amazon EC2实例,注销某些Amazon Machine Images (AMIs)等。
如果他们只是在使用自己的东西,我不介意,但我不希望他们碰我的东西。
这可能吗?
标题已经说明了问题。
在主AWS帐户中,我有几个个人帐户,即AWS身份和访问管理(IAM)用户。我想将某些IAM用户分配到组中,并防止他们终止某些Amazon EC2实例,注销某些Amazon Machine Images (AMIs)等。
如果他们只是在使用自己的东西,我不介意,但我不希望他们碰我的东西。
这可能吗?
AWS刚刚宣布Amazon EC2和Amazon RDS的资源级权限,以解决IAM在EC2和RDS中支持方面的长期短板(与其他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身份和访问管理(IAM)原则上支持两者,但并非每个AWS产品/服务都提供基于资源的限制; 不幸的是,Amazon EC2就是其中之一,甚至作为这种差异的示例,参见与其他AWS产品集成:
以下表格总结了您是否可以授予IAM权限来控制对服务的操作、资源或两者的访问。例如,您可以使用IAM控制用户对Amazon EC2操作的访问,但无法使用IAM控制用户对AMI、卷、实例等的访问。[强调我的]
ec2:DeregisterImage
- 当用户/组被拒绝时,具有明显效果
- ec2:ModifyInstanceAttribute
- 当用户/组被拒绝时,可以通过为实例启用终止保护来帮助:ec2:ModifyInstanceAttribute
的任何人都无法终止这些实例。根据您的设置/环境,您可能希望考虑使用 Consolidated Billing,它提供了一种将一个或多个 AWS 帐户聚合到另一个帐户下支付其他帐户所使用资源的方法。
虽然这主要是一个会计功能,但也可以用于分离关注区域 - 例如,为了实现独立操作,通常会使用单独的开发和生产帐户,尤其是在 IAM 权限等方面。
介绍性博客文章 New AWS Feature: Consolidated Billing 提供了很好的概述,这里是关于您明显使用情况的 AWS Consolidated Billing Guide 相关主题:
付费账户将为所有关联账户的费用进行结算。然而,每个关联账户在其他方面完全独立(注册服务、访问资源、使用AWS高级支持等)。付费账户所有者无法访问属于关联账户所有者的数据(例如,他们在Amazon S3中的文件)。每个账户所有者使用自己的AWS凭证来访问其资源(例如,他们自己的AWS Secret Access Key)。显然,此功能针对较大的客户,但根据您的情况,您可能能够想出解决方案,以根据需要分离您的AWS账户和资源。