使用 VPC Service Controls 边界保护 Compute Engine


本教程介绍了如何使用服务边界保护 Compute Engine,以及如何排查入站违规问题以允许对 Compute Engine 进行授权访问。

借助 VPC Service Controls,您可以为 Google 托管式服务的资源定义服务边界,以控制与这些服务的通信以及这些服务之间的通信。您可以围绕敏感资源建立零信任边界,将访问权限限制为已获授权的 IP 地址、用户和设备。借助此功能,您可以定义安全政策,以阻止对受信任边界外的 Google 管理的服务的访问、阻止从不可信位置访问数据,以及降低数据渗漏风险。

本教程面向 Google Cloud 希望了解 VPC Service Controls 基本概念的组织管理员。

目标

  • 了解 VPC Service Controls 的基础知识。
  • 创建服务边界。
  • 使用 VPC Service Controls 保护项目。
  • 排查 VPC Service Controls 入站流量违规问题。

费用

在本文档中,您将使用 Google Cloud 的以下收费组件:

您可使用价格计算器根据您的预计使用情况来估算费用。 Google Cloud 新用户可能有资格申请免费试用

完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理

准备工作

创建服务边界

创建一个服务边界来保护 My-Project-2 项目中的 Compute Engine API:

  1. 在 Google Cloud 控制台中,转到 VPC Service Controls 页面。

    转到 VPC Service Controls

    确保您位于组织级范围内。

  2. 点击管理政策

  3. 创建范围限定为 Exercise 文件夹的新访问权限政策

  4. 使用以下详细信息创建新的边界

    • 标题:MyFirstPerimeter

    • 边界类型:常规

    • 强制执行模式:强制执行

    • 要保护的资源:My-Project-2 项目

    • 受限服务:Compute Engine API

验证边界

在本部分中,您可以向项目中的资源发出访问请求,以确认边界是否保护了预期的资源。

  1. 访问 My-Project-1 项目,然后访问虚拟机实例页面,验证您是否可以访问 Compute Engine。

    转到虚拟机实例

    您应该可以访问,因为 My-Project-1 未受您之前创建的外围网保护。

  2. 访问 My-Project-2 项目,然后访问虚拟机实例页面,验证您是否可以访问 Compute Engine。

    您应该会看到,VPC Service Controls 会拒绝您对 Compute Engine 的访问请求,因为 MyFirstPerimeter 边界会保护 My-Project-2 和 Compute Engine API。

违规问题排查

VPC Service Controls 审核日志包含有关对受保护资源的请求的详细信息,以及 VPC Service Controls 拒绝该请求的原因。您需要这些信息来识别和排查 My-Project-2 项目中的违规问题。

查看审核日志

  1. My-Project-2 项目的审核日志中查找 VPC Service Controls 违规行为的唯一 ID:

    1. 在 Google Cloud 控制台中,转到 Logs Explorer 页面。

      前往 Logs Explorer

      如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

    2. 选择 My-Project-2 项目。

    3. 如需显示所有审核日志,请在查询编辑器字段中输入以下查询:

      resource.type="audited_resource"
      protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
      
    4. 点击运行查询

    此查询会显示所有 VPC Service Controls 审核日志。如需查找在 My-Project-2 项目中访问 Compute Engine API 的违规详情,请查看上次的错误日志。

    如需了解详情,请参阅查看日志

  2. 查询结果窗格中,点击要排查的被拒问题旁边的 VPC Service Controls,然后点击排查被拒问题

    系统会打开 VPC Service Controls 问题排查工具页面。此页面会显示违规原因和其他信息,例如违规是入站违规还是出站违规。

    在本教程中,请查找以下信息:

    "principalEmail": "USER@DOMAIN"
    "callerIp": "PUBLIC_IP_ADDRESS"
    "serviceName": "compute.googleapis.com"
    "servicePerimeterName":
    "accessPolicies/POLICY_NUMBER/servicePerimeters/MyFirstPerimeter
    "ingressViolations": [
            {
    "targetResource": "projects/PROJECT_NUMBER",
    "servicePerimeter": "accessPolicies/POLICY_NUMBER/servicePerimeters/MyFirstPerimeter"
            }
          ],
    "violationReason": "NO_MATCHING_ACCESS_LEVEL",
    "resourceNames": "PROJECT_ID"
    

    违规原因为 "NO_MATCHING_ACCESS_LEVEL"。如果 IP 地址、设备类型或用户身份与与边界相关联的任何入站流量规则或访问权限级别不匹配,就会发生 "NO_MATCHING_ACCESS_LEVEL" 违规问题。如果调用方 IP 地址缺失或在日志中显示为内部 IP 地址,则此违规可能是由VPC Service Controls 不支持的服务造成的。 Google Cloud

如需在 My-Project-2 项目中修正此拒绝问题,您有两种选择:

  • 创建一个访问权限级别,允许边界内的项目访问您的系统 IP 地址。

  • 创建一条入站规则,允许从边界外部访问边界内的 API 客户端资源。

以下部分介绍了如何通过创建访问权限级别来排查此拒绝问题。

创建访问权限级别

  1. 在 Google Cloud 控制台中,前往 Exercise 文件夹级别的 Access Context Manager 页面。

    前往 Access Context Manager

  2. 创建访问权限级别,并提供以下详细信息:

    • 对于在以下条件中创建条件,选择基本模式

    • 对于满足条件时返回,请选择

    • 选择 IP 子网属性,指定系统的公共 IP 地址。

    • 选择地理位置属性,指定您的地理位置。

    只有在 IP 地址与地理位置匹配时,此访问权限级别才允许访问。

  3. 在组织级范围内,前往 VPC Service Controls 页面。

    转到 VPC Service Controls

  4. 选择您在本教程前面创建的访问权限政策。

  5. 将您在 Exercise 文件夹级别创建的访问权限级别添加到 MyFirstPerimeter 边界。

测试访问权限

添加访问权限级别后,请验证您是否可以在 My-Project-2 项目中访问 Compute Engine 并创建虚拟机实例。

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到虚拟机实例

  2. 创建虚拟机实例

大约一分钟后,Compute Engine 会创建一个虚拟机实例,此操作会验证您是否对边界内受保护的 Compute Engine 具有完全访问权限。

清理

为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

删除项目

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

删除各个资源

删除虚拟机实例

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. Select the checkbox for the instance that you want to delete.
  3. To delete the instance, click More actions, click Delete, and then follow the instructions.

删除 VPC Service Controls 资源

  1. 删除服务边界

  2. 删除您在 Exercise 文件夹级别创建的访问权限级别

后续步骤