我由一个运行不同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了两个策略并应用于同一个用户
显示政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "***", "Effect": "Allow", "Action": [ "ec2:Describe*" ], "Resource": [ "*" ] } ] }
{ "Version": "2012-10-17", "Statement": [ { "Sid": "***", "Effect": "Allow", "Action": [ "ec2:*" ], "Resource": [ "arn:aws:ec2:eu-west-1:%account-id%:instance/i-%instance-id%" ] } ] }