如何限制Google Workspace服务账号仅可模拟指定单个用户
解决服务账号仅能模拟单个特定用户的方案
方法1:通过Google Workspace管理控制台配置应用访问控制(核心限制)
- 登录Google Workspace管理控制台,进入安全 > 访问和数据控制 > API控制 > 应用访问控制
- 点击添加应用 > 按客户端ID搜索,输入服务账号对应的OAuth客户端ID(可从Google Cloud控制台服务账号详情或密钥文件的
client_id字段获取) - 选中目标应用后,点击选择限制,选择限制访问特定用户/组
- 添加指定用户(如
accounting@mycompany.com),保存配置
配置生效后,即使代码中修改subject为其他用户,API请求会直接返回403 Forbidden,从Workspace层面阻断非法访问。
方法2:代码层面固定目标用户(辅助防护)
在代码中硬编码要模拟的用户邮箱,避免误修改:
# 固定目标用户,禁止随意变更 TARGET_USER = "accounting@mycompany.com" credentials = service_account.Credentials.from_service_account_info( creds_dict, scopes=scopes, subject=TARGET_USER ) gmail_service = build("gmail", "v1", credentials=credentials, cache_discovery=False)
验证配置有效性
- 修改代码
subject为组织内其他用户,发起API请求,应返回权限错误 - 使用指定用户邮箱作为
subject时,请求可正常执行
注:应用访问控制配置可能需要数分钟生效,配置完成后请等待一段时间再测试。
内容的提问来源于stack exchange,提问作者twoface 16
相关产品推荐
相关产品推荐

