簡體   English   中英

為 gcloud 服務帳號分配范圍

[英]Assigning scopes to a gcloud service account

我正在嘗試向 GCE 實例(Google Cloud VM)添加一個額外的服務帳戶,以便在那里運行的工具可以在 GCloud 分配給 VM 的默認服務帳戶和屬於不同項目的另一個服務帳戶之間切換。 從文檔中可以清楚地看出我如何將范圍分配給默認帳戶(關閉電源時在 VM 設置中可用)。 但我不明白如何為手動添加的服務帳戶設置范圍:

gcloud auth activate-service-account --key-file=myaccount.json

現在該帳戶出現在gcloud auth list ,但尚不清楚為其分配了哪些范圍。 另一種方法是使用具有--scopes參數的gcloud auth application-default login ,但我知道它不能與服務帳戶一起使用。

谷歌雲文檔告訴我

使用 Google Cloud Platform Console 創建具有適當范圍的服務帳戶

但我找不到任何將范圍添加到服務帳戶的選項,只能通過 IAM 找到角色。 有誰知道我如何為我的自定義服務帳戶分配范圍?

您可以使用以下命令

gcloud compute instances set-service-account <instance name> --service-account <service account> --scopes <comma separated scopes here, alias or full URI>

此處的命令文檔指定了別名以及可用的完整 URI。

您還可以使用以下命令:

gcloud alpha compute instances set-scopes <instance name> --scopes <comma separated scopes, alias or full URI>

文檔在這里

范圍可以應用於默認服務帳戶和 VM 實例。 其他服務帳戶(非默認)被視為用戶帳戶,因此它們不會像默認服務帳戶那樣使用范圍。 非默認服務賬戶像用戶賬戶一樣使用 IAM 權限,因此您將無法編輯范圍,只能像用戶賬戶一樣編輯 IAM 角色。 如果您要將范圍與用戶帳戶結合使用,則機器和用戶帳戶都需要訪問 API 對象才能訪問它。 此處詳細了解范圍和服務帳戶的組合。

我認為您可以通過管理控制台添加范圍。 在“安全”頁面上,單擊“高級設置”。 您可能需要單擊顯示更多才能查看高級設置。 在身份驗證部分,單擊管理 API 客戶端訪問。 在客戶名稱字段中,輸入您的服務帳戶的客戶 ID。 注意:有關如何創建客戶端 ID 的詳細信息,請參閱創建服務帳戶。

在一個或多個 API 范圍框中,復制並粘貼所需的范圍。

單擊授權。 在您輸入的客戶端 ID 名稱旁邊,確保所有范圍都顯示有說明。 如果沒有,請在“一個或多個 API 范圍”框中再次正確輸入范圍,然后單擊“授權”。 正確輸入所有范圍后,返回 Google Developers Console 並單擊保存。

如果您有權訪問應用程序中的服務帳戶credentials ,您還可以像這樣以編程方式提供其他范圍 -

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

然后,您可以通過以下方式獲取access_token

private AccessToken getAccessToken(GoogleCredentials googleCredentials) throws IOException {
    if(googleCredentials.getAccessToken() == null) {
        googleCredentials.refresh();
        return googleCredentials.getAccessToken();
    }
    return googleCredentials.getAccessToken();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM