PAMとは
PAMは、強すぎる権限を常時(always-on)付与し続けることによるリスクを軽減するためのGoogle Cloudのサービスです。ユーザーやサービスアカウントが「必要なときに」「必要な権限だけを」「必要な時間だけ」得られるようにする仕組みを提供します(Privileged Access Manager overview)。
これは一般に「Just-In-Time(JIT)アクセス」と呼ばれる考え方で、権限を持ちっぱなしにしないことで、認証情報が漏洩した場合や誤操作が起きた場合の被害範囲を小さくすることを狙っています(Move from always-on privileges to on-demand access with Privileged Access Manager | Google Cloud Blog)。
仕組み:Entitlement と Grant
PAMは大きく2つの概念で構成されています。
- Entitlement(権限定義):誰が・どの権限を・どのくらいの期間・承認を挟むかどうか、をあらかじめ定義したもの
- Grant(付与):Entitlementに対してリクエストが行われ、実際に一時的な権限が付与された状態
Entitlementには主に以下の項目を設定します(Create entitlements in Privileged Access Manager)。
- ROLE:付与するIAMロール
- MAXIMUM_GRANT_DURATION:1回のGrantで許可する最大の付与時間
- REQUESTING_MEMBER:Grantをリクエストできるプリンシパル(
allUsersとallAuthenticatedUsers以外の全プリンシパルタイプが対象) - APPROVING_MEMBER(任意):Grantの申請を承認できるプリンシパル。グループを指定した場合、そのグループ内の誰でも承認・却下ができます
リクエストが承認要件を満たすと、PAMは対象のIAMポリシーに「条件付きロールバインディング」を自動的に追加します。
ここで使われている「条件付きロールバインディング」は、IAM Conditionsと呼ばれる仕組みです。IAM Conditionsは、IAMのロールバインディングにCEL(Common Expression Language)による条件式を付与し、条件を満たす場合だけそのロールを有効にする機能です。例えばrequest.time < timestamp("2026-09-26T00:00:00Z")のような時刻条件を使うと、指定した日時までしかロールが有効にならない、という制御ができます(Configure temporary access)。
PAMは、この時間制限付きのIAM Conditionsを、Entitlement/Grantの仕組みの中で自動的に生成しています。有効期限が来るとPAMがバインディングを自動的に削除します(Temporary elevated access overview)。

登場人物と必要なロール
PAMには次の3つの立場が登場します。
- Entitlement管理者:Entitlementを作成・更新・削除する人
- リクエスター(REQUESTING_MEMBER):一時的な権限を申請する人
- 承認者(APPROVING_MEMBER):申請を承認・却下する人(任意設定)
Entitlementを作成・更新・削除するには、対象のリソース階層に応じて次のロールが必要になります(Privileged Access Manager permissions and setup)。
| 対象リソース | 必要なロール |
|---|---|
| 組織(Organization) | roles/privilegedaccessmanager.admin + roles/iam.securityAdmin |
| フォルダ(Folder) | roles/privilegedaccessmanager.admin + roles/resourcemanager.folderAdmin |
| プロジェクト(Project) | roles/privilegedaccessmanager.admin + roles/resourcemanager.projectIamAdmin |
IAM Conditions直接付与との違い
Conditions付きのgcloud projects add-iam-policy-binding --condition=...を直接使う方法でも一時的なロール付与は可能ですが、PAMとは次の点が異なります。
| 観点 | IAM Conditions直接付与 | PAM |
|---|---|---|
| 期限到達後のバインディング削除 | 自動削除されない(手動クリーンアップが必要) | 自動削除される |
| 申請・承認フロー | なし(管理者が都度実行) | Entitlementで承認要否を設定可能 |
| 監査性 | 誰が何をいつ実行したかは別途Cloud Audit Logsを確認する必要がある | 誰が・いつ・何を・どのくらいの期間申請/取得したかがGrant単位で記録される |
期限切れのロールバインディングが放置されるとIAMポリシーのサイズ上限に近づくリスクもあるため、繰り返し一時権限を発行する用途ではPAMの方が運用上のリスクが小さいといえます(Configure temporary access)。
利用時の注意点
- 基本ロールは対象外:Viewer/Editor/OwnerのようなIAM基本ロールはConditions(PAMの内部実装)と併用できないため、PAMのEntitlementには使えません
- 1ユーザーあたりの同時Grant数に上限がある:1つのEntitlementに対して、Active/Scheduled/Approval awaitedの状態を合わせて最大10件までしか同時に持てません(Privileged Access Manager overview)
- Entitlementへの参加は事前登録制:REQUESTING_MEMBERやAPPROVING_MEMBERに登録されていないプリンシパルは、そもそもGrantをリクエストできません
まとめ
PAMは、Entitlement(権限定義)とGrant(付与)という2つの概念によって、IAMの一時的な権限付与を「申請・承認・自動失効・監査ログ」までまとめて仕組み化するサービスです。IAM Conditionsを直接使う方法よりも運用の手間と漏れが少なく、繰り返し一時権限を発行する自動化ユースケースに向いています。