AI活用#iam.disableServiceAccountKeyCreation

iam.disableServiceAccountKeyCreationの意味と対処|サービスアカウントの鍵が作れない時【2026年】

鍵の入ったガラスケースに大きな南京錠がかかり、その周りで会社員が通行証を掲げているイラスト
イラスト:AIで作成

この記事の結論

鍵が作れない原因は、2024年5月3日以降の組織に既定でかかる組織ポリシー。鍵を使わない借用方式か、1プロジェクトだけの例外で直せます。GA4をAIにつなぎ、借用で約2か月半回してから鍵に移した当社の記録つき。

目次7項目
  1. `iam.disableServiceAccountKeyCreation` とは?鍵の作成が止まる原因
  2. 鍵を作らずに済ませる対処手順(サービスアカウントの借用)
  3. プロジェクト1つだけ鍵の作成を許可する対処手順(組織ポリシーの例外)
  4. GA4をAIにつないだとき実際に起きたこと(借用→鍵方式へ)
  5. 鍵が作れない・認証が切れるを繰り返さない再発防止
  6. 業務で鍵の例外を作るときの注意(権限・保管・チーム運用)
  7. よくある質問

【実践講座】Claude Code 2daysセミナー(第二の脳構築講座)の詳細を見る →

サービスアカウントの鍵が作れないのは、iam.disableServiceAccountKeyCreation という組織ポリシーが効いているためです。2024年5月3日以降に作られた組織では既定でオンです。まず鍵を作らない「借用」方式に切り替え、どうしても鍵が要るときだけ、そのプロジェクト1つに例外を作ります。

iam.disableServiceAccountKeyCreation とは?鍵の作成が止まる原因

iam.disableServiceAccountKeyCreation とは、Google Cloud の組織ポリシーの1つで、サービスアカウントの外部の鍵(JSON の鍵ファイルなど)を新しく作る操作を禁止する制約です。公式ドキュメントによると、2024年5月3日以降に作られた組織では、この制約が既定で有効になっています。何も設定していないのに鍵が作れないのは、このためです。

用語を2つ押さえておきます。サービスアカウントとは、人ではなくプログラムが Google のサービスを使うときの専用アカウントです。組織ポリシーとは、組織の管理者が組織全体やフォルダ・プロジェクトに「この操作は禁止」と決めておく仕組みで、親(組織)で決めた内容は下(プロジェクト)に引き継がれます。

公式ドキュメントには、この制約で止まったときのエラーとして次の文が載っています。

FAILED_PRECONDITION: Key creation is not allowed on this service account.

画面から鍵を作ろうとした場合も、コマンドで作ろうとした場合も、原因は同じです。原因として多い順に並べると、次のようになります。

状況原因向いている対処
2024年5月3日以降に作った組織で、初めて鍵を作ろうとした制約が既定で有効(いちばん多い)借用方式に切り替える/1プロジェクトだけ例外
組織の管理者が明示的に制約をオンにしている会社のセキュリティ方針借用方式。例外は管理者と相談
管理された版の制約がオンになっているiam.managed.disableServiceAccountKeyCreation(同じ働き)上と同じ

なお、この制約はさかのぼって効きません。すでに作ってある鍵はそのまま使えます。止まるのは新しく作る操作だけです。

鍵を作らずに済ませる対処手順(サービスアカウントの借用)

鍵が作れないなら、鍵を使わない方法に切り替えるのが最初の選択肢です。サービスアカウントの借用(impersonation)とは、自分のGoogleアカウントのログイン情報を出発点に、サービスアカウントの短期間だけ有効なトークンをその都度発行してもらう方式です。鍵ファイルが存在しないので、漏れる鍵もありません。

GA4 の公式 MCP サーバー(AI から GA4 のデータを読むためのプログラム)を例に、手順を書きます。

  1. プロジェクトで3つの API を有効にする。 GA4 用に Google Analytics Admin API と Google Analytics Data API、借用用に Service Account Credentials API(iamcredentials.googleapis.com)です。
  2. サービスアカウントを作る。 ロールは空欄で構いません。GA4 の権限は GA4 側で付けます。
  3. 自分のアカウントに「トークン作成者」のロールを付ける。 対象のサービスアカウントに対して、roles/iam.serviceAccountTokenCreator を自分(借用する人)へ付与します。
  4. GA4 の管理画面で、サービスアカウントのメールアドレスを閲覧者として追加する。 当社はプロパティ単位ではなくアカウント単位で付けています(案件が増えても付け直さずに済むため)。
  5. 借用つきのログイン情報ファイルを作る。 GA4 の MCP サーバーの説明にあるとおり、次のコマンドを実行します。SERVICE_ACCOUNT_EMAIL は sa-name@my-project.iam.gserviceaccount.com のような自分のサービスアカウントに置き換えます。
