创建服务边界

本页面介绍如何创建服务边界。

准备工作

创建服务边界

本部分介绍如何创建服务边界、向边界添加项目或 VPC 网络,以及如何保护服务。

创建服务边界时,您可以选择允许从边界外访问受保护的服务,并为边界内的其他服务和用户指定可以访问的服务。如果您愿意,也可以在创建边界后配置这些设置。

创建服务边界或更新现有服务边界后,更改最多可能需要 30 分钟才能传播完毕并生效。在此期间,边界可能会阻止请求,并显示以下错误消息:Error 403: Request is prohibited by organization's policy.

控制台

  1. 在 Google Cloud 控制台导航菜单中,点击安全,然后点击 VPC Service Controls

    转到 VPC Service Controls

  2. 如果出现提示,请选择您的组织、文件夹或项目。

  3. 选择现有访问权限政策或创建新的访问权限政策。确保访问权限政策范围包含要添加到边界中的所有项目和 VPC 网络。

  4. VPC Service Controls 页面上,选择一种边界模式。默认情况下选中的是强制模式。如果要创建试运行边界,请点击试运行模式

    强制实施边界会主动阻止对受保护服务的访问。试运行边界会记录对边界的违规,虽然看起来服务像是受到保护,但实际上并不会阻止对这些服务的访问。如需详细了解强制模式和试运行模式,请参阅服务边界

  5. 点击新建边界

  6. 新建 VPC 服务边界页面的边界名称框中,为边界输入一个名称。

    边界名称的最大长度为 50 个字符,必须以字母开头,并且只能包含 ASCII 拉丁字母(a-z、A-Z)、数字 (0-9) 或下划线 (_)。边界名称区分大小写,并且在访问政策中必须是唯一的。

  7. 如需添加您希望在边界内保护的项目或 VPC 网络,请执行以下操作:

    1. 点击添加资源

    2. 如需将项目添加到边界,请在添加资源窗格中点击添加项目

      1. 要选择项目,请在添加项目对话框中,选中该项目对应的复选框。

      2. 点击添加所选资源。添加的项目会显示在 Projects 部分中。

    3. 如需向边界添加 VPC 网络,请在添加资源窗格中点击添加 VPC 网络

      1. 在项目列表中,点击包含 VPC 网络的项目。
      2. 如需添加 VPC 网络,请在添加资源对话框中,选中该 VPC 网络对应的复选框。
      3. 点击添加所选资源。已添加的网络会显示在 VPC 网络部分。
  8. 如需选择您想要在边界内保护的服务,请执行以下操作:

    1. 点击受限的服务

    2. 受限的服务窗格中,点击添加服务

    3. 要保护边界内的服务,请在指定要限制的服务对话框中,选中服务对应的复选框。

    4. 点击添加 n 个服务 (Add n Services),其中 n 是您在上一步中选中的服务数量。

  9. 可选:如果要定义在边界内可访问的服务,请执行以下操作:

    1. 点击 VPC 可访问服务

    2. VPC 可访问服务窗格中,选择选定的服务

      要快速将边界保护的所有受限服务包括在可访问服务列表中,请选择包括所有受限的服务。除受限的服务之外,此选项还允许您添加独立的服务。

    3. 点击添加 VPC 可访问服务

      您还可以在创建边界后添加可访问的服务

    4. 指定可访问的服务页面中,选择要设为在边界内可访问的服务。

    5. 点击添加 n 个服务 (Add n Services),其中 n 是您在上一步中选中的服务数量。

  10. 可选:如需使用访问权限级别从边界外访问受保护的资源,请执行以下操作:

    1. 点击访问权限级别

    2. “入站流量政策:访问权限级别”窗格中,点击选择访问权限级别框。

      您也可以在创建边界后添加访问权限级别

    3. 选择与要应用于边界的访问权限级别对应的复选框。

  11. 如需允许从边界外的 API 客户端访问边界内的资源,请执行以下操作:

    1. 点击入站流量政策

    2. 入站流量规则窗格中,点击添加规则

    3. 来自 API 客户端的属性中指定边界外需要访问的来源。您可以将项目、访问权限级别和 VPC 网络指定为来源。

    4. Google Cloud 资源/服务的属性中指定来源可以访问的边界内的资源。

      如需查看入站规则特性的列表,请参阅入站规则参考

  12. 如需允许涉及边界内的 API 客户端或资源访问边界外的资源,请执行以下操作:

    1. 点击出站流量政策

    2. 出站流量规则窗格中,点击添加规则

    3. 指定所需的 API 客户端的“来自于”特性Google Cloud 资源/服务的“至”特性

      如需查看出站规则特性的列表,请参阅出站规则参考

  13. 点击创建边界

gcloud

如需在强制模式下创建新边界,请使用 gcloud access-context-manager perimeters create 命令。

