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

特定用户无法在AWS私有子网启动EC2实例的权限问题

问题原因及解决方案

问题原因

在私有子网启动EC2实例时,你应该是给实例指定了关联IAM角色ABC-CDE-webserver,而公有子网启动的实例没关联这个角色,所以能正常创建。AWS的安全机制要求:当用户需要将IAM角色传递给EC2实例(让实例拥有该角色的权限)时,必须明确拥有iam:PassRole权限,否则会触发权限拒绝错误。你的现有策略里完全没包含这个权限,所以才会报错。

调整后的IAM策略

需要在原策略中添加一条新的权限声明,允许对目标角色执行iam:PassRole操作,同时通过Condition限制只能将该角色传递给EC2服务,最小化权限范围:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:DescribeInstances",
                "ec2:Describe*",
                "ec2:CreateSnapshot",
                "ec2:CreateImage",
                "ec2:CreateKeyPair",
                "ec2:CreateTags",
                "ec2:RunInstances",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeImages",
                "ec2:StartInstances",
                "ec2:DescribeVpcs",
                "ec2:CreateSecurityGroup",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeSubnets",
                "ec2:DescribeKeyPairs"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowPassRoleToEC2",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::ACCOUNT_ID:role/ABC-CDE-webserver",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "ec2.amazonaws.com"
                }
            }
        }
    ]
}

注意:把上面的ACCOUNT_ID替换成你的AWS账号ID(12位数字)。

额外说明

添加Condition是为了确保这个iam:PassRole权限只能用于EC2服务,不能被用来给其他AWS服务传递该角色,遵循最小权限原则,提升安全性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:15:37