gcloud auth application-default login \
  --impersonate-service-account=SERVICE_ACCOUNT_EMAIL \
  --scopes=https://www.googleapis.com/auth/analytics.readonly,https://www.googleapis.com/auth/cloud-platform
  1. 表示された保存先のパスを MCP サーバーの設定に入れる。 環境変数 GOOGLE_APPLICATION_CREDENTIALS にそのパスを指定し、AI のアプリを再起動して、プロパティの一覧が取れるか確かめます。

プロジェクト1つだけ鍵の作成を許可する対処手順(組織ポリシーの例外)

借用方式は、出発点である自分のログインが切れると止まります。無人で動かし続けたい用途では、鍵の方が向くこともあります。そのときは組織全体の設定は残したまま、対象のプロジェクト1つだけ制約を外します。

  1. 権限を確かめる。 公式ドキュメントでは、組織ポリシー管理者のロール(roles/orgpolicy.policyAdmin)を組織に対して持っている必要があります。
  2. 今の設定を確かめる。 gcloud org-policies describe iam.disableServiceAccountKeyCreation --effective --project=my-project で、制約が効いていることを見ます。
  3. 例外の設定ファイルを作る。 次の内容で YAML ファイルを用意します。
name: projects/my-project/policies/iam.disableServiceAccountKeyCreation
spec:
  rules:
  - enforce: false
  1. 適用する。 gcloud org-policies set-policy <作ったファイル> を実行し、もう一度手順2のコマンドで外れたことを確かめます。公式ドキュメントによると、組織ポリシーの変更が行き渡るまで最大15分かかります。
  2. IAM API を有効にして鍵を作る。 鍵の作成には IAM API の有効化と、サービスアカウント鍵管理者のロール(roles/iam.serviceAccountKeyAdmin)が要ります。コマンドは gcloud iam service-accounts keys create <保存先> --iam-account=sa-name@my-project.iam.gserviceaccount.com です。鍵ファイルはこのとき一度しかダウンロードできません。
  3. すぐに使わず、少し待つ。 公式ドキュメントは、作った鍵を使う前に60秒以上待つ必要がある場合があるとしています。

GA4をAIにつないだとき実際に起きたこと(借用→鍵方式へ)

僕の会社では、GA4 の公式 MCP サーバーで、自社サイトと案件の LP を合わせた7つのプロパティを会話で分析しています。この接続で、この制約に正面から当たりました。経緯は社内の作業記録から転記します。

日付(2026年)起きたことどうしたか
7月13日自分のログイン情報(ADC)で動かしていた接続が失効。ログインし直すと 403 SERVICE_DISABLED鍵ファイル方式へ移す準備をした
7月17日鍵の作成が iam.disableServiceAccountKeyCreation で止まると判明制約は外さず、借用方式に切り替え。Service Account Credentials API を有効にし、自分にトークン作成者を付与。権限の反映に約30秒。同日14時に接続を確認
7月28日ログインし直した後も、MCP サーバーが古い認証を持ったまま失敗し続けた再起動するまでの間は、API を直接呼ぶ手順で代わりに取得
8月中旬・8月26日自分のログインが切れるたびに GA4 の取得が止まった「ずっとつながる状態に」という方針で、恒久策を検討
10月4日Google Workspace の再認証の設定で、借用方式が invalid_rapt で定期的に切れ、検索データの自動処理も止まった分析専用のプロジェクト1つだけ例外を作り、鍵方式に切り替え

7月の時点では「鍵は使わない」と決めていました。鍵ファイルが無いぶん漏えいの心配がなく、既定で鍵を止めている Google の設定にも逆らわずに済んだからです。ただ、借用方式は出発点が人のログインなので、そのログインが切れると無人の定期処理まで止まります。借用に切り替えてから鍵に移すまでの約2か月半で、8月中旬・8月26日と同じ止まり方を繰り返しました(7月13日の失効も、出発点が人のログインだった点は同じです)。

最終的に選んだのは「組織全体の既定は残し、分析専用のプロジェクト1つだけ例外にする」形です。鍵を持つサービスアカウントは GA4 の閲覧しかできません。切り替えの日には、つまずきが2つありました。1つは IAM API が有効になっていなくて鍵が作れなかったこと。もう1つは、作った直後の1〜2分は Invalid JWT Signature で認証に失敗したことです。どちらも、時間を置くかAPIを有効にすれば直りました。

