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

Posted

技术标签:

【中文标题】AWS EC2 启动/停止实例的 IAM 策略【英文标题】:IAM Policy for AWS EC2 start/stop instance 【发布时间】:2015-11-11 16:43:20 【问题描述】:

我希望用户能够登录到 aws 帐户并启动和停止一个特定的 ec2-instance。 到目前为止,我发现 ec2 describe 仅适用于资源中的全部星号“*”。 用户可以登录,查看所有实例,但由于出现权限被拒绝错误,他无法启动或停止实例:(

这是我的政策


"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"

]

【问题讨论】:

我最初开始阅读这篇文章,仍然无法弄清楚它有什么问题blogs.aws.amazon.com/security/post/Tx2KPWZJJ4S26H6/… 然后有一个很好的工具,但似乎只要我限制资源启动/停止不再工作了...policysim.aws.amazon.com 【参考方案1】:

答案是,你不能。

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

ec2:AvailabilityZone ec2:EbsOptimized ec2:InstanceProfile ec2:InstanceType ec2:PlacementGroup ec2:区域 ec2:ResourceTag/tag-key ec2:RootDeviceType ec2:租赁

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

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

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

希望这会有所帮助。

【讨论】:

如果回答了您的问题,请不要忘记将答案标记为正确 :) 我试图支持它,但我没有足够的声誉 你不需要投票,你只需要点击勾号将其标记为正确:)

以上是关于AWS EC2 启动/停止实例的 IAM 策略的主要内容,如果未能解决你的问题,请参考以下文章

AWS IAM 策略拒绝对自动扩展组或 ECS 集群内的任何 EC2 实例的权限

创建 AWS IAM 策略,将正在运行的实例限制为特定安全组

编写 IAM 策略,其中任何具有 EC2 完全访问权限的用户都不能删除 AWS 账户中任何其他用户的实例

AWS Elasticsearch Service IAM 基于角色的访问策略

AWS Parameter Store IAM 策略无法正常工作

使用 Lambda 函数覆盖 AWS Auto Scaling 策略