Artifact Registry は、コンテナ イメージを管理するための推奨サービスです。Container Registry のサポートは継続されますが、重要なセキュリティ修正のみが適用されます。Artifact Registry への移行については、こちらをご覧ください

Container Registry サービス アカウント

Container Registry サービス エージェントは、Google Cloud サービスを操作するときに Container Registry の代理として動作する Google マネージド サービス アカウントです。

最小権限のセキュリティ原則を実施するため、このサービス アカウントには、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

サービス アカウントを見つけるには、プロジェクトにアクセスできるプリンシパルのリストを確認します。

Console

  1. IAM ページに移動

  2. プリンシパル リストに Google が管理するアカウントを追加するには、[Google 提供のロール付与を含みます] チェックボックスをオンにします。

  3. リストをフィルタするには、[フィルタ] フィールドに「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 プロジェクト番号です。

プロジェクト ID とプロジェクト番号は、Google Cloud Console から取得するか、次のコマンドで取得できます。

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

権限の変更

Container Registry サービス エージェントの役割を付与し、編集者の役割を取り消すには:

  1. 次のコマンドで、Container Registry サービス エージェントの役割を付与します。

    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