簡體   English   中英

已刪除 Compute Engine 默認服務帳號

[英]Deleted Compute Engine default service account

我無法在 GCE 中創建虛擬機。創建它時顯示錯誤消息,我附上了錯誤消息的屏幕截圖。我將簡要解釋我所做的事情。

--> 我已經從我的服務帳戶列表中刪除了我的計算引擎默認服務帳戶.. 后來我創建了新的服務帳戶..

--> 創建虛擬機時,我選擇了新創建的服務帳戶,創建虛擬機失敗但錯誤顯示在服務帳戶下找不到已刪除的服務帳戶 ID。

--> 在創建虛擬機時,它引用了我刪除的服務帳戶 ID..

現在我需要做什么? 是否有任何解決方案可以重新激活我的 Compute Engine 默認服務帳戶。現在我完全震驚了,我無法創建新的 vms 和 kube.netes。 在此處輸入圖像描述

要恢復您的谷歌計算默認服務帳戶,請在您的項目中運行以下gcloud命令:

gcloud services enable compute

在以前的版本中,該命令為:

gcloud service-management enable compute.googleapis.com

如本期所述: https : //issuetracker.google.com/issues/69612457

有兩個默認服務帳戶,我不確定您要指的是哪個:

  1. Google API服務帳戶(在您的情況下稱為933144605699@cloudservices.gserviceaccount.com 這是一個特殊服務帳戶。 它總是創建的,但從未在gcloud或Web控制台中列出。 它旨在由Google的某些內部內部流程代表用戶使用。 GKE可能是使用此帳戶的服務之一(我不確定)。 無法刪除此帳戶,您唯一可以做的就是將其從項目上的任何角色中刪除。 默認情況下是Editor 您可以隨時添加回去。
  2. 默認服務帳戶: 933144605699-compute@developer.gserviceaccount.com 這是一個普通服務帳戶,您可以刪除該帳戶。

在您粘貼的錯誤消息中,有一個不同的服務帳戶名稱,這是您創建的新帳戶嗎? 在這種情況下,您可能只需要在Web控制台上轉到IAM設置並將用戶添加到服務帳戶參與者。 看看此手冊頁: https : //cloud.google.com/compute/docs/access/iam#the_serviceaccountactor_role

現在,您可以通過執行以下卷曲請求來“取消刪除”服務帳戶:

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-length: 0" "https://iam.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_ID:undelete"

SERVICE_ACCOUNT_ID是您要恢復的帳戶的ID

您可以通過運行以下命令獲得服務帳戶列表:

gcloud logging read "resource.type=service_account" --freshness=10y

參考: https : //cloud.google.com/iam/docs/creating-managing-service-accounts#undeleting_a_service_account

  1. 首先,您需要找到已刪除的SERVICE_ACCOUNT_ID。 使用記錄高級查詢的方法是:
resource.type = "service_account"
protoPayload.authorizationInfo.permission = "iam.serviceAccounts.delete"

這里的例子:

==> unique_id值為SERVICE_ACCOUNT_ID

  1. 使用@ sherief-el-feky提供的API:
curl -X POST -H "Authorization: Bearer $ (gcloud auth print-access-token)" -H "Content-length: 0" https://iam.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_ID : undelete "

恢復 App Engine 或任何已刪除的服務帳戶

您可以取消刪除服務帳戶。 您將需要服務帳號的唯一 ID。 如果您沒有,可以在 Google Cloud Logging 上找到它。

您可以在側邊菜單中找到Logging服務:

谷歌日志,在哪里可以找到

然后,您將需要按日期過濾並鍵入service account以查找服務被刪除的確切時間。

Google Logging - 如何找到已刪除服務帳戶的唯一 ID

然后你可以

選項 1:使用 Google Cloud 命令行

您可以通過在您的計算機上安裝命令行來運行它 ( https://cloud.google.com/sdk/docs/install )。 或者您可以使用 Google Cloud Platform 提供的Active Shell在線運行它。

在哪里可以找到 Google Cloud Active Shell - gcloud

您要運行的命令如下。

gcloud beta iam service-accounts undelete 12345678901234567890

選項 2:使用 Google Cloud API

使用curl ,使用以下命令調用 API。

您需要將API_KEYPROJECT_IDSERVICE_ACCOUNT_UID更改為實際值。

curl -X POST \
-H "Authorization: Bearer API_KEY \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_UID:undelete"

您可以從 Google Cloud 命令行獲取 API_KEY:

gcloud auth application-default print-access-token

同樣,您可以在本地計算機上安裝gcloud ,也可以通過Active Shell在線使用它。

在哪里可以找到 Google Cloud Active Shell - gcloud

自 2022 年 2 月起,使用

gcloud beta iam service-accounts undelete <ACCOUNT ID>

ACCOUNT ID是 21 位unique id (uid) ,它是已刪除服務帳戶的最后一部分。

例如,

deleted:serviceAccount:abc-project@kubeflow-ml.iam.gserviceaccount.com?uid=123451234512345123451

uid是上述服務帳戶的最后一部分。

暫無
暫無

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

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