首页 > 解决方案 > 用于限制 EC2 实例上的读取访问的 AWS IAM 策略

问题描述

我正在尝试创建 AWS IAM 策略来限制对 EC2 实例的读取访问。

目标:我在 AWS 中有许多 EC2 实例和许多不同的用户,我希望有一组用户只能看到特定的 EC2 实例,而不是全部。

有没有可能这样做?

我试图通过标记实例来限制访问,但如果我认为正确,Describe* API 不能受 Condition 限制,也不能受 Resource 限制。

标签: amazon-web-servicesamazon-ec2aws-iamec2-api-toolsamazon-iam

解决方案


不幸的是,唯一干净的方法是拥有多个 AWS 账户(最好在一个组织下),然后将不同的用户组限制到不同的账户。

一些(但不是全部)操作支持资源级权限,因此您可以编写如下策略来限制 IAM 用户可以启动/停止/重启的 EC2 实例:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Environment": "Staging"
                }
            },
            "Resource": [
                "arn:aws:ec2:us-east-1:123456789012:instance/*"
            ],
            "Effect": "Allow"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        }
    ]
}

此外,您可以限制 SSH 密钥对或 Windows 凭证的分发,以便只有某些用户可以物理访问给定的 EC2 实例。


推荐阅读