使用情境感知访问权限保护应用和资源的最佳实践

Last reviewed 2025-07-22 UTC

本文档介绍了使用情境感知访问权限来帮助有效保护 Google Cloud 资源的建议最佳实践。情境感知访问权限是一种安全方法,可根据用户的身份验证强度、设备状况、网络位置、地理位置或其他属性来控制用户的访问权限。这种方法不仅仅使用基本用户身份进行安全访问,还可以帮助您实现零信任安全模型,以增强整体安全状况。如需详细了解如何为不同类型的应用和资源实现情境感知访问权限,请参阅使用情境感知访问权限保护应用和资源

如需帮助保护您的应用和 Google Cloud 资源,您可以根据各种上下文因素及其组合来定义精细访问权限控制。您可以使用 Access Context Manager 定义访问权限政策,其中包含访问权限级别和服务参数。

本文档面向负责身份和访问权限管理 (IAM) 以及 Google Cloud 资源和应用安全性的所有安全专家。本文档假定您已熟悉 Access Context Manager、Google Cloud和 IAM 管理。

情境感知访问权限方法

在组织中设置情境感知访问权限时,您必须决定是要将情境感知访问权限控制应用于应用、资源还是同时应用于两者。区分以下不同类型的应用和服务会有助于制定该决策:

  • 管理应用:这些应用可让用户管理Google Cloud 资源(例如虚拟机实例、BigQuery 数据集或 Cloud Storage 存储桶)或与之交互。管理应用的示例包括 Google Cloud 控制台、Google Cloud CLI、Terraform 和 IAP 桌面
  • 业务线应用:这些应用包括在Google Cloud 上运行并使用 SAML 或 Identity-Aware Proxy (IAP) 进行身份验证和授权的 Web 应用。这些应用有时称为“内部应用”。业务线应用的示例包括 CRM 系统、信息中心和其他自定义应用。
  • Google Workspace 和其他 Google 服务:这些服务由 Google 提供,但与 Google Cloud无关。

您可以根据业务线应用处理身份验证和授权的方式进一步区分这些应用:

  • SAML:使用 Google Workspace SAML 进行身份验证的应用。SaaS 应用通常属于此类别。
  • IAP:您部署在 IAP 后面的自定义 Web 应用。
  • OAuth:使用 OAuth 2.0 并使用一个或多个Google Cloud OAuth 范围的自定义 Web 应用或桌面应用。

以下流程图显示了每种类型的应用最适合采用的情境感知访问权限方法:

展示适用于每种类型应用的情境感知访问权限方法的决策树。

该图显示了以下类型的应用:

  • 管理应用:一般来说,保护管理应用促进访问的Google Cloud 资源比保护应用本身更重要。以下面几种情况为例:

    • 用户无法访问任何资源。在这种情况下,有权访问管理应用对用户来说可能没有那么重要。
    • 用户有权访问某个资源,但无法访问某个管理应用。在这种情况下,他们或许能够找到未被屏蔽的其他管理应用,使其可以访问相应资源。

    因此对于管理应用,请采用以资源为中心的方法。如需以最有效的方式将合适的情境感知访问权限控制应用于资源,请使用具有适当入站流量规则的虚拟私有云 (VPC) 服务边界。您可以使用访问权限绑定来补充 VPC 服务边界。

  • 使用 OAuth 的业务线应用:对于这些应用,请务必保护对应用本身的访问权限以及应用可能使用的资源。如需使用情境感知访问权限保护应用,请使用访问权限绑定。

  • 使用 IAP 的业务线应用:虽然 IAP 使用 OAuth,但您无法使用访问权限绑定来保护使用 IAP 对用户进行身份验证的应用。请改为使用 IAM 条件保护这些应用。

  • 使用 SAML 的业务线应用:与使用 OAuth 的业务线应用类似,请务必保护对应用本身的访问权限以及应用可能使用的资源。如需保护这些应用,请使用 Google Workspace 情境感知访问权限。

  • Google Workspace 和其他 Google 服务:对于这些应用,请务必保护对应用本身的访问权限以及应用可能使用的资源。如需保护这些应用,请使用 Google Workspace 情境感知访问权限。

