我可以在使用 `gcloud auth` 创建访问令牌时设置范围吗

时间:2021-04-20 14:20:56

标签: google-cloud-platform gcloud

我在示例 Java 代码中看到有可能在请求刷新令牌时添加范围:

credential.createScoped(Arrays.asList("someapi")).refreshToken

我在 Python 中看到了同样的情况。但是 cli 中没有范围的配置选项。

gcloud auth application-default print-access-token

没有gcloud auth --scopes="someapi" application-default print-access-token

您知道如何在 cli 中为自定义范围设置访问密钥吗?

3 个答案:

答案 0 :(得分:1)

我认为通过 gcloud auth application-default print-access-token 命令请求自定义范围在设计上是不可用的。

原因是您可以使用用户帐户或服务帐户登录 Google Cloud SDK。如果您使用 gcloud auth application-default login 登录到用户帐户,Cloud SDK 仅请求对 GCP API 的完全访问权限的范围。

Cloud SDK oauth scope

因此,当您运行 gcloud auth application-default print-access-token 时,Google Cloud SDK 无法通过您登录的帐户访问除 GCP 之外的任何 API,因此,它无法打印具有自定义范围的访问令牌。

答案 1 :(得分:1)

在 API 中,就像在 gcloud auth print-access-token 命令中一样,如果您在用户帐户上设置范围,它将失败。只能限定服务帐户,不能限定用户帐户。

事实上,您可以像 gcloud auth application-default login --scopes=... 这样在您的用户帐户凭据上设置范围,然后,当您生成令牌时,它会自动正确地确定范围。

请记住,您尤其需要将凭据范围限定为不访问任何 Google Cloud API(工作区、地图、Youtube 等)

答案 2 :(得分:0)

以下工具有助于获取与 API 配合使用的不记名令牌:

oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications

[ brew install oauth2l 或 https://github.com/google/oauth2l ]