Google CloudのIAMで最小権限の原則を実現する方法

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

G-gen の杉村です。当記事では、Google Cloud の IAM(Identity and Access Management)で最小権限の原則を実現するための手段をご紹介します。

IAM と最小権限の原則

IAM(Identity and Access Management)は、Google Cloud のリソースに対する権限管理の仕組みです。詳細は以下の記事をご確認ください。

blog.g-gen.co.jp

セキュアなクラウド環境を維持するには、IAM で最小権限の原則を遵守することが重要です。最小権限の原則とは、「システムの利用主体に持たせるアクセス権限は、必要最小限に抑えるべきである」という設計思想であり、情報セキュリティの大原則です。

しかし Google Cloud でシステムをしばらく運用していると、IAM ロールが過剰に付与されてしまっていることに後から気がつくことが、度々あります。

当記事では、最小権限の原則を守る手段を、「過剰な権限を予防する」「すでに付与された権限を整理する」の2パートにわけて解説します。

過剰な権限を予防する

IAM の仕組みを正確に理解する

プロジェクトのオーナーや組織の管理者にとって、最小権限を実現するためになにより重要なのは、Google Cloud の IAM の仕組みを正確に理解することです。以下のような概念を正確に理解するべきです。

  • リソースの持つ IAM ポリシー
  • IAM バインディング
  • 継承

Google Cloud の IAM の仕組みは、Amazon Web Services(AWS)等のそれとは大きく異なります。詳細は以下の記事をご参照ください。

blog.g-gen.co.jp

IAM 権限を操作できる人を限定する

組織やプロジェクト、各 Google Cloud リソースに過剰な権限が付与されてしまう状況を予防するには、IAM 権限を操作できる人(主体)を限定することが重要です。

例えば、組織レベルの IAM ポリシーを操作できる権限である resourcemanager.organizations.setIamPolicy は、以下のような IAM ロールに含まれています。

  • 組織の管理者(roles/privilegedaccessmanager.organizationServiceAgent
  • セキュリティ管理者(roles/iam.securityAdmin

また、プロジェクトレベルの IAM ポリシーを操作できる権限である resourcemanager.projects.setIamPolicy は、以下のような IAM ロールに含まれています。

  • オーナー(roles/owner
  • 組織の管理者(roles/privilegedaccessmanager.organizationServiceAgent
  • セキュリティ管理者(roles/iam.securityAdmin
  • プロジェクト IAM 管理者(roles/resourcemanager.projectIamAdmin

組織やフォルダ、プロジェクトの IAM 権限が容易に変更されないよう、これらのロールを付与するアカウントを限定的にすることが望ましいです。

ある権限がどの IAM ロールに含まれているかを調査するには、以下のドキュメントをご参照ください。

参考 : IAM permissions reference

一時的な特権の管理

前述のように IAM 権限を操作できる人を限定すると、開発スピードが低下したり、運用性が低下することが考えられます。

必要なときに、必要な間だけ、必要な権限を付与するような運用を実現するには、Privileged Access Manager(PAM)が利用できます。PAM はフルマネージドの特権管理ワークフローであり「権限の申請」「承認」「所定時間が経過したあとの特権剥奪」といったワークフローを簡単に実装できます。

PAM の申請画面

PAM によって承認フローを含めたジャスト・イン・タイムな IAM 特権管理を行うことで、セキュアな最小権限を維持しながら、開発スピードや運用性の低下を防ぐことが可能です。

PAM の詳細は以下の記事をご確認ください。

blog.g-gen.co.jp

すでに付与された権限を整理する

IAM Recommender

IAM Recommender は、最近(デフォルトで90日間)の IAM 利用状況を機械学習で分析し、推奨される対策を提示してくれる機能です。あるプロジェクト(または組織やフォルダ)に付与された過剰な権限を洗い出したいときに利用できます。

IAM Recommender は、組織やフォルダ、プロジェクトの IAM 画面から確認することができます。

IAM 一覧画面に表示される推奨事項

推奨事項の内訳

IAM Recommender は無料で利用できますが、以下の分析や推奨を生成するには、組織レベルで Security Command Center のプレミアムティアに登録している必要があります(一部抜粋)。

  • 基本ロール(オーナー、編集者、閲覧者)以外の推奨事項
  • 組織、フォルダ、プロジェクト以外に付与されたロールに関する推奨事項

無料版だとオーナー、編集者、閲覧者といった基本ロールに対してしか推奨事項が生成されません。

参考 : ロールの推奨事項の概要

Policy Analyzer

Policy Analyzer は、Google Cloud リソースの IAM ポリシーに対してクエリを行い、あるプリンシパル(Google アカウント等)やロール、リソースの権限を一覧表示させたいときに使います。

例えば、以下のようなことが実現可能です。

  • あるプロジェクトにおいて、サービスアカウントの権限を借用できるプリンシパルを一覧化する
  • あるプロジェクトにおいて、ファイアウォールルールを編集できるプリンシパルを一覧化する
  • ある BigQuery データセットを編集または閲覧可能なプリンシパルを一覧化する

Policy Analyzer は、Google Cloud コンソールの「IAM と管理」の画面の「ポリシー アナライザ」から利用できます。無料で利用できますが、1日に20回のクエリまでという制限があります。20回を超えるクエリを実行するには、組織レベルでSecurity Command Center のプレミアムティアに登録する必要があります。

任意の検索ができるカスタムクエリに加えて、以下のようなプリセットのクエリが用意されています(スクリーンショットは2024年10月現在)。

プリセットされているクエリ

カスタムクエリ作成画面

カスタムクエリの結果画面

参考 : IAM ポリシー用の Policy Analyzer

Cloud Assets Inventory

Cloud Assets Inventory には、あるプリンシパルがどのリソースに権限を持っているかをリストアップする機能があります。利用料金はありません。

Google Cloud コンソールの Cloud Asset Inventory 画面から、あるいは gcloud コマンド等を使ってクエリをかけることができます。

Cloud Asset Inventory での IAM ポリシークエリ

この機能は、以下のようなユースケースで利用できます。

  • 特定のプリンシパルが、どのリソースに対してどのような権限を持っているかをリストアップする
  • 組織全体で、オーナー権限を持っている Google アカウントやグループをリストアップする
  • あるデータセットに対して、誰がアクセス権限(閲覧、編集)を持っているかをリストアップする

これらは、Policy Analyzer でできることとほとんど同様です。ただし、Cloud Assets Inventory でのクエリに実行回数制限はないため、利用方法を理解していれば、こちらの機能で代替することができます。

Cloud Assets Inventory の詳細については、以下の記事もご参照ください。

blog.g-gen.co.jp

杉村 勇馬 (記事一覧)

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

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