AWS IAM 仅授予用户对特定 VPC 的读取权限

AWS IAM grant user read access to specific VPC only

我已经尝试 limit access to a VPC 但没有成功。也许从另一边解决问题是个更好的主意,但我也无法做到这一点。

我试过:

受标签限制 如图所示here:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/client": "<client>"
                }
            }
        }
    ]
}

VPC 限制 建议here:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1508450090000",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*"
            ],
            "Resource": [
                "arn:aws:ec2:<region>:<account>:subnet/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:Vpc": "arn:aws:ec2:<region>:<account>:vpc/<vpc_id>"
                }
            }
        }
    ]
}

这两种策略都导致甚至不列出任何实例,请参见屏幕截图。

这对我来说似乎是一个非常明显且普遍需要的政策。 任何帮助表示赞赏。

根据文档:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_IAM.html#readonlyvpciam

The following policy grants users permission to list your VPCs and their components. They can't create, update, or delete them.

{
    "Version": "2012-10-17",
    "Statement":[{
    "Effect":"Allow",
    "Action":["ec2:DescribeVpcs",
              "ec2:DescribeSubnets",
              "ec2:DescribeInternetGateways",
              "ec2:DescribeEgressOnlyInternetGateways",
              "ec2:DescribeVpcEndpoints",
              "ec2:DescribeNatGateways",
              "ec2:DescribeCustomerGateways",
              "ec2:DescribeVpnGateways",
              "ec2:DescribeVpnConnections",
              "ec2:DescribeRouteTables",
              "ec2:DescribeAddresses",
              "ec2:DescribeSecurityGroups",
              "ec2:DescribeNetworkAcls",
              "ec2:DescribeDhcpOptions",
              "ec2:DescribeTags",
              "ec2:DescribeInstances"],
    "Resource":"*"
    }
  ]
}

此外,如果您有多个 VPC,您甚至不想让它们看到,也许您应该考虑创建一个子账户,只包含它们应该在其中可见的网络部分:

  1. 设置整合账单

第一步,登录您的 AWS 账户并单击 "Sign up for Consolidated Billing" 按钮。

  1. 创建一个新帐户

在未登录的浏览器中,您需要像这样再次注册 AWS:

为这个新帐户指定适合您客户的名称。请记下您注册时使用的电子邮件地址。

  1. Link 帐户

在您的主帐户中,返回到 ConsolidatedBilling 并单击“发送请求”按钮。为您的新子帐户提供电子邮件地址。

您应该会收到一封电子邮件到您的新子帐户的电子邮件地址。复制激活link并粘贴到您登录子账户的浏览器中。

您的帐户现已 linked!

  1. 创建您的客户端 VPC 并启用客户端所需的服务。

接下来,您可以创建客户端需要的VPC和服务,并通过上面的策略限制他们的访问。

您不能以您想要的方式限制 Describe* 调用。

可以限制 create 资源的调用(例如授予在特定 VPC 中启动实例的权限),但调用 list无法限制资源。

如果您需要能够阻止某些用户列出资源,那么您要么需要构建自己的前端,以便在将信息呈现给用户之前对其进行过滤,或者使用多个 AWS 账户,因为它们彼此完全隔离。