我的應用程序相當小:import ( "context" "fmt" "log" "google.golang.org/api/compute/v1")func main() { ctx := context.Background() computeService, err := compute.NewService(ctx) urlMapCall := computeService.UrlMaps.List("my-prj") urlMaps, err := urlMapCall.Do() if err != nil { log.Println(err) return } for _, mp := range urlMaps.Items { fmt.Println(mp.Name) }}我收到錯誤:googleapi: Error 403: Required 'compute.urlMaps.list' permission for 'projects/my-prj', forbidden我已經設置了環境變量GOOGLE_APPLICATION_CREDENTIALS=$HOME/.gcp/my-prj-aef233we.json。此 JSON 代表的服務帳戶具有項目編輯器和計算管理員角色。當我這樣做時gcloud compute url-maps list,它可以毫無缺陷地工作。我究竟做錯了什么?
3 回答

qq_笑_17
TA貢獻1818條經驗 獲得超7個贊
當您使用 gcloud 命令進行測試時,您很可能不會使用服務帳戶進行測試,而是使用個人帳戶進行測試。這意味著您沒有相同級別的許可,因此觀察到的行為會受到尊重。執行 agcloud config list
查看當前配置和用戶。
對于該權限compute.urlMaps.list
,3 個策劃角色包含該權限
roles/compute.viewer roles/compute.networkViewer roles/compute.instanceAdmin.v1
另外,不要忘記授予該角色roles/iam.serviceAccountUser
將其中之一添加到您的服務帳戶。

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
從 GCP 來看,我猜還需要啟用 servceAccountUser 角色
Roles/compute.admin 完全控制所有 Compute Engine 資源。
如果用戶將管理配置為作為服務帳戶運行的虛擬機實例,您還必須授予 Roles/iam.serviceAccountUser 角色。
- 3 回答
- 0 關注
- 188 瀏覽
添加回答
舉報
0/150
提交
取消