EmotionTechテックブログ

株式会社エモーションテックのProduct Teamのメンバーが、日々の取り組みや技術的なことを発信していくブログです。

Google CloudのPrivileged Access Manager (PAM) でセキュアで効率的な一時的な権限付与を実現しました

はじめに

こんにちは、エモーションテックでSREチームに所属しているsugawaraです。 エモーションテックでは、Google Cloudにおける一時的な権限付与の運用を改善するため、Privileged Access Manager (以降PAM) を導入しました。 PAMの導入によって、これまで手動で行っていた一時的な権限の付与・剥奪のプロセスを自動化し、セキュリティと作業効率を大幅に向上させることができました。 本記事では、導入の背景、導入前後の権限付与フローの比較、導入の際につまづいた点についてご紹介します。

導入背景:一時的な権限付与についての課題

開発者や運用担当者が本番環境などで特定の作業を行う際、一時的に強力な権限が必要になるケースは少なくありません。従来、弊社では以下のような課題を抱えていました。

  • 手動による権限の付与と剥奪: 作業申請があるたびに、管理者が手動でIAMロールを付与し、作業完了報告を受けてから権限を剥奪していました。このプロセスは手間がかかるだけでなく、権限の剥奪忘れといったヒューマンエラーのリスクも常にあります。
  • IAM Conditionの限界: Google CloudのIAMでは、IAM Conditionを利用して特定の条件下でのアクセス制御が可能です。これを利用しても特定の期限までアクセスを許可することはできますが、期限が終了した後もConditionの設定自体は残り続けてしまいます。そのため、その設定を削除する作業が必要で、これもまた手間となっていました。

これらの課題を解決し、効率的な権限管理体制を築くために、PAMの導入を検討しました。

Privileged Access Manager (PAM) とは?

Privileged Access Manager (PAM) は、Google Cloudが提供する、特権アクセスをジャストインタイムで管理するためのサービスです。必要な人に、必要な権限を、必要な時間だけ付与することを目的としています。

https://cloud.google.com/iam/docs/pam-overview?hl=ja

ユーザーは、特定のロール(権限)を使いたいときにPAMを通じて権限をリクエストします。承認されると、設定された時間内だけその権限が有効になり、時間が経過すると自動的に権限が剥奪されます。これにより、IAMポリシーを汚すことなく、最小権限の原則を徹底できます。

導入前後の一時的な権限付与フロー

PAMの導入によって、一時的な権限付与のプロセスは以下のように変わりました。

【導入前】手動での権限付与フロー

  1. 作業者: チャットやチケットで権限付与を管理者に依頼。
  2. 管理者: 依頼内容を確認し、手動でIAMロールを作業者に付与。
  3. 作業者: 作業を実施。
  4. 管理者: 作業完了報告を受け、手動でIAMロールを剥奪。(剥奪忘れのリスク!)

【導入後】PAMを利用した権限付与フロー

  1. [事前作業] 管理者: 利用資格を設定(IAMロール、承認者、最大有効時間など)。
  2. 作業者: PAMのUIから、必要なロールが付与される利用資格を選択。権限付与の有効時間・申請理由を指定してリクエスト。
  3. 管理者: リクエスト内容をレビューし、ワンクリックで承認または拒否。
  4. Google Cloud (PAM): 承認されると、IAMロールを自動で付与
  5. 作業者: 作業を実施。
  6. Google Cloud (PAM): 権限付与の有効時間に指定した時間が経過すると、IAMロールを自動で剥奪

管理者の介在が事前の利用資格の設定と承認プロセスのみに限定され、権限のライフサイクル管理が完全に自動化されました。 利用資格についてはTerraformで管理し、利用申請できるメンバーが適切か、付与される権限が適切か等をコードレビューにより担保しています。 また、PAMのUIからは、現在有効な権限の一覧や、過去の権限付与履歴も簡単に確認できるため、監査やトラブルシューティングも容易になりました。

導入時につまづいた点

PAMの導入にあたって、いくつかつまづいた点がありました。以下に主なものを挙げます。

利用資格申請者にあらかじめ Privileged Access Manager 閲覧者のロールを付与する必要がある

PAMのUIにアクセスして利用資格を申請するために、事前に申請者に対して Privileged Access Manager 閲覧者のロール(roles/privilegedaccessmanager.viewer)を付与しておく必要があります。

従来の基本ロール(Legacy basic roles)に対応していない

PAMは、従来の基本ロール(Owner, Editor, Viewer)を付与することができません。代わりに、新しい基本ロール(Admin, Writer, Reader)を付与することが可能です。ただ、この基本ロールは2025/08時点ではpre-GAである点に注意が必要です。

承認された段階から権限付与の有効時間が消費される

PAMでは、利用申請が承認された時点から権限付与の有効時間が消費され始めます。そのため、作業予定の直前に承認を行う運用にするか、余裕を持った有効時間を設定するなどの対策が必要になります。

最後に

Privileged Access Manager (PAM) を導入したことで、課題であった一時的な権限の付与・剥奪のプロセスを大幅に改善することができました。 同様の課題を抱えている方にとって、本記事が参考になれば幸いです。

エモーションテックでは、顧客体験・従業員体験の改善を支えるプロダクト開発を一緒に進めてくれる仲間を募集しています。ご興味のある方はぜひ採用ページからご応募ください!

https://careers.emotion-tech.co.jp/