本页介绍了出站流量代理配置的前提条件、如何获取组织 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 是管理员
且小李是该组织的员工。考虑
将静态内容存储在公共 Cloud Storage 中的网站(如 altostrat.com)
并且位于 Example Organization 外部。如果阿力使用
strict
选项,用于将 Lee 的访问权限限制为“Example Organization”(示例组织),
她无法访问 altostrat.com 中的静态内容(可公开访问)
altostrat.com 拥有的 Cloud Storage 存储分区。此行为会影响到小李的
有效浏览网站且用户遇到相同的行为的能力
任何使用公共 Cloud Storage 存储静态内容的网站。
为了让 Lee 查看 altostrat.com 中的静态内容
并将所有其他 Google Cloud 访问权限设为仅限 Example Organization,
Alex 使用 cloudStorageReadAllowed
选项。
以下是一个有效的组织权限限制标头示例:
{
"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
如需了解因违反组织限制而出现的错误消息,请参阅错误消息。
后续步骤
- 了解如何使用组织限制。