「サービス アカウント キーの作成が無効になっています」への対処法

記事タイトルとURLをコピーする

G-gen の杉村です。Google Cloud(旧称 GCP)で、サービスアカウントから認証キーを作成しようとした際に サービス アカウント キーの作成が無効になっています 組織ポリシーの制約「iam.disableServiceAccountKeyCreation」が組織に適用されています。 と表示されてキーが作成できない場合の、対処法を紹介します。

事象とメッセージ

Google Cloud(旧称 GCP)で、サービスアカウントから認証キーを作成しようとした際に、以下のメッセージが表示され、サービスアカウントキーが作成できませんでした。

サービス アカウント キーの作成が無効になっています

サービス アカウント キーの作成が無効になっています

組織ポリシーの制約「iam.disableServiceAccountKeyCreation」が組織に適用されています。

考えられる原因: 組織ポリシー管理者が、サービス アカウント キーに関連するセキュリティ インシデントを防ぐために、この組織ポリシーを適用しました。また、 「デフォルトで保護」の適用 により、組織にポリシーが自動的に適用された可能性もあります。

推奨される次のステップ: サービス アカウント キーは、適切に管理しなかった場合、セキュリティ リスクとなります。可能であれば、 より安全な代替手段 を選択してください。サービス アカウント キーで認証する必要がある場合は、 組織の「組織ポリシー管理者」(roles/orgpolicy.policyAdmin)のロールを持つ管理者が 「iam.disableServiceAccountKeyCreation」の制約を 無効にする 必要があります。

追跡番号: (英数字)

コンソールが英語版の場合、以下のようなメッセージです。

Service account key creation is disabled

Service account key creation is disabled

The organization policy constraint 'iam.disableServiceAccountKeyCreation' is enforced on your organization. Possible Causes: Your Organization Policy Administrator enforced the Organization Policy to prevent security incidents related to Service Account keys. Alternatively, your organization may have been automatically enforced with the policy as part of Secure by Default enforcements.

Recommended Next Steps: Service account keys are a security risk if not managed correctly. You should choose a more secure alternative whenever possible. If you must authenticate with a service account key, an administrator with the "Organization Policy Administrator" (roles/orgpolicy.policyAdmin) role on the organization needs to disable the "iam.disableServiceAccountKeyCreation" constraint.

Tracking number: (alphanumeric characters)

原因

この事象は、組織ポリシーの制約 iam.disableServiceAccountKeyCreation が組織レベル、フォルダレベルまたはプロジェクトレベルで有効化されているときに発生します。

組織のポリシーは、セキュリティや統制の向上のために、所定のルールを Google Cloud 環境全体に適用する仕組みのことです。組織のポリシーの詳細は、以下の記事を参照してください。

blog.g-gen.co.jp

iam.disableServiceAccountKeyCreation は、サービスアカウントキーの作成を禁止する制約です。この制約は、2024年初頭以降に作成された Google Cloud 組織ではデフォルトで有効化されています。それ以前に作成された組織でも、管理者が明示的にこの制約を有効化している場合は、この事象が発生します。

対処する前に

サービスアカウントキーは JSON フォーマットのテキストファイル(もしくは P12 形式のファイル)であり、流出の危険があります。そのため一般的にはサービスアカウントキーの使用は非推奨であり、代わりにプログラム動作基盤(Compute Engine VM や Cloud Run Service)にサービスアカウントをアタッチしたり、動作基盤が Google Cloud 以外なのであれば Workload Identity や Workforce Identity の使用が推奨されます。

2024年初頭以降に作成された Google Cloud 組織で iam.disableServiceAccountKeyCreation がデフォルトで有効化されているのは、リスクの高い手法であるサービスアカウントキーの使用を抑止するためです。

このエラーを解消する最も簡単な方法は、iam.disableServiceAccountKeyCreation 制約を無効化することですが、無効化を行う前に、本当にサービスアカウントキーを生成する必要があるのか、代わりにサービスアカウントのアタッチや Workload Identity で代用できないかを、十分ご検討ください。

なお Workload Identity とは、OIDC や SAML 2.0 を利用して、Amazon Web Services(AWS)や Microsoft Azure、Active Directory Federation Service 等の ID を使って Google Cloud に認証する仕組みです。

対処方法

組織ポリシーの制約 iam.disableServiceAccountKeyCreation を無効化することで、サービスアカウントキーが作成できるようになります。

組織ポリシーの制約は、組織レベル、フォルダレベル、プロジェクトレベルで適用することができ、親リソースのポリシーは子リソースに継承されます。ただし、明示的に設定することで、子リソース側で親リソースの制約をオーバーライド(上書き)することも可能です。

よって、取り得る選択肢としては、以下のいずれかになります。

  1. iam.disableServiceAccountKeyCreation を組織レベルで無効化する
  2. iam.disableServiceAccountKeyCreation をフォルダレベルでオーバーライドして無効化する
  3. iam.disableServiceAccountKeyCreation をプロジェクトレベルでオーバーライドして無効化する

上記のうち 1.2. の場合、組織全体もしくはフォルダ全体で制約が無効になり、影響は他のプロジェクトにも及びます。3. の影響範囲は当該プロジェクトのみです。

これ以降、当記事では当該制約を無効化する手順を解説しますが、前掲の「対処する前に」をお読みいただき、リスクを理解したうえで実施してください。

対処手順

IAM 権限の確認

当手順を実施するには、操作する Google アカウント、もしくはアカウントが所属するグループが、組織レベル組織ポリシー管理者roles/orgpolicy.policyAdmin)ロールを持っている必要があります。

組織ポリシー管理者を付与できる最も下位レベルのリソースは「組織」です。よって、フォルダやプロジェクトレベルで制約をオーバーライドする場合でも、組織レベルで組織ポリシー管理者ロールを持っている必要があります。

作業者の Google アカウントが必要な権限を持っていない場合は、組織レベルで IAM ロール「組織ポリシー管理者」を付与してください。

組織、フォルダまたはプロジェクトを選択

Google Cloud コンソールにログインし、プロジェクトセレクターをクリックして、制約を無効化を適用する組織、フォルダ、またはプロジェクトを選択します。

当記事の「対処する前に」「対処方法」をよくお読みになり、制約の編集位置を決めたうえで選択してください。

組織のポリシー画面へ遷移

コンソール上部の検索ボックスに「組織のポリシー」を入力し、サジェストされた「組織のポリシー」を選択します。

または、「IAM と管理」画面から直接遷移しても構いません。

制約の編集画面へ遷移

制約一覧の上部のフィルタに constraints/iam.disableServiceAccountKeyCreation を入力します。

フィルタ結果の中から、Disable service account key creation をクリックして、編集画面へ遷移します。

制約を編集

ボタン「ポリシーを管理」を押下します。

「ポリシーのソース」ブロックで、「親のポリシーをオーバーライドする」を選択します。「ルール」ブロックが表示されるので、「ルールの追加」を押下し、「適用」を「オフ」にします。最後に、ボタン「ポリシーを設定」を押下します。

結果の確認

設定が完了すると、以下のような表示になります。

杉村 勇馬 (記事一覧)

執行役員 CTO / クラウドソリューション部 部長

元警察官という経歴を持つ現 IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 12資格、Google Cloud認定資格11資格。X (旧 Twitter) では Google Cloud や AWS のアップデート情報をつぶやいています。