【发布时间】:2020-07-29 00:21:34
【问题描述】:
我目前正在使用 GKE Workload Identity 从 GKE 中访问 Google Cloud Platform 资源。这非常适用于 Google Cloud Storage 和其他平台资源。
但是,当我尝试使用 GKE Workload Identity 访问 Google 表格时,我遇到了“身份验证范围不足”的问题。
当我为服务帐户生成一个密钥文件并在我的代码中使用它时,我可以手动将范围设置为https://www.googleapis.com/auth/spreadsheets。它按预期工作,我可以访问工作表。如果我将范围更改为 https://www.googleapis.com/auth/cloud-platform,我会收到与 GKE Workload Identity 相同的错误“身份验证范围不足”。此结果表明服务帐户工作正常,因此问题似乎与分配给 GKE 工作负载标识的范围有关。
使用 GKE Workload Identity,我在 Python 中使用credentials = google.auth.default() [1] 检索凭据。 credentials 对象具有预期的服务帐户,并且范围设置为 https://www.googleapis.com/auth/cloud-platform。我现在可以访问服务帐户有权访问的存储桶和其他云资源。然而,谷歌表格似乎需要https://www.googleapis.com/auth/spreadsheets 范围,但我还没有找到任何方法来设置它。从 GKE 集群中运行的 GKE 元数据服务器检索工作负载身份(服务帐户)和范围。据我所知,GKE 工作负载标识的范围似乎被“硬编码”为https://www.googleapis.com/auth/cloud-platform。我没有找到有关这是否可以更改的信息。
(我尝试将电子表格范围添加到 GKE 节点 oauth 范围。没有效果。根据我从文档中可以理解的内容,它应该是不相关的。)
(当然我可以只使用密钥文件来完成这项工作,但 GKE 工作负载身份的全部意义在于避免安全地生成和分发密钥的所有麻烦)
【问题讨论】:
-
我遇到了完全相同的问题。你有没有机会解决它?
-
我三个。请谷歌员工帮助我们
标签: google-oauth google-kubernetes-engine google-sheets-api service-accounts