Amazon Virtual Private Cloud
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

控制访问 Amazon VPC 资源

您的安全凭证使 AWS 中的服务可以识别您,并授予您对 AWS 资源 (例如您的 Amazon VPC 资源) 的无限制使用权限。利用 AWS Identity and Access Management (IAM) 可在不共享您的安全凭证的情况下允许其他用户、服务和应用程序使用您的 Amazon VPC 资源。您可以通过向用户授予使用特定 Amazon EC2 API 操作的权限,选择允许完全使用或有限使用您的资源。有些 API 操作支持资源级权限,这些权限使您可以控制用户可以创建或修改的特定资源。

重要

当前,不是所有 Amazon EC2 API 操作都支持资源级权限。如果 Amazon EC2 API 操作不支持资源级权限,那么,您可以向用户授予使用该操作的权限,但是必须为策略语句的资源元素指定 *。有关如何执行此操作的示例,请参阅以下示例策略:1. 管理 VPC。我们以后会为其他 API 操作增加支持,并且为 Amazon EC2 资源添加 ARN。有关哪些 ARN 可以与哪些 Amazon EC2 API 操作一起使用以及每个 ARN 支持的条件密钥的信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 Amazon EC2 API 操作支持的资源和条件

有关如何创建用于 Amazon EC2 的 IAM 策略、EC2 API 操作支持的资源以及 Amazon EC2 策略示例的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的用于 Amazon EC2 的 IAM 策略部分。

针对 AWS CLI 或软件开发工具包的策略示例

以下示例显示了您可用于控制 IAM 用户 Amazon VPC 权限的策略语句。这些示例面向使用 AWS CLI 或 AWS 软件开发工具包的用户。

有关使用 ClassicLink 的策略示例,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 CLI 或 SDK 策略示例

1. 管理 VPC

以下策略允许用户创建和管理 VPC。可向一组网络管理员附加此策略。Action 元素指定与 VPC、子网、Internet 网关、客户网关、虚拟专用网关、VPN 连接、路由表、弹性 IP 地址、安全组、网络 ACL 和 DHCP 选项组关联的 API 操作。策略还会允许组运行、停止、开始和终止示例。通过它,这组管理员还可列出 Amazon EC2 资源。

此策略使用通配符指定每种对象的所有操作 (例如 *SecurityGroup*)。此外,还可显式地列出每项操作。如果使用通配符,则要注意,如果所添加的新操作在名称中包括策略中的任何通配符字符串,则策略将自动允许该组访问这些新操作。

Resource 元素使用通配符表示用户可以通过这些 API 操作指定所有资源。在 API 操作不支持资源级权限的情况下,也需要 * 通配符。

Copy
{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":["ec2:*Vpc*", "ec2:*Subnet*", "ec2:*Gateway*", "ec2:*Vpn*", "ec2:*Route*", "ec2:*Address*", "ec2:*SecurityGroup*", "ec2:*NetworkAcl*", "ec2:*DhcpOptions*", "ec2:RunInstances", "ec2:StopInstances", "ec2:StartInstances", "ec2:TerminateInstances", "ec2:Describe*"], "Resource":"*" } ] }

2. Amazon VPC 的只读策略

以下策略允许用户列出您的 VPC 及其组件。但用户无法创建、更新或删除它们。

Copy
{ "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":"*" } ] }

3. Amazon VPC 的自定义策略

以下策略允许用户启动实例、停止实例、开始实例、终止实例以及说明 Amazon EC2 和 Amazon VPC 的可用资源。

该策略中的第二个语句通过显式拒绝权限,防止任何其他策略可能允许用户访问更大范围的 API 操作。

Copy
{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":["ec2:RunInstances", "ec2:StopInstances", "ec2:StartInstances", "ec2:TerminateInstances", "ec2:Describe*"], "Resource":"*" }, { "Effect":"Deny", "NotAction":["ec2:RunInstances", "ec2:StopInstances", "ec2:StartInstances", "ec2:TerminateInstances", "ec2:Describe*"], "Resource":"*" } ] }

4. 在特定子网中启动实例

以下策略允许用户在特定子网中启动实例,以及在请求中使用特定安全组。该策略通过为 subnet-1a2b3c4dsg-123abc123 指定 ARN 实现上述目的。如果用户尝试在其他子网中启动实例或使用其他的安全组,请求将失败 (除非其他策略或声明授予用户相应的权限)。

该策略还授予使用网络接口资源的权限。在子网中启动时,RunInstances 请求会默认创建一个主网络接口,因此,用户在启动实例时需要有创建此资源的权限。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:subnet/subnet-1a2b3c4d", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/sg-123abc123" ] } ] }

