AWS IAM 策略仅列出基于 EC2 标签的实例

Dav*_*e M 5 amazon-web-services amazon-iam

我使用以下权限策略创建了 IAM 角色

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Project": "Phoenix"
                }
            }        
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

第三方应用程序使用与 IAM 策略关联的角色 ARN 来描述 EC2 实例。目标是仅允许应用程序描述标记为 Project=Phoenix 的 EC2 实例。问题是应用程序收到错误“ AWS 凭证没有足够的权限来执行操作”,因此根本没有描述 EC2。有 2 个实例具有匹配的标签。

如果我从策略中删除条件,DescribeInstances 会起作用,但应用程序会从任何指定的 AWS 区域获取所有 EC2。我需要将返回的 EC2 列表限制为仅标记为 Project=Phoenix 的实例。

还尝试使用 Project=Phoenix 标记 IAM 角色作为测试,但出现同样的错误。

我是否为目标正确使用和配置 IAM 角色和策略?我需要调整什么?

编辑:我尝试根据子网关联来限制范围,而不是 EC2 标签

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances"
            ],
            "Resource": "arn:aws:ec2:us-east-1:123456789012:subnet/subnet-00bc6a6522a37z348"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

访问级别=无/资源=无/请求条件=无

“此策略定义了一些不提供权限的操作、资源或条件。要授予访问权限,策略必须具有具有适用资源或条件的操作。”