検討して採らなかった案も残しておきます。Workspace のログインの有効期間を延ばす案は、失効の周期が設定と合わず原因として確かではないうえ、全社のセキュリティ設定に触るので見送りました。組織の外に別のプロジェクトを作る案は、GA4 の権限を付け直す必要があり、個人のアカウントに頼る形が残るため見送りました。

鍵が作れない・認証が切れるを繰り返さない再発防止

当社で決めたルールは次の4つです。

  • 方式は「誰が動かすか」で選ぶ。 人がその場で使うだけなら借用方式、無人の定期処理で止まると困るなら、例外を1プロジェクトに絞った鍵方式にします。
  • 例外は分析専用のプロジェクト1つだけ。 ほかのプロジェクトは制約を有効のままにします。新しい用途で鍵が欲しくなっても、同じプロジェクトに相乗りさせず、まず借用で済まないかを考えます。
  • 借用方式でログインし直したら、認証ファイルを作り直してから MCP サーバーを再起動する。 ファイルの中に古いログイン情報が残ったり、サーバーがプロセスの中に古い認証を持ち続けたりするためです。このとき出るエラーの意味と直し方はGA4 MCPの「503 Reauthentication is needed」の原因と直し方に書きました。
  • 切り替えの後は、実際に1回データを取って確かめる。 「設定した」と「取れた」は別です。当社では、プロパティの一覧が返ってくるまでを完了の条件にしています。

AI と業務ツールをつなぐ仕組みそのものはMCPとは(AIと業務ツールをつなぐ仕組みと実例)で、AI 側で起きたエラーの切り分けはClaude Codeのエラー・困りごと一覧でまとめています。

業務で鍵の例外を作るときの注意(権限・保管・チーム運用)

この制約は、鍵が漏れる事故を防ぐために既定でオンになっています。外すときは、外した理由と範囲を説明できる形にしておきます。

1. 鍵に付ける権限は最小にする。 当社の鍵は GA4 の閲覧しかできないサービスアカウントのものです。編集や管理の権限を持つアカウントの鍵は作りません。

2. 鍵ファイルは決まった場所に置き、共有しない。 当社では、鍵は1台の Mac の決まったフォルダだけに置き、持ち主以外は読めない設定にして、Git の管理から外しています。チャットやメール、共有ドライブには貼りません。古い認証ファイルは控えとして残し、戻せるようにしました。

3. 漏れたときの動きを決めておく。 公式ドキュメントは、鍵の漏えいを Google Cloud が見つけたときの動きを決める制約 iam.serviceAccountKeyExposureResponse で、DISABLE_KEY(鍵を無効にする)を選ぶことを強く勧めています。鍵の有効期限を決める制約もありますが、期限切れで本番が止まることがあると注意書きがあります。

4. チームでは、例外の記録を残す。 どのプロジェクトで、いつ、誰の判断で例外にしたのかを書いておきます。担当が替わったときに「なぜここだけ鍵があるのか」が分からなくなると、外すべき例外が残り続けます。

GA4 や広告の数字を AI に読ませる仕組みを、自社の業務に合わせて組みたい場合は、下のセミナーで具体的な作り方をお伝えしています。

よくある質問

この制約がかかると、今ある鍵も使えなくなりますか?

使えなくなりません。公式ドキュメントでは、これらの制約はさかのぼって効かず、すでに作って設定してあるサービスアカウントには影響しないと説明されています。制約が止めるのは新しく鍵を作る操作なので、今ある鍵はそのまま使えます。

組織ポリシーの例外を作る権限が自分にない場合は?

鍵を使わない「借用」方式で進めるのが早道です。例外の設定には組織に対する組織ポリシー管理者のロールが要りますが、借用ならサービスアカウントへのトークン作成者ロールと、APIの有効化だけで済みます。例外がどうしても必要なら、組織の管理者に依頼します。

借用方式なのに、ときどき接続が切れるのはなぜですか?

借用の出発点が、あなた自身のGoogleのログイン情報だからです。当社では、そのログインが切れるたびにGA4の取得が止まりました。ログインし直した後は、認証ファイルを作り直し、AIのMCPサーバーも再起動しないと古い認証を使い続けます。

引用元・参考にした記事

  1. Restrict IAM service account usage出典Google Cloud Documentation参照
  2. Use service account impersonation出典Google Cloud Documentation参照
  3. Create organization policies出典Google Cloud Documentation参照
  4. Create and delete service account keys出典Google Cloud Documentation参照
  5. googleanalytics/google-analytics-mcp出典GitHub参照

Build Your
Second Brain.

Claude Code 2daysセミナー(第二の脳構築講座)、参加受付中。