5. 在特定 VPC 中启动实例

以下策略允许用户在特定 VPC 中的任意子网中启动实例。此策略通过将条件密钥 (ec2:Vpc) 应用于子网资源来实现上述目的。

该策略还授予用户仅使用具有标签“department=dev”的 AMI 启动实例的权限。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account:subnet/*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-1a2b3c4d" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region::image/ami-*", "Condition": { "StringEquals": { "ec2:ResourceTag/department": "dev" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*" ] } ] }

6. 在 VPC 中管理安全组

以下策略允许用户创建和删除特定 VPC 内任何安全组的入站和出站规则。此策略通过将条件密钥 (ec2:Vpc) 应用于 AuthorizeRevoke 操作的安全组资源,来实现此目的。

第二条语句授予用户描述所有安全组的权限。这一授权是让用户能够使用 CLI 修改安全组的必要条件。

Copy
{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress"], "Resource": "arn:aws:ec2:region:account:security-group/*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-1a2b3c4d" } } }, { "Effect": "Allow", "Action": "ec2:DescribeSecurityGroups", "Resource": "*" } ] }

7. 创建和管理 VPC 对等连接

以下是您可以用于管理 VPC 对等连接的创建和修改的策略示例。

a. 创建 VPC 对等连接

以下策略仅允许用户使用标记有 Purpose=Peering 的 VPC 来创建 VPC 对等连接请求。第一条语句对 VPC 资源应用条件键 (ec2:ResourceTag)。请注意,CreateVpcPeeringConnection 操作的 VPC 资源始终为请求者 VPC。

第二条语句向用户授予创建 VPC 对等连接资源的权限,因此使用 * 通配符代替特定资源 ID。

Copy
{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": "ec2:CreateVpcPeeringConnection", "Resource": "arn:aws:ec2:region:account:vpc/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Peering" } } }, { "Effect": "Allow", "Action": "ec2:CreateVpcPeeringConnection", "Resource": "arn:aws:ec2:region:account:vpc-peering-connection/*" } ] }

以下策略允许 AWS 账户 333333333333 中的用户使用 us-east-1 区域中的任何 VPC 创建 VPC 对等连接,但是仅当接受对等连接的 VPC 是特定账户 (777788889999) 中的特定 VPC (vpc-aaa111bb) 时。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect":"Allow", "Action": "ec2:CreateVpcPeeringConnection", "Resource": "arn:aws:ec2:us-east-1:333333333333:vpc/*" }, { "Effect": "Allow", "Action": "ec2:CreateVpcPeeringConnection", "Resource": "arn:aws:ec2:region:333333333333:vpc-peering-connection/*", "Condition": { "ArnEquals": { "ec2:AccepterVpc": "arn:aws:ec2:region:777788889999:vpc/vpc-aaa111bb" } } } ] }

b. 接受 VPC 对等连接

以下策略仅允许用户接受来自 AWS 账户 444455556666 的 VPC 对等连接请求。这样有助于防止用户接受来自未知账户的 VPC 对等连接请求。第一条语句使用 ec2:RequesterVpc 条件键强制实施此策略。

该策略还向用户授予仅当 VPC 具有标签 Purpose=Peering 时才接受 VPC 对等请求的权限。

Copy
{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": "ec2:AcceptVpcPeeringConnection", "Resource": "arn:aws:ec2:region:account:vpc-peering-connection/*", "Condition": { "ArnEquals": { "ec2:RequesterVpc": "arn:aws:ec2:region:444455556666:vpc/*" } } }, { "Effect": "Allow", "Action": "ec2:AcceptVpcPeeringConnection", "Resource": "arn:aws:ec2:region:account:vpc/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Peering" } } } ] }

c. 删除 VPC 对等连接

以下策略允许账户 444455556666 中的用户删除任何 VPC 对等连接,使用指定 VPC vpc-1a2b3c4d (处于相同账户中) 的连接除外。该策略同时指定 ec2:AccepterVpcec2:RequesterVpc 条件密钥,因为 VPC 可能是原始 VPC 对等连接请求中的请求者 VPC 或对等方 VPC。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect":"Allow", "Action": "ec2:DeleteVpcPeeringConnection", "Resource": "arn:aws:ec2:region:444455556666:vpc-peering-connection/*", "Condition": { "ArnNotEquals": { "ec2:AccepterVpc": "arn:aws:ec2:region:444455556666:vpc/vpc-1a2b3c4d", "ec2:RequesterVpc": "arn:aws:ec2:region:444455556666:vpc/vpc-1a2b3c4d" } } } ] }

d. 在特定账户中工作

以下策略允许用户完全在特定账户中处理 VPC 对等连接。用户可以查看、创建、接受、拒绝和删除 VPC 对等连接,前提是它们都处于 AWS 账户 333333333333 中。

第一条语句允许用户查看所有 VPC 对等连接。在这种情况下,Resource 元素需要 * 通配符,因为此 API 操作 (DescribeVpcPeeringConnections) 当前不支持资源级权限。

第二条语句允许用户创建 VPC 对等连接,并允许访问账户 333333333333 中的所有 VPC 以便执行此操作。

第三条语句使用 * 通配符作为 Action 元素的一部分,以便允许执行所有 VPC 对等连接操作。条件密钥确保只能对与属于账户 333333333333 的 VPC 建立的 VPC 对等连接执行操作。例如,如果接受者或请求者 VPC 属于不同账户,则不允许用户删除 VPC 对等连接。用户无法与属于不同账户的 VPC 建立 VPC 对等连接。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:DescribeVpcPeeringConnections", "Resource": "*" }, { "Effect": "Allow", "Action": ["ec2:CreateVpcPeeringConnection","ec2:AcceptVpcPeeringConnection"], "Resource": "arn:aws:ec2:*:333333333333:vpc/*" }, { "Effect": "Allow", "Action": "ec2:*VpcPeeringConnection", "Resource": "arn:aws:ec2:*:333333333333:vpc-peering-connection/*", "Condition": { "ArnEquals": { "ec2:AccepterVpc": "arn:aws:ec2:*:333333333333:vpc/*", "ec2:RequesterVpc": "arn:aws:ec2:*:333333333333:vpc/*" } } } ] }

8. 创建和管理 VPC 终端节点

下面的策略授予用户创建、修改、查看和删除 VPC 终端节点的权限。所有 ec2:*VpcEndpoint* 操作均不支持资源级权限,因此,您必须针对 Resource 元素使用 * 通配符,以允许用户使用所有资源。

Copy
{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":"ec2:*VpcEndpoint*", "Resource":"*" } ] }

控制台的策略示例

您可以使用 IAM 策略向用户授予在 Amazon VPC 控制台中查看和使用特定资源的权限。您可以使用上一部分中的策略示例;但是,它们适用于使用 AWS CLI 或 AWS 开发工具包发出的请求。控制台使用其他 API 操作实现其功能,因此这些策略可能不会按预期方式起作用。

此部分演示使用户可以使用 VPC 控制台的特定部分的策略。

1. 使用 VPC 向导

您可以在 Amazon VPC 控制台中使用 VPC 向导创建、设置和配置 VPC,使它准备就绪可供使用。该向导根据您的要求提供不同的配置选项。想要了解更多有关使用 VPC 向导创建 VPC 的信息,请参阅 场景和示例

要使用户可以使用 VPC 向导,您必须向他们授予创建和修改组成所选配置的资源的权限。以下示例策略演示每个向导配置选项所需的操作。

注意

如果 VPC 向导在任何时候失败,则它会尝试断开并删除它创建的资源。如果您不向用户授予使用这些操作的权限,则这些资源保留在您的账户中。

选项 1:带单个公有子网的 VPC

第一个 VPC 向导配置选项创建带单个子网的 VPC。在 IAM 策略中,您必须向用户授予使用以下操作的权限,以便他们可以成功使用此向导选项:

  • ec2:CreateVpcec2:CreateSubnetec2:CreateRouteTableec2:CreateInternetGateway:用于创建 VPC、子网、自定义路由表和 Internet 网关。

  • ec2:DescribeAvailabilityZones:用于显示向导中的 Availability Zone (可用区) 列表和子网的 CIDR 块字段部分。即使用户要保留默认设置,他们也无法创建 VPC,除非显示这些选项。

  • ec2:DescribeVpcEndpointServices:显示向导的 VPC 终端节点部分。

  • ec2:AttachInternetGateway:用于将 Internet 网关连接到 VPC。

  • ec2:CreateRoute:用于在自定义路由表中创建路由。路由将流量指向 Internet 网关。

  • ec2:AssociateRouteTable:用于将自定义路由表关联到子网。

  • ec2:ModifyVpcAttribute:用于修改 VPC 的属性以启用 DNS 主机名称,以便在此 VPC 中启动的每个实例都收到一个 DNS 主机名称。

此策略中没有 API 操作支持资源级权限,因此您无法控制用户可以使用的特定资源。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcEndpointServices", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:ModifyVpcAttribute" ], "Resource": "*" } ] }

选项 2:带公有和私有子网的 VPC

第二个 VPC 向导配置选项用于创建具有公有和私有子网的 VPC 并提供用于启动 NAT 网关或 NAT 实例的选项。以下策略具有与前一个示例 (选项 1) 相同的操作,以及允许用户运行和配置 NAT 网关或 NAT 实例的操作。

无论您是要启动 NAT 实例还是 NAT 网关,都必须执行以下操作:

  • ec2:DescribeKeyPairs:显示现有密钥对列表并加载向导的 NAT 部分。

要创建 NAT 网关,必须执行以下操作 (启动 NAT 实例时不必执行这些操作):

  • ec2:CreateNatGateway:创建 NAT 网关。

  • ec2:DescribeNatGateways:检查 NAT 网关状态,直到它变为可用状态。

  • ec2:DescribeAddresses:列出您的账户中可用于与 NAT 网关关联的弹性 IP 地址。

要启动 NAT 实例,必须执行以下操作 (创建 NAT 网关时不必执行这些操作):

  • ec2:DescribeImages:用于查找已配置作为 NAT 实例运行的 AMI。

  • ec2:RunInstances:用于启动 NAT 实例。

  • ec2:AllocateAddressec2:AssociateAddress:用于向您的账户分配弹性 IP 地址,然后将它与 NAT 实例关联。

  • ec2:ModifyInstanceAttribute:用于禁用 NAT 实例的源/目标检查。

  • ec2:DescribeInstances:用于检查实例的状态,直到它处于运行状态。

  • ec2:DescribeRouteTablesec2:DescribeVpnGatewaysec2:DescribeVpcs:用于收集有关必须添加到主路由表的路由的信息。

以下策略允许用户创建 NAT 实例或 NAT 网关。

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcEndpointServices", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateInternetGateway", "ec2:CreateNatGateway", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:ModifyVpcAttribute", "ec2:DescribeKeyPairs", "ec2:DescribeImages", "ec2:RunInstances", "ec2:AllocateAddress", "ec2:AssociateAddress", "ec2:DescribeAddresses", "ec2:DescribeInstances", "ec2:ModifyInstanceAttribute", "ec2:DescribeRouteTables", "ec2:DescribeVpnGateways", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeNatGateways" ], "Resource": "*" } ] }

可以对 ec2:RunInstances 操作使用资源级权限来控制用户启动实例的能力。例如,您可以指定一个启用了 NAT 的 AMI 的 ID,以便用户只能通过此 AMI 启动实例。要查明向导用于启动 NAT 实例的 AMI,请作为拥有完全权限的用户登录 Amazon VPC 控制台,然后执行 VPC 向导的第二个选项。切换到 Amazon EC2 控制台,选择 Instances (实例) 页面,选择 NAT 实例,并记下用于启动它的 AMI ID。

以下策略仅允许用户使用 ami-1a2b3c4d 启动实例。如果用户尝试使用任何其他 AMI 启动实例,则启动会失败。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcEndpointServices", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:ModifyVpcAttribute", "ec2:DescribeKeyPairs", "ec2:DescribeImages", "ec2:AllocateAddress", "ec2:AssociateAddress", "ec2:DescribeInstances", "ec2:ModifyInstanceAttribute", "ec2:DescribeRouteTables", "ec2:DescribeVpnGateways", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-1a2b3c4d", "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:subnet/*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*" ] } ] }

选项 3:“VPC with public and private subnets and hardware VPN access (具有公有和私有子网以及硬件 VPN 访问的 VPC)”

第三个 VPC 向导配置选项将创建具有公有和私有子网的 VPC,并在您的 VPC 与您自己的网络之间创建 VPN 连接。在您的 IAM 策略中,您必须授予用户使用与选项 1 相同的操作的权限。这样,他们可以创建一个 VPC 和两个子网,并为公有子网配置路由。要创建 VPN 连接,用户还必须具有使用以下操作的权限:

  • ec2:CreateCustomerGateway: 创建客户网关.

  • ec2:CreateVpnGatewayec2:AttachVpnGateway:创建虚拟专用网关并将其附加到 VPC。

  • ec2:EnableVgwRoutePropagation:启用路由传播,以便自动将路由传播到您的路由表。

  • ec2:CreateVpnConnection: 创建 VPN 连接.

  • ec2:DescribeVpnConnectionsec2:DescribeVpnGatewaysec2:DescribeCustomerGateways:显示向导的第二个配置页面上的选项。

  • ec2:DescribeVpcsec2:DescribeRouteTables:收集有关必须添加到主路由表的路由的信息。

此策略中没有 API 操作支持资源级权限,因此您无法控制用户可以使用的特定资源。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcEndpointServices", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:ModifyVpcAttribute", "ec2:CreateCustomerGateway", "ec2:CreateVpnGateway", "ec2:AttachVpnGateway", "ec2:EnableVgwRoutePropagation", "ec2:CreateVpnConnection", "ec2:DescribeVpnGateways", "ec2:DescribeCustomerGateways", "ec2:DescribeVpnConnections", "ec2:DescribeRouteTables", "ec2:DescribeNetworkAcls", "ec2:DescribeInternetGateways", "ec2:DescribeVpcs" ], "Resource": "*" } ] }

选项 4:“VPC with a private subnet only and hardware VPN access (仅具有私有子网和硬件 VPN 访问的 VPC)”

第四个 VPC 配置选项将创建具有私有子网的 VPC,并在您的 VPC 与您自己的网络之间创建 VPN 连接。与其他三个选项不同的是,用户无需权限即可创建 Internet 网关或将其附加到 VPC,而且他们无需权限即可创建路由表并将其与子网关联起来。若要建立 VPN 连接,用户需要具有与前一示例 (选项 3) 中所列的相同的权限。

此策略中没有 API 操作支持资源级权限,因此您无法控制用户可以使用的特定资源。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcEndpointServices", "ec2:ModifyVpcAttribute", "ec2:CreateCustomerGateway", "ec2:CreateVpnGateway", "ec2:AttachVpnGateway", "ec2:EnableVgwRoutePropagation", "ec2:CreateVpnConnection", "ec2:DescribeVpnGateways", "ec2:DescribeCustomerGateways", "ec2:DescribeVpnConnections", "ec2:DescribeRouteTables", "ec2:DescribeNetworkAcls", "ec2:DescribeInternetGateways", "ec2:DescribeVpcs" ], "Resource": "*" } ] }

2. 管理 VPC

在 VPC 控制台中的 Your VPCs (您的 VPC) 页面上,您可以创建或删除 VPC。要查看 VPC,用户必须拥有使用 ec2:DescribeVPCs 操作的权限。要使用 Create VPC (创建 VPC) 对话框创建 VPC,用户必须拥有使用 ec2:CreateVpc 操作的权限。

注意

默认情况下,VPC 控制台创建具有 Name 键和用户指定值的标签。如果用户没有使用 ec2:CreateTags 操作的权限,则他们在尝试创建 VPC 时,Create VPC (创建 VPC) 对话框中会显示错误。不过,VPC 可能已成功创建。

设置 VPC 时,您通常会创建一些独立对象,如子网和 Internet 网关。您无法删除 VPC,除非您取消关联并删除了这些独立对象。使用控制台删除 VPC 时,它会为您执行这些操作 (终止实例除外;您必须自己执行此操作)。

以下示例允许用户在 Your VPCs (您的 VPC) 页面上查看和创建 VPC,以及删除使用 VPC 向导中的第一个选项创建的 VPC (带单个公有子网的 VPC)。此 VPC 具有一个与自定义路由表关联的子网以及一个连接到它的 Internet 网关。要使用控制台删除 VPC 及其组件,您必须向用户授予使用一些 ec2:Describe* 操作的权限,以便控制台可以检查是否有任何其他资源依赖于此 VPC。您还必须向用户授予取消路由表与子网的关联的权限、从 VPC 断开 Internet 网关的权限以及删除这两种资源的权限。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeRouteTables", "ec2:DescribeVpnGateways", "ec2:DescribeInternetGateways", "ec2:DescribeSubnets", "ec2:DescribeDhcpOptions", "ec2:DescribeInstances", "ec2:DescribeVpcAttribute", "ec2:DescribeNetworkAcls", "ec2:DescribeNetworkInterfaces", "ec2:DescribeAddresses", "ec2:DescribeVpcPeeringConnections", "ec2:DescribeSecurityGroups", "ec2:CreateVpc", "ec2:DeleteVpc", "ec2:DetachInternetGateway", "ec2:DeleteInternetGateway", "ec2:DisassociateRouteTable", "ec2:DeleteSubnet", "ec2:DeleteRouteTable" ], "Resource": "*" } ] }

您无法将资源级权限应用于任何 ec2:Describe* API 操作,但是您可以将资源级权限应用于一些 ec2:Delete* 操作以控制用户可以删除的资源。

例如,以下策略仅允许用户删除具有标签 Purpose=Test 的路由表和 Internet 网关。用户无法删除没有此标签的各个路由表或 Internet 网关,同样,用户无法使用 VPC 控制台删除与不同路由表或 Internet 网关关联的 VPC。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeRouteTables", "ec2:DescribeVpnGateways", "ec2:DescribeInternetGateways", "ec2:DescribeSubnets", "ec2:DescribeDhcpOptions", "ec2:DescribeInstances", "ec2:DescribeVpcAttribute", "ec2:DescribeNetworkAcls", "ec2:DescribeNetworkInterfaces", "ec2:DescribeAddresses", "ec2:DescribeVpcPeeringConnections", "ec2:DescribeSecurityGroups", "ec2:CreateVpc", "ec2:DeleteVpc", "ec2:DetachInternetGateway", "ec2:DisassociateRouteTable", "ec2:DeleteSubnet" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:DeleteInternetGateway", "Resource": "arn:aws:ec2:region:account:internet-gateway/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Test" } } }, { "Effect": "Allow", "Action": "ec2:DeleteRouteTable", "Resource": "arn:aws:ec2:region:account:route-table/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Test" } } } ] }

3. 管理安全组

要在 Amazon VPC 控制台中的 Security Groups (安全组) 页面上查看安全组,用户必须拥有使用 ec2:DescribeSecurityGroups 操作的权限。要使用 Create Security Group (创建安全组) 对话框创建安全组,用户必须拥有使用 ec2:DescribeVpcsec2:CreateSecurityGroup 操作的权限。如果用户没有使用 ec2:DescribeSecurityGroups 操作的权限,他们仍可以使用该对话框创建安全组,只是可能出现错误消息,指示未能创建组。

Create Security Group (创建安全组) 对话框中,用户必须添加安全组名称和说明,但是他们无法为 Name tag (名称标签) 字段输入值,除非向他们授予了使用 ec2:CreateTags 操作的权限。但是,他们无需此操作即可成功创建安全组。

以下策略允许用户查看和创建安全组,以及对与 vpc-1a2b3c4d 关联的任何安全组添加和删除入站和出站规则。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs", "ec2:CreateSecurityGroup" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:DeleteSecurityGroup", "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress" ], "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition":{ "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:*:*:vpc/vpc-1a2b3c4d" } } } ] }

4. 创建 VPC 对等连接

要在 Amazon VPC 控制台中查看 VPC 对等连接,用户必须拥有使用 ec2:DescribePeeringConnections 操作的权限。要使用 Create VPC Peering Connection (创建 VPC 对等连接) 对话框,用户必须拥有使用 ec2:DescribeVpcs 操作的权限。这样,他们不使用此操作也可查看和选择 VPC,该对话框无法加载。您可以将资源级权限应用于所有 ec2:*PeeringConnection 权限 (ec2:DescribeVpcPeeringConnections 除外)。

以下策略允许用户查看 VPC 对等连接,以及使用 Create VPC Peering Connection (创建 VPC 对等连接) 对话框创建仅使用特定请求者 VPC (vpc-1a2b3c4d) 的 VPC 对等连接。如果用户尝试创建使用不同请求者 VPC 的 VPC 对等连接,则请求会失败。

Copy
{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": [ "ec2:DescribeVpcPeeringConnections", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect":"Allow", "Action": "ec2:CreateVpcPeeringConnection", "Resource": [ "arn:aws:ec2:*:*:vpc/vpc-1a2b3c4d", "arn:aws:ec2:*:*:vpc-peering-connection/*" ] } ] }

想要了解更多有关编写 IAM 策略以便使用 VPC 对等连接的示例,请参阅 7. 创建和管理 VPC 对等连接