创建服务边界

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

准备工作

创建服务边界

本部分介绍如何创建服务边界、将项目或 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. 点击添加所选资源。添加的项目会显示在项目部分中。

    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 操作相关的详细信息。

后续步骤