共享 VPC
本页面简要介绍了 Google Cloud中的共享 VPC。通过共享 VPC,组织可以将多个项目中的资源连接到一个公用 Virtual Private Cloud (VPC) 网络,让它们能够使用该网络的内部 IP 地址安全高效地相互通信。
在使用共享 VPC 时,您将项目指定为宿主项目,并将一个或多个其他服务项目连接到该项目。宿主项目中的 VPC 网络称为共享 VPC 网络。 服务项目中的合格资源可以使用共享 VPC 网络中的子网。
通过共享 VPC,组织管理员可以将创建和管理实例等管理职责委托给服务项目管理员,同时保持对子网、路由和防火墙等网络资源的集中控制。此模型允许组织执行以下操作:
- 为网络管理、审计和访问控制实施最小权限安全最佳实践。共享 VPC 管理员可以将网络管理任务委托给共享 VPC 网络中的网络和安全管理员,而不必允许服务项目管理员作出影响网络的更改。仅需给予服务项目管理员创建和管理使用共享 VPC 网络的实例的能力。如需了解详情,请参阅管理员和 IAM 部分。
- 在网络级别上为组织中的多个服务项目应用和实施一致的访问控制策略,同时委托管理职责。例如,服务项目管理员可以是其项目中的计算实例管理员,在共享 VPC 主机项目中创建和删除使用已批准子网的实例。
- 使用服务项目来分隔预算或内部成本中心。请参阅结算部分了解详情。
概念
组织、文件夹和项目
共享 VPC 可连接同一组织内的多个项目。关联的项目可位于同一文件夹内,也可以分别位于不同的文件夹中,但如果它们位于不同的文件夹中,则管理员必须同时拥有这两个文件夹的共享 VPC 管理员权限。如需详细了解组织、文件夹和项目,请参阅 Google Cloud 资源层次结构。
参与其中的宿主项目和服务项目不能分属于不同的组织。唯一的例外情况是将您的项目从一个组织迁移到另一个组织。在迁移期间,服务项目可以暂时位于与宿主项目不同的组织中。如需详细了解如何迁移项目,请参阅迁移项目。
参与共享 VPC 的项目可以是宿主项目,也可以是服务项目。
宿主项目包含一个或多个共享 VPC 网络。共享 VPC 管理员必须先启用某个项目作为宿主项目。之后,共享 VPC 管理员可以将一个或多个服务项目连接到该项目。
服务项目是由共享 VPC 管理员连接到宿主项目的任何项目。此连接可让其参与共享 VPC。在组织中,不同部门或团队运作和管理多个服务项目这种做法十分常见。
一个项目不能既是宿主,同时又是服务项目。因此,一个服务项目不能成为其他服务项目的宿主项目。
您可以创建和使用多个宿主项目;但是,每个服务项目只能连接到一个宿主项目。如需说明,请参阅多个宿主项目示例。
您可以在宿主项目中创建网络、子网、次要地址范围、防火墙规则以及其他网络资源。然后,宿主项目可以与服务项目共享所选子网,包括次要范围。在某个服务项目中运行的服务可以使用共享 VPC 与在其他服务项目中运行的资源通信。
为清楚起见,我们将不参与共享 VPC 的项目称为独立项目。这是为了强调它既不是宿主项目也不是服务项目。
独立 VPC 网络是独立项目或服务项目中的非共享 VPC 网络。
网络
共享 VPC 网络是在宿主项目中定义的 VPC 网络,可用作服务项目中合格资源的集中共享网络。共享 VPC 网络可以采用自动模式或自定义模式,但不支持旧式网络。
启用宿主项目后,您可以通过两种方式共享网络:
- 您可以共享所有宿主项目子网。如果您选择此选项,宿主项目中创建的所有新子网(包括新网络中的子网)都将被共享。
- 您可以指定要共享的子网。如果您仅共享某些子网,则除非您手动更改列表,否则只有这些子网会被共享。
宿主项目和服务项目在项目级上进行连接。服务项目管理员可以访问宿主项目中共享 VPC 网络的子网,如下一节管理员和 IAM 中所述。
组织政策限制条件
将组织政策和 IAM 权限搭配使用可以提供不同级别的访问权限控制。借助组织政策,您可以在组织、文件夹或项目级设置控制。
如果您是组织政策管理员,可以在组织政策中指定以下共享 VPC 限制条件:
您可以限制文件夹或组织中的非宿主项目可连接到的宿主项目集。当共享 VPC 管理员将服务项目连接到宿主项目时,该限制条件适用。该限制条件不会影响现有的连接。即使某项政策拒绝新的连接,现有的连接也会保持不变。如需了解详情,请参阅
constraints/compute.restrictSharedVpcHostProjects限制条件。您可以指定服务项目可在项目、文件夹或组织级别访问的共享 VPC 子网。当您在指定的子网中创建新资源时,该限制条件适用,并且不影响现有资源。即使某项政策阻止添加新资源,现有的资源也会继续在其子网中正常运行。如需了解详情,请参阅
constraints/compute.restrictSharedVpcSubnetworks限制条件。
管理员和 IAM
共享 VPC 利用 Identity and Access Management (IAM) 角色处理委托管理。您可以向用户、Google 群组、Google 网域或 Google Cloud 服务账号等 IAM 主账号授予以下角色。如果您需要联系其中任何一位管理员,可以在您的组织或项目的 IAM 政策中进行查找。如果您没有所需的权限,则必须联系组织内的网络或项目管理员。
必需的管理角色
| Administrator(IAM 角色) | 用途 |
|---|---|
组织管理员 (resourcemanager.organizationAdmin)
• 组织中的 IAM 主账号 |
组织管理员具有组织的 resourcemanager.organizationAdmin 角色。他们可以通过授予适当的项目创建和删除角色以及组织的 Shared VPC Admin 角色来指定共享 VPC 管理员。这些管理员可以定义组织级政策,但是特定的文件夹和项目操作需要额外的文件夹和项目角色。 |
| 共享 VPC 管理员 ( compute.xpnAdmin 和 resourcemanager.projectIamAdmin)
• 组织中的 IAM 主账号,或 • 文件夹中的 IAM 主账号 |
共享 VPC 管理员具有组织或者一个或多个文件夹的 Compute Shared VPC Admin (compute.xpnAdmin) 和 Project IAM Admin (resourcemanager.projectIamAdmin) 角色。他们可以执行设置共享 VPC 所必需的各种任务,例如启用宿主项目、将服务项目连接到宿主项目,以及将共享 VPC 网络内部分或所有子网的访问权限委托给服务项目管理员。给定宿主项目的共享 VPC 管理员通常也是其项目所有者。如果为某个用户分配了组织的 Compute Shared VPC Admin 角色,则该用户具有该组织内所有文件夹的对应角色。如果为某个用户分配了某个文件夹的这一角色,则该用户具有给定文件夹及其所嵌套的任何文件夹的对应角色。共享 VPC 管理员只能在具有两个不同文件夹的这一角色时才能将这两个文件夹中的项目相关联。 |
| 服务项目管理员 ( compute.networkUser)
• 组织中的 IAM 主账号,或 • 宿主项目中的 IAM 主账号,或 • 宿主项目中部分子网的 IAM 主账号 |
共享 VPC 管理员可以通过将整个宿主项目或其共享 VPC 网络的选定子网的 Network User (compute.networkUser) 角色授予给 IAM 主账号来定义服务项目管理员。服务项目管理员还对服务项目中定义的资源拥有所有权和控制权,因此他们应该拥有对应服务项目的 Instance Admin (compute.instanceAdmin) 角色。他们可能还拥有服务项目的其他 IAM 角色,如 Project Owner。 |
服务项目管理员
在定义各服务项目管理员时,共享 VPC 管理员可以授予其使用整个宿主项目或仅使用部分子网的权限:
项目级权限:如果共享 VPC 管理员将整个宿主项目的
compute.networkUser角色授予服务项目管理员,则可将服务项目管理员指定为有权使用宿主项目中的所有子网。此时,服务项目管理员拥有使用宿主项目所有 VPC 网络中所有子网的权限,包括将来添加到宿主项目的子网和 VPC 网络。子网级权限:如果共享 VPC 管理员将选定子网的
compute.networkUser角色授予服务项目管理员,则服务项目管理员可被授予一组较为有限的权限,即仅可使用部分子网的权限。仅具有子网级权限的服务项目管理员仅限使用这些子网。将新的共享 VPC 网络或新子网添加到宿主项目后,共享 VPC 管理员应审核compute.networkUser角色的权限绑定,以确保所有服务项目管理员的子网级权限均符合预期配置。
网络和安全管理员
共享 VPC 管理员可以完全控制宿主项目中的资源,包括管理共享 VPC 网络。他们可以选择将某些网络管理任务委托给其他 IAM 主账号:
| 管理员 | 用途 |
|---|---|
| 网络管理员
• 宿主项目中的 IAM 主账号,或 • 组织中的 IAM 主账号 |
共享 VPC 管理员可以通过将宿主项目的 Network Admin (compute.networkAdmin) 角色授予给 IAM 主账号来指定网络管理员。网络管理员可以完全控制除防火墙规则和 SSL 证书之外的所有网络资源。 |
| 安全管理员
• 宿主项目中的 IAM 主账号,或 • 组织中的 IAM 主账号 |
共享 VPC 管理员可以通过将宿主项目的 Security Admin |