ブログ | XIMIX

【TIPS】Google Cloudのサービスエージェントを自力で作成したい

作成者: XIMIX 江口|2026.03.22

はじめに

 

Google Cloudで新しいAPIを有効化した際、背後で自動的に作成される「Google管理のサービスアカウント(サービスエージェント)」をご存知でしょうか?

Compute EngineやCloud Buildなど、多くのサービスは専用のアイデンティティを使用してリソースにアクセスします。通常、これらは「サービスを初めて利用した時」や「APIを有効化した時」に自動生成されます。

Compute Engineの場合

service-<プロジェクト番号>@compute-system.iam.gserviceaccount.com

Cloud Buildの場合

service-<プロジェクト番号>@gcp-sa-cloudbuild.iam.gserviceaccount.com

などです。これらのサービスアカウントは、サービスを運用するために必要な権限があらかじめ付与された状態で払い出されます。

背景:なぜ「自力で作成」が必要なのか?

先述の通り、サービスエージェントはGoogle Cloud側で自動生成されますが、それでは都合が悪いケースがあります。
 
例えば、VPC Service Controlsの境界を設定した環境で特定のサービスを使うとき、このサービスエージェントからの通信は例外的に許可するような許可ポリシーの設定が必要な場合があります。
通常の手順では、
①「サービスの初期利用」や「API有効化」
②作成されたサービスエージェントをVPC Service Controls境界に登録
という順番になります。
しかし、API有効化と同時にバックエンドで処理が動き出す」 ようなサービスの場合、2の登録が間に合わず、VPC SCの境界に阻まれてエラーが発生してしまいます。
また、IaC(Terraform等)でリソース管理をしている環境では、こうした「動かしてみないとアカウントが作成されない」という不確定要素が、リリース手順や依存関係の定義に悪影響を及ぼすことも考えられます。
 

解決策

以下の方法で、サービスエージェントを明示的に作成(プロビジョニング)することが可能です。

コマンドの場合

gcloud beta services identity create \
    --service=<関連するAPI> \
    --project=<プロジェクトID> # または --folder=<フォルダID> / --organization=<組織ID>

Terraformの場合

 data "google_project" "project" {}

resource "google_project_service_identity" "hc_sa" {
  provider = google-beta

  project = data.google_project.project.project_id
  service = "healthcare.googleapis.com"
}
 

サービスによってはプロジェクト単位ではなく、上位階層のフォルダや組織レベルで動作するものもありますが、このコマンド(およびリソース)はそれらにも対応しています。

サービスエージェントが作成されれば、通常のサービスアカウントと同様にIAMロールの付与が可能です。VPC SC環境や、特定リソース(KMSやGCSバケット等)へのアクセスが必要な場合は、これを利用して必要な権限をあらかじめ付与していきましょう。

参考 

Google Cloud、Google Workspace に関するご相談はXIMIXへ!

Google Cloud、Google Workspaceに関する お問い合わせはこちら