Google Cloud プロジェクトレベルでのサービスアカウント権限の過剰付与を防ぐ方法

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、 「どうやって直すのか?」 という具体的な修復手順(コンソール、gcloud CLI、Terraformなど)まで、分かりやすく解説します。
この記事では、IAMユーザーにプロジェクトレベルでのService Account User/Token Creatorロールを割り当てない設定について、リスクと対策を解説します。

ポリシーの説明
「Service Account User」および「Service Account Token Creator」ロールは、プロジェクトレベルではなく、特定のサービスアカウントに対してユーザーに割り当てるべきです。プロジェクトレベルでこれらのロールを付与すると、ユーザーはプロジェクト内のすべてのサービスアカウントに対して過度な権限を持つことになり、最小権限の原則に反します。
修復方法
コンソールでの修復手順
Google Cloud コンソールを使用して、プロジェクトレベルのService Account User/Token Creatorロール割り当てを修正します。
1. 現在のプロジェクトレベルの割り当てを確認
- Google Cloud Console にログインします
- IAM と管理 > IAM に移動します

- フィルターで以下のロールを検索します:
roles/iam.serviceAccountUser
roles/iam.serviceAccountTokenCreator
- プロジェクトレベルで割り当てられているユーザーを特定し、リストを作成します
- 注意: リソース列に「このプロジェクト」と表示されている場合、それはプロジェクトレベルの割り当てです
2. プロジェクトレベルのロール割り当てを削除
- 問題のあるロール割り当ての行を見つけます
- 右側の鉛筆アイコン(編集)をクリックします
- Service Account UserまたはService Account Token Creatorロールを削除します
- 保存 をクリックします
3. サービスアカウントレベルでロールを再割り当て
- IAM と管理 > サービスアカウント に移動します
- 権限を付与する特定のサービスアカウントを選択します
- 権限 タブをクリックします
- アクセス権を付与 をクリックします
- ユーザーのメールアドレスを入力します
- 必要に応じて以下のロールを選択します:
- Service Account User(
roles/iam.serviceAccountUser
) - Service Account Token Creator(
roles/iam.serviceAccountTokenCreator
)
- Service Account User(
- 保存 をクリックします
ベストプラクティスと追加の考慮事項
1. 定期的な権限監査
製品などを活用した上で四半期ごとに不適切な権限付与を検出します
2. 例外処理のガイドライン
どうしてもプロジェクトレベルの権限が必要な場合:
- 期限付きアクセス(最大30日)を使用
- ビジネス上の正当な理由を文書化
- 代替案を検討(Workload Identity、短期トークンなど)
3. 移行戦略
既存の環境から段階的に移行する場合:
- 現状の権限マッピングを作成
- 影響を受けるワークロードを特定
- 段階的な移行計画を策定(開発→ステージング→本番)
- ロールバック計画を準備
最後に
この記事では、IAMユーザーにプロジェクトレベルでのService Account User/Token Creatorロールを割り当てないことの重要性について、リスクと対策を解説しました。
サービスアカウント関連のロールを適切にサービスアカウントレベルで管理することで、最小権限の原則を守り、セキュリティリスクを大幅に低減できます。定期的な監査と自動化されたアラートにより、不適切な権限付与を迅速に検出し、修正することが可能です。
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。