首页 文章

EC1的AWS IAM权限 - 控制特定区域的特定实例的访问

提问于
浏览
2

我正在尝试使用IAM设置组策略,以便使用特定的vpc访问特定区域的用户 . 在引用AWS文档时,尝试使用vpc ID来过滤实例,因为资源标记不适用于ec2(如果使用EC2,ResourceTag将是更好的选择) . 为此创建了以下规则,但它没有帮助,

{   "Version": "2012-10-17",  
"Statement": [    {
     "Action": [
             "ec2:RunInstances",
             "ec2:StartInstances",
             "ec2:Describe*" ],
     "Resource": "*",
     "Effect": "Allow",
     "Condition": {
     "StringEquals": {
     "ec2:Vpc": "arn:aws:ec2:us-west-2:*:vpc/vpc-123456"
       }
     }
    }    ] }

结果显示EC2页面上“获取实例数据时出错” .

我有什么建议可以解决这个问题吗?

谢谢


谢谢你回复Rico :-)

不幸的是,根据我的要求,给定的政策对我不起作用 .

需要为特定区域的用户提供访问权限,并且用户应该可以访问基于特定资源标记或VPC或子网或安全组的实例 .

用户不应具有启动或编辑任何内容的权限,用户应该能够根据上面提到的过滤器列出实例,以查看实例详细信息(只读) .

通过考虑上述方面,我已经定义了具有双重条件的类似策略,因为ARN对我而言不适合使用Resources .

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*",
        "Condition": {
        "StringEquals": {
        [   
        "ec2:Region": "us-west-2",
        "ec2:ResourceTag/Name": "Test"
       ]
     }
   }
  }  
 ]
}

当我使用ARN作为资源时,它对我来说不适用于以下格式,

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "arn:aws:ec2:us-west-2:1234567890:*/*",
        "Condition": {
        "StringEquals": {
    "ec2:ResourceTag/Name": "Test"
     }
   }
 }  
 ]
}

我尝试过使用资源标记,实例ID,安全组和子网过滤实例 .

现在我从你的回复中了解到目前无法使用VPC过滤器 .

请参阅图像以获取我的实例的资源标记 .

enter image description here

您的及时回复将受到高度赞赏 .

提前致谢!


我已经与AWS Solution架构师讨论了以及给定的以下更新,

EC2的Describe * API不能仅限于某些资源 . 在EC2的资源级权限的初始版本中,我们专注于创建新资源或修改现有资源的那些操作 . 有关EC2中支持资源级权限的操作的完整列表,请参阅http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html#ec2-supported-iam-actions-resources .

我们正在努力将对资源级访问控制的支持扩展到更多操作,但我们无法提供可用于Describe * API的日期 .

是否支持资源级权限取决于操作,请参阅上面的链接 . 特别是,目前无法将EC2描述*操作限制为资源,但上述ARN可用于限制修改资源的操作 .

IAM策略语句的"Condition"部分支持资源标记,子网,安全组和vpc,但仅适用于某些操作 - 有关可用密钥,请参阅http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html#amazon-ec2-keys . 但是,Describe * API的条件不支持资源标记,子网,安全组和vpc .


最后,我只是通过限制只有区域的用户来结束解决方法 .

1 回答

  • 1

    因此目前使用IAM是不可能的,唯一的方法是使用 ResourceTag . 好奇他们为什么不为你工作?我一直在与AWS Support进行交互,这是他们的回应:

    不幸的是,目前还没有办法做到这一点 . 虽然我们现在提供EC2资源的资源级别权限,但是这里有更多信息... http://aws.typepad.com/aws/2013/07/resource-permissions-for-ec2-and-rds-resources.html )不支持基于特定VPC有条件地控制访问 .

    这是因为此链接:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html#ec2-supported-iam-actions-resources表示支持的EC2 API操作数量有限,并且它们都不支持将VPC作为ARN .

    “ec2:Describe *”也有一个限制,它根本不能由资源ARN指定,也不能有条件地控制 .

    解决方法是使用大多数API调用可用的条件语句“ResourceTag / tag-key” . 因此,您可以使用“控制”:“允许”标记您的实例,并且不要在要附加到相关用户的策略中包含创建或删除标记权限 . 您的政策如下:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "ec2:Describe*",
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "ec2:StartInstances",
                    "ec2:StopInstances",
                    "ec2:RebootInstances",
                    "ec2:TerminateInstances"
                ],
                "Resource": "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*",
                "Condition": {
                    "StringEquals": {
                        "ec2:ResourceTag/Control": "Allow"
                    }
                }
            }
        ]
    }
    

    然后,您可以限制用户使用 subnet-id 在特定VPC中启动实例:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "ec2:RunInstances",
                "Resource": [
                    "arn:aws:ec2:region:account:instance/*",
                    "arn:aws:ec2:region:account:subnet/SUBNET-ID-HERE",
                    "arn:aws:ec2:region:account:volume/*",
                    "arn:aws:ec2:region:account:network-interface/*",
                    "arn:aws:ec2:region:account:key-pair/*",
                    "arn:aws:ec2:region:account:security-group/*",
                    "arn:aws:ec2:region::image/ami-*"
                ]
            }
        ]
    }
    

    要回答特定区域的问题,IAM策略已受区域限制,因此此策略仅适用于您尝试限制的用户所在的特定区域 .

    希望这可以帮助 .

相关问题