访问权限级别管理

以下部分介绍了在管理访问权限级别时建议使用的做法。

创建可重复使用的访问权限级别

访问权限级别是一种全局资源,旨在用于您的 Google Cloud 组织中的各种资源。因此,最好限制访问权限级别的总数,并确保这些级别在多个资源中有意义且适用。请考虑以下事项:

  • 避免在访问权限级别名称中嵌入特定资源或应用的名称。
  • 避免在访问权限级别中编码任何特定于资源或特定于应用的要求。
  • 使用可声明特定用户或设备状况的名称,例如 Fully Trusted Device

使用复合访问权限级别

为了帮助减少维护开销并确保子网或区域发生变化时的一致性,请勿在多个访问权限级别中重复相同的要求。而是让访问权限级别相互依赖

例如,请勿在多个访问权限级别中列出相同的受信任区域或 IP 子网,而是创建一个名为 Trusted location 的额外访问权限级别。此 Trusted location 级别可用作其他访问权限级别的依赖项。

在访问权限级别中豁免紧急访问用户

为防止意外锁定,最好将至少一个紧急访问用户从所有访问权限级别中排除。如需确保豁免适用于您应用访问权限级别的所有应用和资源,请在访问权限级别本身中配置豁免:

  • 添加一个定义常规要求的条件。
  • 添加另一个条件,其中包含列出一个或多个紧急访问用户的 members 要求
  • 将组合函数设置为 OR 条件,以便用户只需满足这两个条件中的一个。

例如,以下访问权限级别将访问权限限制为三个区域,但用户 emergencyaccess@example.net 不受此要求的限制:

{
  "name": "accessPolicies/…",
  "title": "Example access level",
  "basic": {
    "conditions": [
      {
        "members": [
          "user:emergencyaccess@example.net"
        ]
      },
      {
        "regions": [
          "DE",
          "AU",
          "SG"
        ]
      }
    ],
    "combiningFunction": "OR"
  }
}

配置修复措施消息

您组织中的用户可能尚未意识到其位置信息、设备和其他因素可能会影响是否允许他们访问特定应用。如需让用户及时了解情况,并帮助减少支持请求,请配置自定义修复措施消息,以便向用户告知重新获得访问权限所需采取的步骤。

访问权限绑定管理

通过访问权限绑定,您可以为使用一个或多个 Google Cloud 范围的 OAuth 应用配置情境感知访问权限。访问权限绑定也是对业务线应用强制执行情境感知访问权限的有效方式。

以下部分介绍了使用访问权限绑定时建议采用的做法。

使用具有限定范围的设置的单个访问权限绑定

使用访问权限绑定时,您必须考虑以下限制条件:

  • 每个 Cloud Identity 群组最多只能有一个访问权限绑定。
  • 如果多个访问权限绑定应用于同一用户,则以限制较少的访问权限绑定为准。

如需满足这两个限制条件,请使用应用于所有用户的单个访问权限绑定:

  1. 创建一个自动包含 Cloud Identity 或 Google Workspace 账号的所有用户的群组
  2. 创建或使用将默认访问权限级别与群组相关联的访问权限绑定。默认访问权限级别应适合大多数用户、设备和应用。
  3. 如有必要,请使用限定范围的访问权限设置 (scopedAccessSettings) 为所选应用分配较低的访问权限级别。

使用严格的默认访问权限级别

如果访问权限绑定同时指定了限定范围的访问权限设置和默认访问权限级别,则这两个访问权限级别会使用 OR 语义进行组合。此行为具有以下含义:

  • 用户只需满足其中一个访问权限级别,即可访问 OAuth 应用。
  • 为 OAuth 应用添加限定范围的访问权限设置后,您可以降低生效的访问权限要求
  • 如果限定范围的访问权限设置使用的访问权限级别比访问权限绑定的默认访问权限级别更严格,则该设置无效。

为访问权限绑定选择默认访问权限级别时,我们建议您执行以下操作:

  • 使用严格的访问权限级别作为默认访问权限级别。
  • 使用限定范围的访问权限设置,将较低的访问权限级别应用于各个 OAuth 应用。

您可以考虑向默认访问权限级别添加以下部分或全部限制:

  • 浏览器和设备限制:要求用户使用受管理的 Chrome 浏览器和管理员批准的设备访问应用。
  • 地理位置限制:如果您的组织仅在特定区域开展业务,请使用区域限制,以便仅将这些区域纳入许可清单。否则,您可以使用区域限制来限制对受到制裁或因其他原因不相关的地理位置进行的访问。
  • IP 网络限制:如果组织中的用户仅通过特定网络访问Google Cloud ,或者您的组织使用通用出站流量代理,则可以添加 IP 网络限制。

请勿使用需要基于证书的身份验证的访问权限级别作为默认访问权限级别。基于证书的身份验证最适合 VPC 服务边界入站流量规则。

按应用管理例外情况

如需管理默认访问权限级别的例外情况,请为各个应用添加例外情况,而不是为用户或群组添加例外情况。

严格的默认访问权限级别可能适合大多数应用,但并非适合所有应用:

  • 有些应用可能不太敏感,而您需要让不满足默认访问权限级别的用户也可访问这些应用。例如,必须可以由合作伙伴、访客或校友访问的应用。
  • 某些应用可能在技术上与默认访问权限级别强制执行的某项限制不兼容。

如需从默认访问权限级别中豁免个别应用,请使用限定范围的访问权限设置。对于每个受影响的应用,请添加限定范围的设置,并分配更适合相应应用的访问权限级别。

请勿创建用于按用户或群组管理例外情况的额外访问权限绑定。额外的访问权限绑定可能会导致以下问题:

  • 您可能会无意中创建重叠的访问权限绑定
  • 可能难以确定对各个应用有效实施的情境感知访问权限要求。

避免访问权限绑定重叠

访问权限绑定与群组相关联。如果用户是多个群组的成员,则可能有多个访问权限绑定应用于用户。在这种情况下,这些访问权限绑定的情境感知访问权限要求会使用 OR 语义进行组合。

此行为可能会造成意外影响。例如,当允许用户加入其他群组时,某些应用的保护可能会遭到削弱。

为帮助防止出现这种情况,我们建议您避免重叠的访问权限绑定:

  • 尽可能减少访问权限绑定数量,最好是一个。
  • 如果您需要多个访问权限绑定,请将它们分配给互斥的群组。

防止群组遭到未经授权的修改

默认情况下,Cloud Identity 允许群组成员退出群组。此行为适用于访问权限群组,但对于具有关联访问权限绑定的群组来说,则会产生问题。如果用户退出具有关联访问权限绑定的群组,则不再受相应访问权限绑定所施加的情境感知访问权限要求约束。因此,用户可以通过退出群组来规避情境感知访问权限要求。

配置访问权限绑定时,请始终使用强制执行群组,并且不允许用户退出强制执行群组。或者,创建一个自动包含 Cloud Identity 或 Google Workspace 账号的所有用户的群组

使用访问权限绑定时,不允许外部用户访问

访问权限绑定仅影响您的 Google Cloud 组织所属的 Cloud Identity 或 Google Workspace 账号的用户。如果这些用户尝试访问其他Google Cloud 组织中的资源,仍会受到您的Google Cloud 组织中的访问权限绑定约束。这种针对用户的访问权限绑定应用方式与 Cloud Identity 在其他上下文中的行为有所不同。

