首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为gcloud服务帐户分配作用域

为gcloud服务帐户分配作用域
EN

Stack Overflow用户
提问于 2018-10-14 17:40:39
回答 3查看 10.1K关注 0票数 1

我正在尝试向一个GCE实例(Google Cloud VM)添加一个额外的服务帐户,以便在那里运行的工具可以在GCloud分配给VM的默认服务帐户和另一个属于不同项目的服务帐户之间切换。但是我不明白如何为手动添加的Service帐户设置作用域:

代码语言:javascript
复制
gcloud auth activate-service-account --key-file=myaccount.json

现在该帐户出现在gcloud auth list中,但不清楚为其分配了哪些作用域。另一种方法是使用带有--scopes参数的gcloud auth application-default login,但我知道它不能用于服务帐户。

谷歌云documentation告诉我

使用Google Cloud Platform控制台创建具有适当作用域的服务帐户

但是我找不到任何选项来将作用域添加到服务帐户中,只有通过IAM可以添加的角色。有人知道如何将作用域分配给我的自定义服务帐户吗?

EN

回答 3

Stack Overflow用户

发布于 2018-10-17 03:42:09

您可以使用command like

代码语言:javascript
复制
gcloud compute instances set-service-account <instance name> --service-account <service account> --scopes <comma separated scopes here, alias or full URI>

命令文档here指定别名以及可用的完整URI。

您还可以使用如下命令:

代码语言:javascript
复制
gcloud alpha compute instances set-scopes <instance name> --scopes <comma separated scopes, alias or full URI>

文档here

作用域可以应用于默认服务帐户& VM实例。其他服务帐户(非默认帐户)被视为用户帐户,因此它们不像默认服务帐户那样使用作用域。非默认服务帐户像用户帐户一样使用IAM权限,因此您将无法编辑作用域,只能像用户帐户一样编辑IAM角色。如果您要将作用域与用户帐户结合使用,则机器和用户帐户都需要访问API对象才能访问它。更多关于作用域和服务帐户here的组合。

票数 2
EN

Stack Overflow用户

发布于 2018-10-14 18:35:16

在“安全”页上,单击“高级设置”。在客户机名称字段中,输入服务帐户的客户机ID。注:有关如何创建客户机ID的详细信息,请参阅创建服务帐户。

在一个或多个API作用域框中,复制并粘贴所需的作用域。

单击授权。在您输入的客户端ID名称旁边,确保所有作用域都带有说明。如果没有,请在“一个或多个API作用域”框中,再次正确输入作用域,然后单击“授权”。当所有的作用域都输入正确后,返回到Google Developers控制台并单击Save。

票数 0
EN

Stack Overflow用户

发布于 2020-12-08 15:12:57

如果您有权访问应用程序中的服务帐户credentials,则还可以通过编程方式提供其他作用域,如下所示-

代码语言:javascript
复制
Set<String> scopes = Collections.singleton("https://www.googleapis.com/auth/cloud-platform");
GoogleCredentials googleCredentials = ((ServiceAccountCredentials) credentials).createScoped(scopes);

然后,您可以通过以下方式获取access_token

代码语言:javascript
复制
private AccessToken getAccessToken(GoogleCredentials googleCredentials) throws IOException {
    if(googleCredentials.getAccessToken() == null) {
        googleCredentials.refresh();
        return googleCredentials.getAccessToken();
    }
    return googleCredentials.getAccessToken();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52801367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档