gcloud access-context-manager perimeters create NAME \
  --title=TITLE \
  --resources=RESOURCES \
  --restricted-services=RESTRICTED-SERVICES \
  --ingress-policies=INGRESS-FILENAME.yaml \
  --egress-policies=EGRESS-FILENAME.yaml \
  [--access-levels=LEVELS] \
  [--enable-vpc-accessible-services] \
  [--vpc-allowed-services=ACCESSIBLE-SERVICES] \
  --policy=POLICY_NAME

如需在试运行模式下创建新边界,请使用 gcloud access-context-manager perimeters dry-run create 命令。

gcloud access-context-manager perimeters dry-run create NAME \
  --perimeter-title=TITLE \
  --perimeter-type=TYPE \
  --perimeter-resources=RESOURCES \
  --perimeter-restricted-services=RESTRICTED-SERVICES \
  --perimeter-ingress-policies=INGRESS-FILENAME.yaml \
  --perimeter-egress-policies=EGRESS-FILENAME.yaml \
  [--perimeter-access-levels=LEVELS] \
  [--perimeter-enable-vpc-accessible-services] \
  [--perimeter-vpc-allowed-services=ACCESSIBLE-SERVICES] \
  --policy=POLICY_NAME

请替换以下内容:

  • NAME 是边界的名称。

    边界名称的最大长度为 50 个字符,必须以字母开头,并且只能包含 ASCII 拉丁字母(a-z、A-Z)、数字 (0-9) 或下划线 (_)。边界名称区分大小写,并且在访问政策中必须是唯一的。

  • TITLE 是直观易懂的边界标题。

  • TYPE 是边界的类型。例如,“常规”边界或“网桥”边界。

  • RESOURCES 是包含一个或多个项目编号或 VPC 网络名称的列表(以英文逗号分隔)。例如 projects/12345//compute.googleapis.com/projects/my-project/global/networks/vpc1。 仅允许项目和 VPC 网络。项目格式:projects/project_number。 VPC 格式://compute.googleapis.com/projects/project-id/global/networks/network_name。如果您指定项目,则仅支持项目编号。 不能使用项目名称或项目 ID。

  • RESTRICTED-SERVICES 是一个或多个服务的列表(以英文逗号分隔)。例如 storage.googleapis.comstorage.googleapis.com,bigquery.googleapis.com

  • INGRESS-FILENAME 是一个 JSON 或 YAML 文件,其中包含来源、身份、项目和服务特性的值。如需查看入站规则特性的列表,请参阅入站规则参考

  • EGRESS-FILENAME 是一个 JSON 或 YAML 文件,其中包含身份、项目和服务特性的值。如需查看出站规则特性的列表,请参阅出站规则参考

  • POLICY_NAME 是您的组织的访问权限政策的数字名称。例如 330193482019。只有在您尚未设置默认访问权限政策时,才需要包括政策名称。

其他选项:

  • 只有在创建边界时要添加访问权限级别时,才需要 --access-levels--perimeter-access-levelsLEVELS 是您要应用于服务边界的一个或多个访问权限级别的列表(以英文逗号分隔)。

    您也可以在创建边界后添加访问权限级别

  • 只有在创建边界时要添加 VPC 可访问服务时,才需要 --enable-vpc-accessible-services--vpc-allowed-services--perimeter-enable-vpc-accessible-services--perimeter-vpc-allowed-servicesACCESSIBLE-SERVICES 是您要允许边界内网络访问的一个或多个服务的列表(以英文逗号分隔)。对此列表中未包含的任何服务的访问都会被阻止。

    只有在配置边界时对一项服务实施了保护的情况下,您才能将该服务设置为可访问。

    如需快速添加受边界保护的所有服务,请在 ACCESSIBLE-SERVICES 列表中指定 RESTRICTED-SERVICES。例如 --perimeter-vpc-allowed-services=RESTRICTED-SERVICES

    您也可以在创建边界后定义 VPC 可访问服务

例如,以下命令会创建一个名为 ProdPerimeter 的新试运行模式边界,其中包含项目 example-projectexample-project2,并限制 Cloud Storage API 和 BigQuery API。

gcloud access-context-manager perimeters \
  dry-run create ProdPerimeter --perimeter-title="Production Perimeter" \
  --perimeter-type="regular" \
  --perimeter-resources=projects/12345,projects/67890 \
  --perimeter-restricted-services=storage.googleapis.com,bigquery.googleapis.com \
  --perimeter-ingress-policies=ingress.yaml \
  --perimeter-egress-policies=egress.yaml \
  --policy=330193482019

API

要创建服务边界,请调用 accessPolicies.servicePerimeters.create

 POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/servicePerimeters

其中:

  • POLICY_NAME 是您的组织的访问权限政策的数字名称。例如 330193482019

请求正文

请求正文必须包含用于定义服务边界的 ServicePerimeter 资源。

对于 ServicePerimeter 资源,请为 perimeterType 指定 PERIMETER_TYPE_REGULAR

试运行模式

要创建的边界必须添加为 spec,并且将 useExplicitDryRunSpec 设为 true。

响应正文

如果成功,调用的响应正文将包含一个 Operation 资源,用于提供与 POST 操作相关的详细信息。

后续步骤