Google Cloudにもついに登場!組織のセキュリティを強化するPrivileged Access Manager(PAM)を使ってみた
はじめに
クラウドサービスの多くでは、アカウントの乗っ取りや予期せぬ操作によるサービスへの悪影響を軽減することを目的として、そのアカウントに本当に必要なアクセス権限のみを付与する「最小権限の原則」という考え方がアカウント運用のベストプラクティスとして採用されています。
この原則に基づくセキュリティ体制をより強固にするサービスとして、2024年5月、Google Cloudより「Privileged Access Manager(PAM)」がプレビュー版で公開されました。
今回はこのPrivileged Access Manager(PAM)についてご紹介します。
特権アクセス管理(Privileged Access Management)とは
Privileged Access Manager(PAM)の紹介をする前に、はじめに「特権アクセス管理(Privileged Access Management)」という考え方についてご紹介します。
特権アクセス管理(PAM)とは、システム管理者など、高い権限を持つアカウントへのアクセスを厳密に管理し、不正なアクセスや悪用を防ぐためのセキュリティ対策です。
他のすべての情報セキュリティソリューションと同様に、ユーザー、プロセス、およびテクノロジーの組み合わせによって機能します。
Google Cloudでも以前より特権アクセス管理の導入が推奨されていましたが、その方法はGoogleグループに対するユーザーの追加・削除、オープンソースコードによる専用アプリケーションの利用するものであり、導入・運用コストが比較的高いものでした。
参考: 一時的に昇格したアクセスの概要(Google Cloud)
PAMが必要とされる理由
特権アカウントは、他のアカウントに比べて多くの権限を有しているアカウントであるため、攻撃の対象となりやすい、あるいは標的となった場合のリスクが大きい懸念があります。
サービスの稼働に直接関わるリソースの操作や、組織の機密情報へのアクセス権など、多くの権限を有しているため、これが第三者の手に渡った時の損失は致命的なものとなる可能性があるわけです。
PAMは、通常のアカウントの保護とは異なる形で特権アカウントへの保護を与えるため、リスク管理には欠かせません。
Google CloudのPrivileged Access Manager (PAM)とは
次に、上記のような背景がある中でGoogle Cloudよりプレビュー公開されたフルマネージドサービス「Privileged Access Manager(以下、PAM)」について紹介します。
Google CloudのPAMは、外部のアプリに頼ることなく運用ができる設計となっているのが特徴です。従来のような設定負担が強いられず、円滑なセキュリティ強化に貢献します。
利用資格(Entitlement)を利用したジャストインタイム、承認ワークフローの実現
PAMでは、利用資格(Entitlement)というリソースを使用した特権アクセスの管理を行います。利用資格には、以下を設定することが可能です。
- 承認されることで付与されるIAMロール(基本ロールおよび事前定義ロールのみ)
- 権限を付与する最大期間
- 利用資格を申請できるプリンシパル(ユーザーアカウント、グループアカウント)
- 利用資格を承認できるプリンシパル
- 利用資格の申請、承認等の通知先
この利用資格を介した特権アクセス管理により、時限的な権限付与や特権アクセス利用フローの簡素化を実現することが可能です。
なお、利用資格そのものの管理について、申請及び承認を行うプリンシパルとは別に「管理者」となるプリンシパルが行うことが望ましいです。
監査ログへの自動記録によるセキュリティ向上
PAMでは、利用資格の作成から承認後の権限の付与・剥奪までのステップが監査ログとして自動的にCloud Loggingに記録されます。
これにより、特権アクセスの履歴を詳細に記録し、監査に利用することができたり、不審なアクティビティを早期に検知し、インシデント対応に役立てたりすることが可能です。
また、オプションでデータアクセス監査ログを有効化すると、利用資格閲覧等の記録も可能です。
注意事項
PAMを利用できる環境は、組織および組織配下のフォルダ・プロジェクトのみとなります。そのため、組織なしのプロジェクトではPAMを利用できません。
以下は組織なしのプロジェクトで利用資格を作成した際のエラーです。
参考: Google Cloud – Privileged Access Manager overview
PAMのはじめ方
PAMの利用をGoogle Cloudで開始するには、まずPAMを有効にする必要があります。Cloud IAMの画面に遷移すると[PAM]が用意されているので、これをクリックしましょう。すると[Set Up PAM]という表示が現れるので、これをクリックしてセットアップを完了します。
セットアップにおいては画面に表示される指示に従うだけの一本道であるため、大きなトラブルに見舞われる心配もないでしょう。
PAM運用の主な流れ
PAM運用を実際に進めていくにあたっては、
- 利用資格の作成
- 利用の申請
- 申請の承認
という3つのステップを踏みます。まずは管理者の手によって、PAMの利用資格を作成します。これを申請者に対して提供し、申請手続きを行ってもらい、別で確保している承認者によって、資格申請に認可を与えます。
これで自動的に申請者にはPAM利用資格が与えられ、安全なアクセス権限管理のもとでアカウントを扱えるという仕組みです。
実際にPAMを使ってみた
それでは実際にPAMを使ってみましょう。
今回の検証では、PAMを使用して「Computeインスタンス管理者(v1) (roles/compute.instanceAdmin.v1)」を一時的に付与していこうと思います。
検証の流れ
検証を行う前に、PAMを利用した権限付与の流れを以下に示します。
これらのフローのほかに、PAMを利用するための権限設定も必要ですので合わせて解説していきます。
必要な権限
PAMを利用する上で必要な権限は以下の通りです。いずれもPAMを利用するリソース(組織、フォルダ、プロジェクト)レベルでの設定が必要です。
サービスエージェント
事前定義ロール | 備考 |
Privileged Access Managerサービスエージェント (roles/privilegedaccessmanager.serviceAgent) | サービスエージェントは「service-org-〓組織ID〓@gcp-sa-pam.iam.gserviceaccount.com」です。 |
管理者
事前定義ロール | 備考 |
特権アクセス マネージャー管理者(roles/privilegedaccessmanager.admin) | |
フォルダーIAM管理者(roles/resourcemanager.folderIamAdmin) | フォルダーIAM管理者、プロジェクトIAM管理者、セキュリティ管理者のいずれかが付与されていれば問題ありません。 |
プロジェクトIAM管理者(roles/resourcemanager.projectIamAdmin) | 同上 |
セキュリティ管理者(roles/iam.securityAdmin) | 同上 |
申請者
事前定義ロール |
特権アクセス マネージャー閲覧者(roles/privilegedaccessmanager.viewer) |
承認者
事前定義ロール |
特権アクセス マネージャー閲覧者 (roles/privilegedaccessmanager.viewer) |
また、監査ログを表示する場合にはログ閲覧者(roles/logs.viewer)のロールが必要となります。 今回は管理者、申請者、承認者には上記の権限をすでに付与しているものとします。
事前準備
それではGoogle Cloudコンソール上の操作を行っていきましょう。はじめにPAMのAPIを有効化します。
次に、PAMのサービスエージェントに対して前述した IAM ロールを付与します。
これでPAMを利用する準備は完了です。
利用資格の作成(管理者操作)
管理者にて、利用資格を作成します。
利用資格名と利用資格により付与されるロール、付与される最大期間を設定します。
利用資格を申請できるプリンシパルを設定します。リクエストの際に理由が必須かどうかを選択することが可能です。
利用資格の申請を承認できるプリンシパルを設定します。
こちらも承認する際に理由を必須とするか否かを選択することが可能です。また、「承認なしでアクセスを有効化」のチェックをオンにすると、利用申請のみで権限の付与が可能となります。
最後に通知先の設定を行います。権限付与の流れのうち、以下の状態の時に通知をするか否かの設定が可能です。
- 利用資格が使用可能になった時
- 利用申請後、承認待ちになった時
- 申請承認後、リクエスト元に権限が付与された時
ただし、利用資格申請時には申請するプリンシパルに、利用資格承認時には承認するプリンシパルに対して自動的に通知されます。
作成後、利用資格が使用可能であることを確認します。
申請前の権限確認(申請者操作)
申請を行う前に、この時点でIAMロール「Computeインスタンス管理者(v1)」が付与されていないことを、ロールに含まれる権限の操作ができないことで確認します。
Compute Engine VMインスタンスコンソールにアクセスすると、以下のようにインスタンスの作成ができません。
利用資格の申請(申請者操作)
申請者にて、利用資格を申請します。
権限付与の期間、申請を行う理由を入力して申請します。
申請を行うと、利用資格のステータスが「「Approval Awaited(承認待ち)」に更新されます。
利用資格申請の承認(承認者操作)
申請が行われた後、承認者にて申請の承認/拒否を行います。
申請理由等を確認したうえで承認を行います。
承認完了後、その履歴が承認者画面で確認できます。
承認後の権限確認(申請者操作)
承認完了後、申請者画面では権限が付与される残り時間とともに利用資格が有効であることが確認できます。
この状態で再度 Compute Engine VMインスタンス画面にアクセスすると、無事インスタンスが作成できる(対象の IAM ロールが付与されている)状態となっています。
なお、この間 IAM コンソール画面を確認すると、対象のロールが PAM により付与されたものであることが確認できます。
期限切れ後の確認(申請者)
権限付与の期間を過ぎると、利用資格のステータスが終了となります。
この状態でもう一度 Compute Engine VM インスタンス画面にアクセスすると、インスタンスが作成できない(対象の IAM ロールが剥奪されている)状態となっています。
監査ログの確認
ここまでのフローについて、監査ログにすべて記録されます。監査ログはCloud LoggingでもPAMコンソールでも確認可能です。
まとめ
今回は、Google CloudのPrivileged Access Manager(PAM)についてご紹介しました。
Google CloudのPAMはフルマネージドサービスであるため、基盤管理が不要である点が特徴です。申請・承認時のコメント機能や監査ログの記録などにより、追加でGoogle Cloud以外のツールやサービスを必要とせず、特権アクセス管理の運用が可能である点も、高く評価されています。
2024年9月現在、このPAM機能はプレビュー版であるため本格的に運用する際にはいくつか注意点は存在します。ただ、従来のPAM導入のハードルの高さを加味すると、セキュリティ面で大きな効果を発揮するサービスであると感じます。本記事がGoogle Cloud 環境でセキュリティ設計・運用を行う方々の一助となれば幸いです。