如何为正在运行的EC2实例分配新权限

时间:2017-07-17 19:50:31

标签: amazon-ec2 permissions roles amazon-iam

我正在使用EC2执行一些测试,并且我希望将权限限制为已经运行的实例,仅限于描述其他实例(例如,如果它请求创建新实例,则应拒绝该请求)。

我使用以下政策创建了IAM角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeImages",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeAvailabilityZones",
                "ec2:RunInstances",
                "ec2:TerminateInstances",
                "ec2:StopInstances",
                "ec2:StartInstances"
            ],
            "Resource": "*"
        }
    ]
}

这在理论上应该阻止我在已经运行的实例上登录时创建新实例,但它没有(我使用boto库进行测试,ec2.run_instances())。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

附加到IAM实例角色的策略仅影响使用实例角色凭据发出的请求。它对使用其他凭据(例如访问密钥ID和IAM用户的秘密)发出的请求没有任何影响,即使请求来自实例上运行的代码。

在这种情况下,在这里,有意外的权限可用,可能的解释是另一组凭证存储在实例上,而代码正在使用那些没有开发人员意识到的权限。

这可能很好地说明了为什么在EC2上运行的代码中使用角色凭证,而不是在实例上存储其他凭据的最佳做法的一个原因。< / p>