簡體   English   中英

我的帳戶在 GCP 控制台上具有某些權限,但在 Terraform/命令行中沒有

[英]My account has certain permissions on GCP console but not in Terraform/command line

在 GCP 控制台上,我可以成功創建 GCE 虛擬機,並為共享 VPC 子網中的虛擬機創建主地址和別名 IP 地址。

但奇怪的是,當我嘗試使用 Terraform 重復該過程時,出現以下錯誤:

Error: Error creating Address: googleapi: Error 403: Required 'compute.addresses.createInternal' permission for 'projects/xxx/regions/us-central1/addresses/yyy', forbidden

我在 'compute.instances.setDeletionProtection' 上也遇到了另一個權限錯誤,嘗試略有不同。

其他要分享的信息:

  • 我對控制台和 Terraform/命令行使用相同的身份(我的用戶帳戶)。
  • 我在我們的組織管理員授予的項目中擁有有限的自定義“開發人員”角色。 我不知道它包含的具體權限,但我認為這已經足夠了,因為我可以在 GCP 控制台上完成我的任務。
  • VM 在項目 A 中,而共享 VPC/子網在項目 B 中。我在另一個我是 VM 駐留項目的所有者的場景中使用了以下 Terraform 代碼,並且沒有問題:
resource "google_compute_address" "alias-ips" {
  name = var.name
  address_type = "INTERNAL"
  purpose = "GCE_ENDPOINT"

  region = var.region

  subnetwork = "https://www.googleapis.com/compute/v1/projects/${var.subnet_project}/regions/${var.region}/subnetworks/${var.subnet}"

  project = var.project
}
  • 我嘗試了策略疑難解答,但結果沒有幫助。 它在項目級別顯示“未知”,在自定義“開發人員”角色上顯示“未知”。 我在“調查結果”列中“無權查看訪問權限”。

接下來我將嘗試使用gcloud創建相同的資源。 但我懷疑它也會產生任何有用的錯誤。

更新1:

我嘗試gcloud創建一個虛擬機。 我能夠創建虛擬機及其主要和別名 IP。 但是當我嘗試設置刪除保護(使用gcloud compute instances update XXX --deletion-protection或在創建 VM 時使用選項--deletion-protection時,我再次收到 403 錯誤。但令人困惑的是我可以創建 IP . 這可能意味着我寫的 TF 不是完全正確的方式,或者 TF 處理別名 IP 創建的方式與gcloud不同。

更新 2:

根據請求,我通過gcloud auth application-default login為 TF 設置了 GCP authN。 我從未接觸過GOOGLE_APPLICATION_CREDENTIALS ,所以它是空的。 我很確定我使用的是相同的帳戶/身份。 我在運行 Terraform 的環境中運行 Terraform 以在我使用的其他 GCP 項目中執行所有操作都沒有問題,在那里我的權限限制較少。

我們最終發現這是因為我們的管理員為我創建的自定義角色缺少這兩個權限:

  • compute.addresses.createInternal
  • compute.instances.setDeletionProtection

在他們為我添加了這兩個權限之后,我就可以完成我的工作了。 對我來說,兩個阻塞問題分別是兩個權限,1)無法在共享 VPC/子網中創建 IP 地址; 2) 無法為虛擬機開啟“刪除保護”。

因此,GCP 或 Terraform 檢查權限的方式沒有問題,我的身份驗證也沒有問題。 我認為這是一個更大的問題,但結果只是兩個權限阻止了我創建 VM。

我可以有計算實例管理員角色和/或計算網絡用戶角色,這樣我就不會遇到這個問題。 我們的管理員決定不直接授予我(開發人員)這兩個角色的原因是它們包含的權限太寬泛。

但我仍然懷疑創建別名 IP 時 GCP Console 與 Terraform/gcloud 中的矛盾行為。 我猜是 GCP Console 使用了一些非標准的 API,這與 Terraform/gcloud 的工作方式不同。 它背后可能存在錯誤或某些未記錄的功能。

暫無
暫無

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

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