能否使用现有非Google令牌访问GCP Cloud Logging服务?
GCP浏览器端非GCP令牌对接Cloud Logging方案说明
配置方向校验结论
你当前为自有身份认证提供商配置工作负载身份联合、绑定对应服务账号的方向完全正确,不需要额外开发自有API网关的令牌生成端点,GCP原生能力已经覆盖你要实现的两类目标。
两类目标的具体实现路径
前置配置校验项
- 确认绑定的服务账号已被授予
roles/logging.logWriter角色,确保其拥有Cloud Logging写入权限 - 确认工作负载身份池的属性映射、属性条件配置正确,可正确校验你自有IdP签发的令牌合法性
- 确认工作负载身份池、GCP STS服务、Cloud Logging API已配置允许你的前端域名跨域访问,避免前端调用被CORS规则拦截
目标1:浏览器端直接向Cloud Logging写入日志
- 第一步:在浏览器端拿到自有IdP签发的合法用户令牌后,直接调用GCP安全令牌服务(STS)的令牌交换接口,用第三方令牌换取GCP联邦身份的短期令牌
- 第二步:调用GCP IAM凭据服务的
generateAccessToken接口,传入绑定的服务账号名称,换取对应服务账号的短期访问令牌,该令牌默认最长有效期为1小时 - 第三步:携带拿到的服务账号短期令牌,直接调用Cloud Logging的
entries.write接口提交日志数据即可,全程不需要经过你自有服务的中转
目标2:直接获取Cloud Logging短期访问令牌
上述流程的第二步产出的服务账号短期令牌,就是仅拥有你给服务账号配置的Cloud Logging相关权限的短期访问令牌,不需要额外开发令牌生成逻辑,整个交换流程全部可以在浏览器端通过GCP公开API完成。
安全注意事项
不要为了简化流程在前端代码中硬编码任何GCP服务账号密钥,工作负载身份联合的设计初衷就是避免密钥硬编码的风险;同时建议你给工作负载身份联合配置严格的属性校验条件,给服务账号仅授予日志写入的最小必要权限,避免令牌泄露导致的越权风险。
常见踩坑点:如果前端调用接口时出现跨域错误,优先检查工作负载身份池的允许来源配置,以及对应GCP API的CORS设置,不要通过禁用浏览器安全策略的方式调试,避免线上出现同类问题。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

