Amazon ec2 AWS IAM对EC2和x2013的许可;控制对具有特定区域的特定实例的访问

Amazon ec2 AWS IAM对EC2和x2013的许可;控制对具有特定区域的特定实例的访问,amazon-ec2,amazon-iam,amazon-vpc,Amazon Ec2,Amazon Iam,Amazon Vpc,我正在尝试与IAM一起设置一个组策略,以便为特定区域内具有特定专有网络的用户提供访问权限。参考AWS文档时,尝试使用vpc ID过滤实例,因为resource标记不与ec2一起使用(如果ResourceTag与ec2一起使用,则ResourceTag将是更好的选择)。 为相同的创建了以下规则,但没有帮助 { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:RunInstance

我正在尝试与IAM一起设置一个组策略,以便为特定区域内具有特定专有网络的用户提供访问权限。参考AWS文档时,尝试使用vpc ID过滤实例,因为resource标记不与ec2一起使用(如果ResourceTag与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不能很好地为我提供资源

{
    "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过滤器是不可能实现的

请参考图片以获取我的实例的资源标签

如能及时回复,我们将不胜感激

提前谢谢


我已经与AWS解决方案架构师讨论了以下更新

EC2的descripe*API还不能局限于某些资源。 在EC2资源级权限的初始版本中,我们重点关注创建新资源或修改现有资源的操作。 有关EC2中支持资源级别权限的操作的完整列表,请参阅

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

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

IAM策略声明的“条件”部分支持资源标签、子网、安全组和vpc,但仅支持某些操作–有关可用密钥,请参阅。但是,描述*API的条件不支持资源标签、子网、安全组和vpc



最后,我以解决方法结束,将用户限制为仅使用区域

因此目前无法使用IAM,唯一的方法是使用
ResourceTag
。好奇他们为什么不为你工作?我一直在与AWS支持部门互动,以下是他们的回应:

不幸的是,目前没有办法做到这一点。当我们这样做的时候 现在为EC2资源提供资源级权限(更多信息 在这里 ) 不允许基于特定VPC有条件地控制访问 支持

这是因为此链接:显示支持的EC2 API操作数量有限,并且没有一个支持VPC作为ARN

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

解决方法是使用大多数API调用都可用的条件语句“ResourceTag/tag key”。因此,您可以潜在地使用“Control”:“Allow”标记实例,并且在要附加到相关用户的策略中不包括创建或删除标记权限。您的策略如下所示:

{
    "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"
                }
            }
        }
    ]
}
然后,您可以使用其
子网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策略已受区域限制,因此此策略仅适用于您试图限制的用户所在的特定区域

希望这有帮助