You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置IAM策略仅访问特定区域EC2实例遇权限问题求助

问题原因及解决方法

核心问题

EC2的DescribeInstances等查询类操作不支持资源级权限控制,你只指定arn:aws:ec2:REGION:ACCOUNT:instance/*作为Resource,这类操作会因为找不到匹配的权限规则而报错。

AWS的IAM权限逻辑中,部分EC2操作(比如启动、终止实例)支持资源级权限,但像DescribeInstances、DescribeVolumes这类全局查询操作,必须将Resource设为*,同时通过Condition来限制访问的区域。

修正后的策略

你需要拆分权限规则,分别处理支持资源级的操作和查询类操作,同时通过Condition限制区域:

{
    "Version": "2012-10-17",
    "Statement": [
        // 允许针对指定区域实例的所有支持资源级的EC2操作
        {
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances",
                "ec2:RebootInstances",
                "ec2:CreateTags",
                "ec2:DeleteTags"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:REGION:ACCOUNT:instance/*"
        },
        // 允许指定区域内的查询类操作,这类操作不支持资源级权限
        {
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeRegions",
                "ec2:DescribeVolumes"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": "REGION"
                }
            }
        }
    ]
}

如果想简化,也可以用ec2:*但分两条规则,同时遵循最小权限原则:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "ec2:*",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:REGION:ACCOUNT:instance/*"
        },
        {
            "Action": "ec2:*",
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": "REGION"
                }
            },
            "NotAction": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances",
                "ec2:RebootInstances",
                "ec2:CreateTags",
                "ec2:DeleteTags"
            ]
        }
    ]
}

验证逻辑

  • 执行describe-instances时,会匹配第二条规则的Resource: *和区域条件,从而获得权限。
  • 针对实例的操作(比如启动)会匹配第一条规则的实例ARN,确保只能操作指定区域的实例。

内容的提问来源于stack exchange,提问作者laurent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 08:43:29