VPC Service Controls 基本教程 I

1. 简介

VPC Service Controls (VPC-SC) 是 Google Cloud 中的组织级安全控制措施,使企业客户能够降低数据渗漏风险。借助 VPC Service Controls,客户端可以限制对授权 IP、客户端上下文和设备参数的访问,同时从互联网和其他服务连接到多租户服务,从而实现对多租户服务的零信任式访问,从而减少有意和无意的损失。您可以使用 VPC Service Controls 创建边界,以保护您明确指定的服务的资源和数据。

本教程的目标是:

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

2. 设置和要求

对于本教程,我们需要以下前提条件:

  • GCP 组织。
  • 组织下的文件夹。
  • 同一组织中的 2 个 GCP 项目放置在该文件夹下。
  • 组织级层所需的权限
  • 两个项目的结算账号。

1a62ebea85d6d4fc.png

资源设置

  1. Google Cloud 控制台中的组织和两个新项目创建一个文件夹您可以重复使用现有项目)。

(如果您还没有 Google Workspace/Cloud Identity 账号,则必须获取一个,因为本教程需要有一个组织)。

  1. 验证您在组织级别对本教程拥有适当的权限。
  1. 请确保这两个项目在文件夹下均可用,因为我们需要在文件夹级别创建限定范围的政策。了解如何将项目移至文件夹

f7c75ab82028cb15.png

费用

您需要在 Cloud 控制台中启用结算功能,才能使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有的话)。若要关闭资源以避免产生超出本教程范围的结算费用,您可以删除自己创建的资源或删除项目。Google Cloud 新用户有资格加入 300 美元的免费试用计划。

唯一会产生费用的资源是虚拟机实例。您可以使用价格计算器来估算费用

3. 创建边界

在本实验中,我们将执行以下步骤:

  1. 在 Google 控制台中,选择您的组织并 访问 VPC Service Controls。请确保您位于组织级别。

43d5af2d5f084bb4

  1. 点击“管理政策”创建范围限定为“Codelab”的新访问权限政策文件夹中。

9f75d949ca9992c4

  1. 在强制模式下创建新边界。把它命名为“SuperProtection”
  • 创建边界时,选择要强制执行为 ProjectZ 的项目。
  • 选择“常规”边界类型。
  • 指定要限制的服务对话框中,选择要限制的服务,即“Compute Engine”。

边界设置应如下所示:

914d603103cb21

4. 验证边界是否已实施

  1. 访问 ProjectX 并验证您是否能够通过访问“虚拟机实例”首页来访问 Compute Engine API。您应该能够执行此操作,因为 projectX 不受创建的 VPC SC 边界的保护。
  2. 访问 ProjectZ 并验证您能否访问 Compute Engine。您会看到该请求已被 VPC Service Controls 禁止,因为服务边界 SuperProtection 保护 ProjectZ 和 Compute Engine API。

d5073543f783e9c7.png

5. 拒绝事件问题排查

首先,我们必须确定此处的问题所在,以确定如何进行问题排查。

  1. VPC Service Controls 日志包含有关对受保护资源的请求的详细信息,以及 VPC Service Controls 拒绝该请求的原因。我们通过在日志浏览器中使用以下查询,在 ProjectZ 审核日志中查找 VPC Service Controls 唯一 ID
resource.type="audited_resource"
protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"

这将显示所有 VPC Service Controls 审核日志。我们会查找最后一个错误日志。

  1. 点击 VPC Service Controls 标题,然后选择“排查拒绝问题”这将打开 VPC Service Controls 问题排查工具

此 API 将在易用的界面中显示违规原因,以及违规是否属于入站流量或出站流量或其他有用信息。

在本练习中,我们将寻找以下内容:

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

在 ProjectZ 中,我们有两种方法解决此拒绝问题。

  • 创建访问权限级别,通过向我的系统 IP 授予访问权限,允许访问边界内的项目。
  • 创建入站规则,以允许 API 客户端从服务边界外访问服务边界内的资源。

在本教程中,我们将通过创建访问权限级别来排查问题。

  1. 在文件夹 (Codelab) 范围内前往 Access Context Manager,然后创建新的访问权限级别
  2. 使用“基本模式”当满足 IP 子网和地理位置条件时,我们就会允许访问

678f0f9d7bac921d

  1. 前往组织范围内的 VPC Service Controls。为此 Codelab 选择访问权限政策,并修改我们之前创建的边界。
  2. 添加在文件夹范围内创建的访问权限级别,然后保存。

c0af5691dfe9dd75.png

6. 测试结果。

确认我们有权访问 Compute Engine 并且能够创建虚拟机实例。现在,我们已创建了访问权限级别,接下来我们尝试访问 ProjectZ 中的 Compute Engine 并创建虚拟机实例。

  1. 前往 Compute Engine,然后点击创建实例

c1206aaf18497ec1.png

  1. 将一切都保留默认值,并尝试创建费用低廉的虚拟机实例。

大约一分钟后,您应该会看到已创建的虚拟机实例,可以验证您是否拥有边界内保护的 Compute Engine 的完整访问权限。

5b2ded02f669b2ef

7. 清理

虽然不使用 VPC Service Controls 时无需单独付费,但最佳做法是清理本实验室中使用的设置。您还可以删除虚拟机实例和/或 Cloud 项目,以避免产生费用。删除 Cloud 项目后,系统即会停止对该项目中使用的所有资源计费。

  1. 如需删除虚拟机实例,请选中虚拟机实例名称左侧的复选框,然后点击删除

da0abf0894fe03cd.png

  1. 如需删除边界,请完成以下步骤:
  • 在 Google Cloud 控制台中,点击安全,然后点击“组织”范围内的 VPC Service Controls
  • 在“VPC Service Controls”页面中与要删除的边界对应的表行中,点击“删除图标”
  1. 如需删除访问权限级别,请完成以下步骤:
  • 在 Google Cloud 控制台中,打开文件夹范围内的 Access Context Manager 页面。
  • 在网格中,在您要删除的访问权限级别所对应行中,点击“删除图标”,然后点击删除
  1. 如需关停项目,请完成以下步骤:

8. 恭喜!

在此 Codelab 中,您创建了一个 VPC Service Controls 边界,实施该边界并对其进行了问题排查。

了解详情

许可

此作品已获得 Creative Commons Attribution 2.0 通用许可授权。