如何授予对已经运行的EC2实例的IAM访问权限

背景

我由一个运行不同EC2计算机的企业主(分段/产品等)在根级别交付了一个AWS账户。 我想要做的只是创build具有受限访问权限的不同IAM帐户。 例如,现在我想创build一个只有运行权限的IAM账户,终止一个特定的EC2实例。

我曾经尝试过

我基本上遵循这里的指示。 我创build了一个IAM组(称为superAdmin ),并创build了一个新的IAM帐户,并为该组分配了一个新用户( user_1 )。

然后我开始创build一个策略 ,并将其附加到superAdmin组,策略如下所示

 { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt15094*****", "Effect": "Allow", "Action": [ "ec2:*" ], "Resource": [ "arn:aws:ec2:eu-west-1:%my-account-id%:instance/i-%instance-id%" ] } ] } 

我确定资源遵循资源策略点。 (注意:这些情况在爱尔兰运行,据此与eu-west-1

然后我调用这个策略staging_access并将其附加到user_1 (但也删除了所有其他策略):

在这里输入图像说明

问题

问题是,当我login为user_1 ,我什么都看不到:

在这里输入图像说明

当我去实例页面,什么也没有显示:

在这里输入图像说明

更新

我注意到,如果我只是简单地使资源成为一张通配符卡片,一切都会奏效:

 { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1509458879000", "Effect": "Allow", "Action": [ "ec2:*" ], "Resource": [ "*" ] } ] } 

有趣的部分是,即使我将资源设置为所有ec2上的通配符,如下所示:

  "Resource": [ "arn:aws:ec2:*" ] 

它仍然不起作用。 这意味着访问控制台UI是与ec2不同的服务名称空间 。

您正在根据EC2实例ID定义策略。 您需要添加更多权限,以便用户可以显示诸如密钥对,卷,实例等内容。从命令行分配权限以pipe理EC2实例(可能非常紧密)与需要的权限访问亚马逊pipe理控制台。

此外,您的政策有%字符。 这是真的在你的政策,还是只是在那里显示你的问题?

[更新]

控制访问资源的更好方法是使用标签。 例如,要仅允许用户XYZ访问某些EC2实例,请标记这些实例。 这是一个使用标签的示例策略。 此策略允许用户列出所有EC2实例,但仅允许对使用其用户名标记的实例执行所有EC2操作。

 { "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "ec2:*", "Resource" : "*", "Condition" : { "StringEquals" : { "ec2:ResourceTag/UserName" : "${aws:username}" } } }, { "Effect" : "Allow", "Action" : "ec2:Describe*", "Resource" : "*" }, { "Effect" : "Deny", "Action" : [ "ec2:CreateTags", "ec2:DeleteTags" ], "Resource" : "*" } ] } 

解决答案

这不是我正在寻找的答案,但它能满足我的需求。 我创build了两个策略并应用于同一个用户

政策1:给他们“旁观者”接触一切:

显示政策

  { "Version": "2012-10-17", "Statement": [ { "Sid": "***", "Effect": "Allow", "Action": [ "ec2:Describe*" ], "Resource": [ "*" ] } ] } 

策略2:允许他们控制特定的 IAM

 { "Version": "2012-10-17", "Statement": [ { "Sid": "***", "Effect": "Allow", "Action": [ "ec2:*" ], "Resource": [ "arn:aws:ec2:eu-west-1:%account-id%:instance/i-%instance-id%" ] } ] }