簡體   English   中英

無法在新 GCE 虛擬機上列出服務帳戶

[英]Cannot list service accounts on new GCE VM

我在一個谷歌計算引擎項目中創建了一個新的虛擬機。 創建 VM 后,我將“計算引擎”訪問 scope 更改為“讀寫”。

在現有的(長期運行的)VM 上,如果我這樣做:

gcloud iam service-accounts list

我看到了該項目的默認服務帳戶。

但是,如果我在新創建的 VM 上執行相同的操作,則會收到錯誤消息:

  gcloud iam service-accounts list
ERROR: (gcloud.iam.service-accounts.list) User [<service-account>] does not have permission to access projects instance [<project>] (or it may not exist): Request had insufficient authentication scopes.

原始 VM 是 ubuntu-16,新 VM 是從 google 映像新創建的 ubuntu-18。

如果我查看項目 IAM 角色,我的用戶具有以下角色:

 - Access Approval Config Editor
 - Compute Admin
 - Role Viewer
 - Service Account Admin
 - Owner
 - Organization Administrator

我錯過了什么? 兩個虛擬機的訪問范圍是一樣的:

 - Compute Engine               Read Write
 - Service Control              Enabled
 - Service Management           Read Only
 - Stackdriver Logging API      Write Only
 - Stackdriver Monitoring API   Write Only
 - Stackdriver Trace            Write Only
 - Storage                      Read Only

除了訪問范圍之外,還有什么控制單個 VM 的訪問?

問題是 SSH window 在服務帳戶下運行,而不是我的普通用戶帳戶。 我需要跑步

gcloud init

重新配置以使用我的常規帳戶。

我通過這樣做發現了這一點

gcloud config list

在兩台機器上。

第1部分

除了訪問范圍之外,還有什么控制單個 VM 的訪問?

Compute Engine 范圍和服務帳號權限的結合。

Google Compute Engine 范圍限制權限,范圍不授予權限。

分配給 Compute Engine 的服務帳號決定了可用的權限/角色。 范圍可以限制授予服務帳戶的權限。 范圍不能授予服務帳戶尚未擁有的權限。

范圍是一種遺留的授權機制。

第2部分

gcloud iam service-accounts list ERROR: (gcloud.iam.service-accounts.list) 用戶 [] 沒有訪問項目實例 [] 的權限(或者它可能不存在):請求的身份驗證范圍不足。

這條信息的一部分讓大多數人感到困惑。 范圍是 Google 在 IAM 之前使用的舊式身份驗證機制。 范圍類似於權限,在此消息中表示OAuth 2 Permissions

命令gcloud iam service-accounts list需要權限iam.serviceAccounts.list ,該權限存在於角色中,例如名為Service Account Userroles/iam.serviceAccountUser 錯誤中提到的服務帳戶沒有授予列出服務帳戶權限的角色之一,或者范圍正在限制授予服務帳戶的權限。 最后閱讀我的建議。

服務帳戶角色

第 3 部分

如果我查看項目 IAM 角色,我的用戶具有以下角色:

分配給用戶的角色與分配給 Compute Engine 服務帳號的角色無關。

如果您使用 SSH 登錄 Compute Engine 並且沒有執行任何其他操作來進行身份驗證,那么您使用的是 Compute Engine 默認服務帳戶憑據。 服務帳戶和范圍會影響您的權限。

如果您使用 SSH 登錄 Compute Engine 並使用自己的帳戶進行身份驗證( gcloud auth login或類似帳戶),那么您的用戶身份使用的是授予您的用戶帳戶的權限,而不是 Compute Engine 默認服務帳戶憑據。

第 4 部分

原始 VM 是 ubuntu-16,新 VM 是從 google 映像新創建的 ubuntu-18。

如果兩個 VM 的范圍相同,那么您的問題是服務帳戶。 通常 Compute Engine 虛擬機使用 Compute Engine 默認服務帳號。 您可以更改分配給每個 VM 的服務帳戶。 仔細檢查分配給每個 VM 的內容。

概括

我建議您將范圍設置為Allow full access to all Cloud APIs ,並通過授予服務帳戶的角色控制權限。 不要使用Project OwnerProject Editor等角色。 這些角色非常強大。 對 Compute Engine 需要訪問的每個 Google Cloud 服務使用細粒度的權限。

暫無
暫無

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

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