如果您允许外部 Cloud Identity 或 Google Workspace 账号中的用户访问您 Google Cloud组织中的资源,则您的访问权限绑定对这些用户无效。

如需确保访问权限绑定有效,请勿向外部用户授予对您的 Google Cloud 组织中的任何应用或资源的访问权限。此外,请勿将外部用户添加到您的 Cloud Identity 或 Google Workspace 账号中的群组。

将单独的访问权限绑定用于会话时长控制

除了情境感知访问权限控制之外,您还可以使用访问权限绑定来管理浏览器会话和 OAuth 令牌的时长。

使用访问权限绑定来控制情境感知访问权限时,最好避免访问权限绑定重叠

使用访问权限绑定来控制会话时长时,请勿创建重叠的访问权限绑定。如果多个此类访问权限绑定应用于同一用户,则只有最后更新的访问权限绑定会生效,这可能会导致意外结果。

如需帮助避免此类意外结果,请使用单独的访问权限绑定来控制会话时长。

不允许用户充当服务账号

访问权限绑定会应用于 Cloud Identity 和 Google Workspace 用户,但不影响服务账号。如果您允许用户以服务账号的身份进行身份验证和操作,他们可能能够削弱您的情境感知访问权限控制。

当用户能够充当服务账号时,会带来其他风险。如果您想让用户临时提升其权限,我们建议您使用 Privileged Access Manager。请勿使用服务账号模拟,除非是为了进行开发。

如需详细了解如何保护服务账号和服务账号密钥,请参阅服务账号使用最佳实践管理服务账号密钥的最佳实践

VPC 服务边界的入站流量规则

入站流量规则可让您授予从服务边界外部对边界内部资源的情境感知访问权限。VPC 服务边界和入站流量规则可保护 Google Cloud 资源,而不是各个应用。因此,具有入站流量规则的服务边界非常适合为 Google Cloud 控制台和 gcloud CLI 等管理工具强制执行情境感知访问权限。

如需详细了解 VPC 服务边界以及相关最佳实践,请参阅启用 VPC Service Controls 的最佳实践

以下部分介绍了使用入站流量规则强制执行情境感知访问权限时的建议做法。

将 IAP TCP 转发作为受限服务包含在内

允许用户使用 SSH 或 RDP 连接到服务边界内的虚拟机实例可能存在风险,原因如下:

  • 您的入站流量规则不会应用于这些连接,因为 SSH 和 RDP 使用不涉及任何 Google API 访问。
  • 用户建立 SSH 或 RDP 会话后,从该会话内发起的任何 API 访问都会被视为源自服务边界内。因此,您的入站流量规则不会应用于从该会话内发起的任何 API 访问。

如需缓解这些风险,请仅允许通过 IAP TCP 转发对虚拟机进行 SSH 和 RDP 访问

使用 IAP TCP 转发有助于确保 VPC 服务边界的入站流量规则配置会应用于每次 SSH 和 RDP 访问尝试。

为敏感服务边界使用基于证书的访问权限

默认情况下,Google 访问令牌和刷新令牌不会绑定到设备,可能容易被盗或受到重放攻击。如需帮助缓解这些风险,您可以使用基于证书的访问权限 (CBA),该功能可仅允许拥有可信 X.509 证书的设备才能进行访问。

CBA 有助于增强安全性,但此方法也会增加额外的基础设施要求:

  • 用户的设备必须具有由内部证书授权机构颁发的 X.509 证书。
  • 与证书关联的密钥必须以防止未经授权导出的方式进行存储。
  • 客户端应用必须使用双向 TLS (mTLS) 身份验证才能连接到Google Cloud API。

使用 CBA 可保护对最敏感的 VPC 服务边界的访问。此方法可让您在安全强度与最低基础设施要求和总体影响之间实现平衡。

贡献者

作者:Johannes Passing | 云解决方案架构师

其他贡献者:Ido Flatow | 云解决方案架构师