Container Registry 服務帳戶

Container Registry 服務代理人是 Google 代管的服務帳戶,可在與 Google Cloud服務互動時代表 Container Registry 執行動作。

為確保安全性原則 (最低權限) 的執行,在 2020 年 10 月 5 日之後啟用 Container Registry API 的專案中,這個服務帳戶會獲得 Container Registry 服務代理人角色。這個角色具備下列權限:

  • 發布主題:pubsub.topics.publish
  • 讀取儲存空間物件 ACL:storage.objects.getIamPolicy
  • 讀取儲存空間物件資料和中繼資料:storage.objects.get
  • 列出值區中的儲存空間物件,並讀取物件中繼資料:storage.objects.list

先前,Container Registry 服務帳戶已獲授予「編輯者」角色。由於「編輯者」角色會授予在專案中建立及刪除大部分資源的權限,因此如果 Container Registry 服務帳戶具有這個角色,建議您限制權限。

找出服務帳戶 ID

Container Registry 服務帳戶的 ID 如下所示:

service-[PROJECT_NUMBER]@containerregistry.iam.gserviceaccount.com

如要尋找服務帳戶,請查看有權存取專案的實體清單。

主控台

  1. 前往「身分與存取權管理」頁面

  2. 如要將 Google 管理的帳戶新增至主體清單,請勾選「包含 Google 提供的角色授予項目」核取方塊。

  3. 如要篩選清單,請在「Filter」欄位中輸入 containerregistry

gcloud

執行下列指令,列出包含字串 containerregistry 的使用者主體:

gcloud projects get-iam-policy PROJECT-ID \
    --flatten="bindings[].members"
    --filter="containerregistry"

PROJECT-ID 替換為您的 Google Cloud 專案 ID。

確認目前的權限

如要驗證 Container Registry 服務帳戶目前的權限,請執行以下指令:

gcloud projects get-iam-policy PROJECT-ID  \
    --flatten="bindings[].members" \
    --format='table(bindings.role)' \
    --filter="bindings.members:service-PROJECT-NUMBER@containerregistry.iam.gserviceaccount.com"

地點

  • PROJECT-ID 是 Google Cloud 專案 ID。
  • PROJECT-NUMBER 是 Google Cloud 專案編號。

您可以在 Google Cloud 主控台中取得專案 ID 和專案編號,也可以使用下列指令:

PROJECT=$(gcloud config get-value project)
echo $PROJECT && gcloud projects list --filter="$PROJECT" --format="value(PROJECT_NUMBER)"

變更權限

如要授予 Container Registry 服務代理人角色並撤銷編輯者角色,請按照下列步驟操作:

  1. 使用下列指令授予 Container Registry Service Agent 角色:

    gcloud projects add-iam-policy-binding PROJECT-ID \
    --member=serviceAccount:service-PROJECT-NUMBER@containerregistry.iam.gserviceaccount.com --role=roles/containerregistry.ServiceAgent
    
  2. 使用下列指令撤銷「編輯者」角色:

    gcloud projects remove-iam-policy-binding PROJECT-ID \
    --member=serviceAccount:service-PROJECT-NUMBER@containerregistry.iam.gserviceaccount.com --role=roles/editor