1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[備忘録][GCP] Cloud Build で ビルドした Docker Image を Artifact Registry に push し、Cloud Run から pull するのに使用されるサービスアカウントを調べてみた。

Last updated at Posted at 2024-01-11

TL;DR

デフォルトでは、Artifact Registry へのアクセスには次のサービスアカウントが使用される。

Cloud Build から Artifact Registry への push をする時

  • Cloud Build サービス アカウント
    • PROJECT_NUMBER@cloudbuild.gserviceaccount.com

Cloud Run から Artifact Registry の Image を pull する時

  • Cloud Run サービス エージェント
    • service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com

背景

なお、CICDは次のような構成である。

CICD構成図

Cloud Build についての調査

  1. Cloud Build とリポジトリが異なるプロジェクトにある場合、またはユーザー指定のサービス アカウントを使用してビルドを実行する場合は、Artifact Registry 書き込みロールを付与するを使用して、リポジトリを持つプロジェクト内のビルドサービス アカウントに追加します。

    デフォルトの Cloud Build サービス アカウントには、同じ Google Cloud プロジェクト内のリポジトリに対して次の操作を行うためのアクセス権があります。

    • アーティファクトのアップロードとダウンロード
    • Artifact Registry に gcr.io リポジトリを作成します。

コマンドラインからのビルドの実行 見出しより

次のビルド構成ファイルでは、ユーザー指定のサービス アカウントを使用してビルドを実行するように Cloud Build を構成し、ビルドログをユーザーが作成した Cloud Storage バケットに保存するよう構成しています。

steps:
- name: 'bash'
  args: ['echo', 'Hello world!']
logsBucket: 'LOGS_BUCKET_LOCATION'
serviceAccount: 'projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT'
options:
  logging: GCS_ONLY

Cloud Build から Artifact Registry にpush する時は、cloudbuild.yaml でserviceAccount プロパティを明示的に指定していない限りは、デフォルトであるCloud Build サービス アカウント(PROJECT_NUMBER@cloudbuild.gserviceaccount.com)が使われる。

Cloud Run についての調査

新しいサービスをデプロイする 見出しより

デプロイ時に、Cloud Run サービス エージェントがデプロイされたコンテナにアクセスできる必要があります(デフォルトの場合)。

他の Google Cloud プロジェクトからイメージをデプロイする 見出しより

正しい IAM 権限を設定されている場合は、他の Google Cloud プロジェクトのコンテナ イメージをデプロイできます。

  1. Google Cloud コンソールで、Cloud Run サービスのプロジェクトを開きます。

  2. [Google 提供のロール付与を含む] を選択します。

  3. Cloud Run サービス エージェントのメールアドレスをコピーします。このアドレスには、@serverless-robot-prod.iam.gserviceaccount.com という接尾辞が付いています。

  4. 使用する Container Registry を所有するプロジェクトを開きます。

  5. [追加] をクリックして、新しいプリンシパルを追加します。

  6. [新しいプリンシパル] フィールドに、先ほどコピーしたサービス アカウントのメールアドレスを貼り付けます。

  7. Container Registry を使用している場合は、[ロールを選択] プルダウン メニューで、[ストレージ] -> [Storage オブジェクト閲覧者] を選択します。Artifact Registry を使用している場合は、[Artifact Registry] -> [Artifact Registry 読み取り] のロールを選択します。

  8. Cloud Run サービスを含むプロジェクトにコンテナ イメージをデプロイします。

    注: セキュリティを強化するには、コンテナ イメージを含む Cloud Storage バケットまたは Artifact Registry リポジトリにのみアクセス権を付与します。

Cloud Run サービス エージェント が使用され、Artifact Registry から image がpullされる。

参照

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?