関数のソースデプロイ中に、Cloud Run は Cloud Build を利用して関数のビルドとデプロイを行います。
このページでは、関数のビルド時に Cloud Build が使用するユーザー指定のサービス アカウントの設定方法を説明します。このガイドは、Cloud Run に関数をデプロイし、Cloud Build で使用するサービス アカウントをカスタマイズする必要のあるプラットフォーム デベロッパーを対象としています。
始める前に
Cloud Build API を有効にします。
gcloud services enable cloudbuild.googleapis.com
Cloud Build のサービス アカウントとして使用するサービス アカウントを作成するか、既存のサービス アカウントを用意します。
必要なロール
ソースからデプロイするために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- Cloud Run ソース デベロッパー(
roles/run.sourceDeveloper
) - サービス アカウント ユーザー(
roles/iam.serviceAccountUser
)
関数をデプロイするときに、Cloud Build のサービス アカウントがビルドを実行できるようにするには、このサービス アカウントに次の IAM ロールを付与するよう管理者に依頼します。
- ログ書き込み(
roles/logging.logWriter
)- Cloud Logging にビルドログを保存するために必要です。 - Artifact Registry 書き込み(
roles/artifactregistry.writer
)-- Artifact Registry にビルドイメージを保存するために必要です。 - Storage オブジェクト管理者(
roles/storage.objectAdmin
)- Cloud Storage バケットから関数のソースを取得し、Artifact Registry にビルドイメージを保存するために必要です。
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスが Google Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
Cloud Build のサービス アカウントを指定する
デフォルトでは、ソースから関数をデプロイする際に Cloud Build が使用するサービス アカウントが指定されていない場合、Cloud Build は Cloud Build のサービス アカウントを使用します。
最小権限の原則に従って関数のセキュリティ ポスチャーを改善するため、ソースから関数をデプロイする際に独自のサービス アカウントを指定してビルドを実行することをおすすめします。
gcloud
関数のデプロイ時に、Cloud Build のサービス アカウントとして使用するサービス アカウントを指定できます。
ソースコードから関数をデプロイするときに Cloud Build のサービス アカウントを指定するには:
gcloud beta run deploy SERVICE \ --source . \ --function FUNCTION_ENTRY_POINT \ --build-service-account BUILD_SERVICE_ACCOUNT
次のように置き換えます。
- SERVICE: Cloud Run 関数の名前。
- FUNCTION_ENTRY_POINT: ソースコード内の関数のエントリ ポイント。 ソースからデプロイされるサービスを指定する場合は、
--function
フラグを省略します。 - BUILD_SERVICE_ACCOUNT: ユーザー指定のサービス アカウント。