はじめに
私の担当プロジェクトではこれまで開発者に本番環境の編集権限が常時割り当てられていました。
そこで本番環境のリソースを誤って編集してしまう事象を予防する為に、PAMという新サービス※を用いて権限管理の方法を見直しました。
このPAMを用いた権限管理の実例とその感想を、当記事でご紹介しようと思います。
※2024年9月 GA
PAMとは
Privileged Access Manager(PAM)を使用すると、特定のプリンシパルのジャストインタイムの一時的な権限昇格を管理し、監査ログを表示して、誰が何にいつアクセスしたかを確認できます。
たとえば、Privileged Access Manager を使用すると、次のことができます。
- デベロッパーに本番環境への一時的なアクセス権を付与して、トラブルシューティングやデプロイを行う。
引用元
具体的なPAMの利用方法も上記のガイドに記載されています。
実際にやってみた権限管理の方針
- 開発者が所属するGoogleグループに
編集者ロール
を割り当てていたが、閲覧者ロール
+αに変更 - 本番環境プロジェクトのPAMでリソース編集用の利用資格を作成しておく
- リクエスト元 : 開発者グループ
- 承認者 : 承認なしでアクセスを有効化
- ロール : 任意(残念ながら
編集者ロール
などの基本ロールを割り当てることはできません)+特権アクセスマネージャー管理者
- 通知先 : Slackチャンネルのメールアドレスを指定
- 利用資格を使った作業が終わった後は権限付与を取り消す
- 取り消すために
特権アクセスマネージャー管理者
ロールを利用資格に追加している
- 取り消すために
- 権限を絞ったことで作業に支障が出ないように
ProjectIAM管理者ロール
の利用資格も作成しておく
感想
本番環境のリソースを参照だけしたいときに、誤ってボタンを押下して更新してしまう怖さが無くなりました。
一時的な権限を得たときはそれがSlackに通知され監査ログにも残るので、透明性を確保できるようになっていると感じます。
管理者でないと権限付与を取り消せなかったり取り消したことがSlackに通知されない※などの若干の使いづらさはあるのですが欲していた機能ではあったので、これからの改善も期待しています。
※権限付与リクエスト時に別途メールアドレスを入力すれば通知されます(が権限付与通知も増えるので元の設定と合わせて2回通知されます。)