全网域授权最佳实践

作为管理员,您可以使用全网域授权功能,允许内部应用和第三方应用访问用户的 Google Workspace 数据,而无需征得最终用户的同意。为此,您需要在 Google Cloud 控制台中创建一个服务账号,然后在 Google 管理控制台中向该账号委托全网域权限。您还可以在管理控制台中向服务账号提供有限的 API 范围。如需详细了解全网域委托,请参阅使用全网域授权功能控制 API 访问权限

管理和保护服务账号

Identity and Access Management (IAM) 提供了有关使用服务账号的指南,以限制访问权限并防范提权和不可否认性威胁。如需查看相关准则,请参阅服务账号使用最佳实践

虽然本指南中的所有建议都适用于保护使用全网域授权的服务账号,但以下是一些重点介绍的实践:

请改用直接服务账号访问权限或 OAuth 同意

如果您可以直接通过服务账号或使用 OAuth 权限请求来完成任务,请避免使用全网域授权功能。

如果您无法避免使用全网域授权功能,请限制服务账号可以使用的 OAuth 范围集。虽然 OAuth 范围不会限制服务账号可以模拟的用户,但会限制服务账号可以访问的用户数据类型。

避免使用全网域授权

限制服务账号密钥的创建和上传

使用组织政策来限制具有全网域授权的服务账号的密钥创建和上传。此限制条件会限制通过服务账号密钥进行的服务账号模拟。

不允许用户创建或上传服务账号密钥

停用默认服务账号的自动角色授予功能

默认创建的服务账号会被授予 Editor 角色,该角色允许相应账号读取和修改 Google Cloud 项目中的所有资源。您可以为默认服务账号停用自动角色授予功能,以确保这些账号不会自动获得 Editor 角色,并且恶意用户无法轻易利用这些账号。

不对默认服务账号使用自动角色授予功能

限制横向移动

横向移动是指一个项目中的服务账号有权模拟另一个项目中的服务账号。这可能会导致对资源的意外访问。使用“横向移动数据分析”可以检测和限制通过模拟进行的横向移动。

使用横向移动数据分析来限制横向移动

限制对具有全网域授权的服务账号的访问权限

如果服务账号具有的访问权限超出用户,请勿允许用户更改服务账号的允许政策。使用 IAM 角色和全网域授权可以限制对服务账号的访问权限。

避免让用户更改权限更高的服务账号的允许政策

保护服务账号免受内部风险的影响

只有在存在需要应用绕过用户同意才能访问 Google Workspace 数据的关键业务需求时,才应使用全网域授权。尝试使用替代方案,例如具有用户同意机制的 OAuth 或使用 G Suite 应用商店中的应用。如需了解详情,请参阅 Google Workspace Marketplace

请遵循以下最佳实践,保护具有全网域授权的服务账号免受内部人员外泄风险的影响:

仅授予对基本权限的访问权限

确保具有全网域授权的服务账号仅拥有执行预期功能所需的必要权限。不授予对非必需 OAuth 范围的访问权限。

将服务账号托管在专用 Google Cloud 项目中

确保具有全网域授权的服务账号托管在专用 Google Cloud 项目中。请勿将这些项目用于其他业务需求。

避免使用服务账号密钥

使用服务账号密钥不是执行全网域授权所必需的。请改用 signJwt API。

避免使用服务账号密钥进行全网域授权

限制对具有全网域授权的项目的访问权限

设置全网域授权后,尽量减少对 Google Cloud 项目拥有编辑权限的用户人数。您可以使用 Cloud Asset Inventory API 了解哪些人有权访问服务账号。例如,使用 Cloud Shell 运行以下命令:

gcloud asset get-effective-iam-policy
--scope=organizations/ORG_ID
--names=//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID
  • ORG_ID:您的 Google Cloud 组织 ID。了解详情
  • PROJECT_ID:服务账号所在的 Google Cloud 项目的 ID。了解详情
  • SERVICE_ACCOUNT_ID:服务账号的 ID。该 ID 列在管理控制台的全网域授权页面上的“客户端 ID”下方,或列在服务账号的电子邮件地址中。了解详情

查看 iam.serviceAccountTokenCreatoriam.serviceAccountKeyAdmin 所有者和编辑者等权限或角色,了解哪些人对服务账号拥有直接或继承的权限。

了解哪些用户可以访问 Google Cloud 服务账号