配置组织限制

本页介绍了出站流量代理配置的前提条件、如何获取组织 ID、添加组织限制标头,以及如何使用目标网址列表配置代理。

Google Cloud 负责管理 Google Cloud的管理员和负责配置出站流量代理的出站流量代理管理员必须通力合作才能配置组织限制。如需了解已通过组织限制验证的合作伙伴解决方案,请参阅已验证的合作伙伴解决方案

准备工作

如果您是出站流量代理管理员,则必须满足以下前提条件,然后才能将出站流量代理配置为添加组织权限限制标头:

  • 如果贵组织中的 Google Cloud 管理员和出站流量代理管理员角色不同,请确保 Google Cloud 管理员与出站流量代理管理员合作配置出站流量代理。

  • 配置组织防火墙规则或配置受管设备,以确保组织中所有用户的出站流量都通过出站代理。

  • 确保贵组织中的出站代理具有以下功能:

    • 插入标题。向通过出站代理传输的出站请求插入自定义 HTTP 标头。
    • TLS 检查。如果出站代理收到的流量已加密,则出站代理必须先解密数据包、插入标头,然后重新加密数据包,然后才能将其发送到目标。
    • 过滤和插入标题。可选。支持以下一个或多个过滤条件,然后仅为与过滤条件匹配的请求添加标头:

      • 目标网址。出站代理可以匹配的目标网址列表。
      • 设备 ID。出站代理可以匹配的设备 ID 列表。 设备 ID 必须传播到出站代理。
      • 用户 ID。出站代理可以匹配的用户 ID 列表。用户 ID 必须传播到出站代理。

获取组织 ID

作为 Google Cloud 管理员,您必须获取 Google Cloud组织 ID,以便将其添加到组织限制标头中。

如需查找您的组织资源 ID,请运行以下命令:

   gcloud organizations list

此命令会列出您所属的所有组织资源,及其对应的组织资源 ID。

获取组织 ID 后,您可以添加组织限制标头,也可以与出站流量代理管理员联系以添加该标头。

添加组织限制标题

作为出站流量代理管理员,如需向出站请求添加组织权限限制标头,请执行以下操作:

  • 创建标头。
  • 对标头进行编码。
  • 配置出站代理。

创建标头

按以下格式为标头创建 JSON 表示法: X-Goog-Allowed-Resources: HEADER_VALUE

HEADER_VALUE 包含以英文逗号分隔的已获授权 Google Cloud组织 ID 列表。然后,必须使用可在网页上安全使用的 base64 编码对该值进行编码。

HEADER_VALUE 具有以下 JSON 结构:

  {
  "resources": [string,..],
  "options": string
  }
  • resources。字符串列表。此列表中的每个字符串都必须引用一个 Google Cloud组织 ID。在评估期间,系统会将此列表中的组织 ID 视为已获授权的组织。
  • options。包含以下某个值的字符串:
    • "strict"。对受支持 Google Cloud 服务的所有请求类型强制执行组织权限限制标头。
    • "cloudStorageReadAllowed"。允许对 Cloud Storage 发出读取请求,但会对对受支持 Google Cloud 服务的所有请求类型强制执行组织限制标头。此选项允许对以下 Cloud Storage 读取操作进行访问:
      • storage.objects.get
      • storage.objects.list
      • storage.objects.getIamPolicy
      • storage.buckets.get
      • storage.buckets.list
      • storage.buckets.getIamPolicy

为了演示此选项,我们举个例子:Alex 是“Example Organization”的管理员,Lee 是该组织的员工。假设有一个网站(例如 altostrat.com),它将静态内容存储在公共 Cloud Storage 存储分区中,并且不在“Example Organization”之外。如果 Alex 使用 strict 选项将 Lee 的访问权限限制为仅限 Example Organization,则 Lee 将被拒绝访问 altostrat.com 中的静态内容,这些内容位于 altostrat.com 拥有的公共 Cloud Storage 存储分区中。此行为会影响 Lee 有效浏览网站的能力,并且任何使用公共 Cloud Storage 存储静态内容的网站都会出现相同的行为。为了让 Lee 能够查看 altostrat.com 中的静态内容,并将所有其他访问权限限制为仅限“Example Organization”组织,Alex 使用了 cloudStorageReadAllowed 选项。 Google Cloud

以下是一个有效的组织权限限制标头示例:

  {
  "resources": ["organizations/1234", "organizations/3456"],
  "options": "strict"
  }

对标头进行编码

请以网络安全的 base64 格式对组织 ID 进行编码。编码必须遵循 RFC 4648 第 5 节规范

例如,如果标头值的 JSON 表示法存储在 authorized_orgs.json 文件中,如需对该文件进行编码,请运行以下 basenc 命令:

     $ cat authorized_orgs.json | basenc --base64url -w0
ewogInJlc291cmNlcyI6IFsib3JnYW5pemF0aW9ucy8xMjM0NTY3ODkiLCAib3JnYW5pemF0aW9ucy8xMDExMTIxMzE0Il0sCiAib3B0aW9ucyI6ICJzdHJpY3QiCn0K

以下是编码组织 ID 后的标头示例:

// Encoded representation
X-Goog-Allowed-Resources: ewogInJlc291cmNlcyI6IFsib3JnYW5pemF0aW9ucy8xMjM0NTY3ODkiLCAib3JnYW5pemF0aW9ucy8xMDExMTIxMzE0Il0sCiAib3B0aW9ucyI6ICJzdHJpY3QiCn0K

// Plain-text representation (As HTTP disallows some characters, encode the organization ID)
// Plain-text representation is included here only for readability
X-Goog-Allowed-Resources: {"resources": ["organizations/1234", "organizations/3456"], "options": "strict"}

配置出站代理

如需向源自受管设备的请求插入标头,请配置出站流量代理。

确保如果 Google Cloud 贵组织中的用户明确提供 HTTP 标头,出站代理会使用 Google Cloud 管理员提供的值替换用户提供的值。

为避免向 Google Cloud以外的目标添加此标头,请将出站流量代理配置为仅向具有以下目标的请求添加组织权限限制标头:

  • *.google.com
  • *.googleapis.com
  • *.gcr.io
  • *.pkg.dev
  • *.cloudfunctions.net
  • *.run.app
  • *.tunnel.cloudproxy.app
  • *.datafusion.googleusercontent.com

如需了解因违反组织限制而出现的错误消息,请参阅错误消息

后续步骤