GCPサービスアカウントの権限設定について

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、 「どうやって直すのか?」 という具体的な修復手順(コンソール、gcloud CLI、Terraformなど)まで、分かりやすく解説します。
この記事では、サービスアカウントへの管理者権限付与を制限する設定手順について、リスクと対策を解説します。

ポリシーの説明
サービスアカウントへの管理者権限付与を制限し、最小権限の原則を実装します。
Google Cloudのサービスアカウントは、アプリケーションやワークロードがGoogle Cloud APIにアクセスするための認証メカニズムとして使用されます。しかし、これらのサービスアカウントに管理者権限(Project Owner、Project Editor、Organization Administratorなど)を付与することは、重大なセキュリティリスクをもたらします。サービスアカウントには業務に必要な最小限の権限のみを付与し、管理者権限の使用を厳格に制限することが重要です。
なお、Google推奨のベストプラクティスは、可能な限りサービスアカウントキーを使用せず、Workload Identity FederationやIAMサービスアカウントの短期認証情報を使用することになっています。サービスアカウントを利用するのではなく、できる限りまずは代替手段を取るようにしましょう。
修復方法
コンソールでの修復手順
⚠️ 重要な注意事項 管理者権限を削除する前に、必ず以下を実施してください:
- 管理者権限を持つサービスアカウントの特定
- Google Cloud Consoleにログインします
- 「IAMと管理」→「IAM」を選択します
- フィルタで「タイプ:サービスアカウント」を選択します
- 「ロール」列で以下の管理者権限を確認します:
- roles/owner(プロジェクトオーナー)
- roles/editor(プロジェクト編集者)
- roles/resourcemanager.organizationAdmin(組織管理者)
- roles/iam.securityAdmin(セキュリティ管理者)
- サービスアカウントの使用状況の確認
- 「IAMと管理」→「サービスアカウント」を選択します
- 対象のサービスアカウントをクリックします
- 「キー」タブで、アクティブなキーの有無を確認します
- 「権限」タブで、このサービスアカウントを使用しているリソースを確認します
- 必要な権限の特定
- 「ログエクスプローラー」で、該当サービスアカウントの活動を確認します
- 以下のフィルタを使用:
protoPayload.authenticationInfo.principalEmail="[SERVICE_ACCOUNT_EMAIL]"
- 実際に使用されているAPIとリソースを特定します
- 管理者権限の削除と適切な権限の付与
- 「IAM」ページに戻ります
- サービスアカウントの行で「編集」(鉛筆アイコン)をクリックします
- 管理者権限を削除します
- 必要最小限の事前定義ロールを追加します:
- 例:Compute Engineの管理のみが必要な場合
- roles/compute.instanceAdmin.v1
- roles/iam.serviceAccountUser(必要な場合)
- 例:Cloud Storageの読み取りのみが必要な場合
- roles/storage.objectViewer
- 例:Compute Engineの管理のみが必要な場合
- 権限の検証
- 変更を保存した後、アプリケーションが正常に動作することを確認します
- 必要に応じて、追加の権限を段階的に付与します
最後に
この記事では、Google Cloud IAMにおけるサービスアカウントへの管理者権限(Owner/Editor)付与を制限する包括的な方法を解説しました。
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。