在AWS中创建IAM策略以保护具有特定ID的EC2实例

问题描述 投票:0回答:3

我正在研究AWS托管的项目。该控制台可以被多个用户访问。我创建了一个IAM策略,该策略允许特定用户创建实例和卷,但他们不应访问或查看控制台中具有特定实例ID的现有实例。

我的自定义策略如下,但未按预期工作:

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
          "Action":[
            "ec2:RunInstances"
         ],
         "Resource":"*"
      },
      {
         "Effect":"Deny",
         "Action":[
            "ec2:StartInstances",
            "ec2:StopInstances",
            "ec2:RebootInstances"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "ec2:ResourceTag/Owner":"Admin"
            }
         }
      }
   ]
}
amazon-web-services amazon-iam aws-security-group
3个回答
0
投票

如果字符串不等于aws:userid或aws:username,您尝试在操作ec2:DescribeInstances中使用“拒绝”效果,则将内联策略添加到附加到实例的角色上。


0
投票

ec2:CreateVolume授予创建Amazon EBS卷的权限。创建卷的行为与Amazon EC2实例无关。卷仅通过AttachVolume命令与实例关联。

AttachVolume授予启动new Amazon EC2实例的权限。它与现有实例无关。

因此,这两个权限都不会使用指定实例ID的条件。

要授予在管理控制台中查看Amazon EC2实例的权限,请使用ec2:RunInstances。但是,用户将具有列出all实例或none的权限。无法限制ec2:DescribeInstances调用返回的实例。

[如果您希望限制用户的此类信息,那么您将需要创建自己的“中间”代码来过滤信息(因此他们调用您的代码,该代码将检索所有实例,但仅返回某些实例),或者您可以为每个用户使用单独的AWS账户,以使他们看不到其他用户的资源。


0
投票

如果您希望控制其他IAM用户无法看到其他IAM用户创建的实例,那么这是不可能的,因为describe instance api不接受资源级别权限。

但是您可以选择限制IAM用户对其他用户创建的实例执行操作(启动/停止/重新启动...等)。

DescribeInstances()

第2部分:

尝试使用此:

{“ Version”:“ 2012-10-17”,“声明”:[{“效果”:“允许”,“动作”:[“ ec2:StartInstances”,“ ec2:StopInstances”,“ ec2:RunInstances”,“ ec2:RebootInstances”],“ Resource”:“ arn:aws:ec2::instance / ”,“条件”:{“ StringEquals”:{“ ec2:ResourceTag / Owner”:“ $ {aws:username}”}}},{“效果”:“允许”,“ Action”:“ ec2:DescribeInstances”,“资源”:“”}]}

确保您的实例具有必需的标记-键值对

© www.soinside.com 2019 - 2024. All rights reserved.