通过补救建议解决访问拒绝问题

您可以使用 VPC Service Controls 补救建议来诊断和解决由服务边界导致的访问拒绝问题。

当 VPC Service Controls 拒绝访问请求时,补救引擎会分析违规事件,并生成可据以采取行动的、范围明确的建议。借助这些建议,您可以授予所需的访问权限,同时遵循最小权限原则。

补救建议的运作方式

补救建议已直接集成到Google Cloud 控制台中的违规分析器中。当您使用唯一 ID 或问题排查令牌诊断访问遭拒问题时,补救引擎会评估违规情况,并根据违规类型提出配置更改建议:

  • 入站流量违规:引擎会建议一条有范围的入站流量规则,并允许您选择满足请求上下文的现有访问权限级别(推荐),或者创建新的情境感知访问权限级别(例如 IP 子网、地理区域和设备政策要求)来授权调用方(如果适用)。
  • 出站流量违规:引擎会建议一条限定范围的出站流量规则,用于指定边界外的来源身份和目标资源或操作。
  • VPC 可访问服务违规:引擎建议将所请求的服务添加到许可清单或更新边界限制。

一次访问拒绝可能涉及多种违规类型,例如入站流量、出站流量和 VPC 可访问服务违规的组合。在这些情况下,修正引擎会生成建议,以解决所有适用的违规问题。您可以查看生成的配置更改,然后只需点击一下即可将这些更改直接应用到服务边界。

准备工作

所需的角色

如需获得查看和应用补救建议所需的权限,请让您的管理员为您授予以下 IAM 角色:

  • 诊断访问遭拒事件并查看补救建议:访问权限政策的 Access Context Manager Reader (roles/accesscontextmanager.policyReader)
  • 从 Cloud Audit Logs 中获取问题排查令牌: 在包含 VPC Service Controls 审核日志的项目中打开日志查看器 (roles/logging.viewer)
  • 应用补救建议并更新服务边界: 拥有访问权限政策的 Access Context Manager Editor (roles/accesscontextmanager.editor)

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

这些预定义角色包含查看和应用补救建议所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需查看和应用补救建议,您需要具备以下权限:

  • 诊断访问被拒事件并查看修复建议:
    • accesscontextmanager.accessLevels.list 针对访问权限政策的权限
    • accesscontextmanager.policies.get 针对访问权限政策的权限
    • accesscontextmanager.servicePerimeters.list 针对访问权限政策的权限
  • 从 Cloud Audit Logs 中获取问题排查令牌: logging.logEntries.list 在包含 VPC Service Controls 审核日志的项目中
  • 应用修复建议并更新服务边界:
    • accesscontextmanager.accessLevels.create 针对访问权限政策的权限
    • accesscontextmanager.accessLevels.get 针对访问权限政策的权限
    • accesscontextmanager.accessLevels.list 针对访问权限政策的权限
    • accesscontextmanager.policies.get 针对访问权限政策的权限
    • accesscontextmanager.servicePerimeters.get 针对访问权限政策的权限
    • accesscontextmanager.servicePerimeters.update 针对访问权限政策的权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

查看和应用补救建议

如需查看和应用访问遭拒问题的补救建议,请按以下步骤操作:

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

    转到 VPC Service Controls

    如果出现提示,请选择您的组织。

  2. 在 VPC Service Controls 页面上,点击违规分析器。

  3. 在问题排查令牌(或唯一 ID) 字段中,输入访问拒绝事件的问题排查令牌或唯一 ID。

  4. 点击继续。

  5. 在问题排查结果页面上,在受保护的资源被访问中,选择拒绝访问的边界。

  6. 点击查看建议。系统会打开补救措施详情窗格。

  7. 查看建议的补救措施:

    • 如果补救措施需要访问权限级别,请配置访问权限级别:
      • 选择现有访问权限级别(推荐):点击现有访问权限级别标签页,然后在选择现有访问权限级别列表中选择满足请求上下文的访问权限级别。
      • 创建新的访问权限级别:在新的访问权限级别标签页中,查看建议的访问权限级别名称、IP 子网、地理区域和设备限制。
    • 查看服务边界的建议入站流量规则、出站流量规则或 VPC 可访问服务变更。
  8. 如需应用建议的更改,请点击应用补救措施。

VPC Service Controls 会自动配置新的访问权限级别(如果您选择创建)并更新服务边界配置。

按违规类型划分的补救措施

下表介绍了补救引擎根据违规类型提出的操作:

违规类型 建议的补救措施
入站流量违规
  • 允许您选择与请求上下文匹配的现有访问权限级别(推荐),或预配与调用者的 IP 子网、地理区域或设备政策匹配的新情境感知访问权限级别。
  • 附加一个入站规则,该规则的范围限定为调用者身份、来源访问权限级别或网络、目标服务、方法选择器和资源。
出站流量违规 附加一个出站流量规则,该规则的范围限定为源身份或项目以及目标服务、方法选择器和外部资源。
VPC 可访问服务 将受限服务添加到边界的 VPC 可访问服务许可名单,或者在服务不受支持时建议更新限制。

示例:通过访问权限级别进行入站流量补救

假设存在这样一种访问拒绝情况:分析师 (analyst@example.com) 尝试从项目 803311519563 中 Cloud Storage 存储桶读取对象,但使用的是外部工作站 (198.51.100.42)。

为了根据最小权限原则修复此拒绝,修复引擎提出了两项关联操作:

操作 1:选择现有访问权限级别或创建范围限定的访问权限级别

如需授权调用者的工作站,您可以重复使用现有访问权限级别,也可以创建新的访问权限级别:

  • 选择现有访问权限级别(推荐):在现有访问权限级别标签页上,选择已与请求上下文匹配的现有访问权限级别(例如 corp_trusted_workstations)。我们建议您重复使用现有访问权限级别,以避免创建重复的访问权限级别并简化政策管理。
  • 创建新的访问权限级别:或者,在新的访问权限级别标签页上,您可以让引擎创建新的访问权限级别,其作用范围为调用方的工作站:
    • 名称: accessPolicies/POLICY_ID/accessLevels/analyst_secure_workstation
    • IP 子网:198.51.100.0/24
    • 区域:US
    • 设备政策:要求设置屏幕锁定、磁盘加密、公司自有状态,并获得管理员批准。

操作 2:向边界附加范围限定的入站规则

引擎会将一个范围较窄的入站规则附加到服务边界,该规则引用您选择的现有访问权限级别或新创建的访问权限级别:

  • 身份:user:analyst@example.com
  • 来源:您选择的现有访问权限级别(例如 corp_trusted_workstations)或新的 analyst_secure_workstation 访问权限级别
  • 服务:storage.googleapis.com
  • 方法选择器:google.storage.objects.get
  • 资源:projects/803311519563

点击应用补救措施后,VPC Service Controls 会按顺序应用所选的访问权限级别(或创建新的访问权限级别)并更新服务边界。

限制

  • 敏感数据隐去:
    • 经过修订的内部 IP 地址无法用于生成特定的访问权限级别。
    • 如果审核日志中的调用方身份被隐去或不可用,建议可能会使用 ANY_USER_ACCOUNT 等通用身份。
    • 如果服务方法不支持细粒度,建议可能会使用通配符 (*)。
    • 如果无法访问网络名称,建议会回退到项目编号。
  • 补救建议需要 Cloud Audit Logs 中的访问拒绝详细信息。无法分析早于日志保留期限(默认情况下为 30 天)的事件。
  • 补救建议仅在Google Cloud 控制台的组织级层提供。
  • 修复引擎不支持服务模式和某些第三方员工身份池配置。

后续步骤