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



我正在使用 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()(。

任何帮助将不胜感激。

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

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

这也许很好地说明了为什么在 EC2 上运行的代码中使用角色凭证而不在实例上存储其他凭证被认为是最佳实践的一个原因。

最新更新