権限昇格機能 PAM の紹介と使いどころ
こんにちは、クラウドエース SRE 部所属の松島です。
本記事では最近登場した、現在プレビュー中の機能である権限昇格機能 Privileged Access Manager について紹介したのち、使い所を考えてみたいと思います。
Privileged Access Manager(PAM) とは
Privileged Access Manager(以下 PAM) は、Google Cloud における権限昇格を提供するものです。
これを利用することで、普段は閲覧のみの権限を与えておき、緊急時のみ作業用に強権限を付与するような制御が可能となります。
PAM 構成要素の説明
全体像は以下の通りです。
まず、管理者が利用資格を作成します。この時、下記の3つを指定します。
- 昇格後のロール
- 昇格リクエストが可能な人
- 昇格リクエストを承認できる人
あとは、この利用資格をリクエスト可能な人がリクエストを行い、承認者が承認すれば、昇格後のロールで Google Cloud の操作が可能になります。
PAM 設定手順
コンソール上での設定手順を紹介します。
1. PAMの有効化
コンソール上で「IAM と管理」から PAM を選択、「PAM を設定」をクリックします。
サービスエージェントへの権限付与を行う画面が表示されますので、「ロールを付与」をクリックします。
以上で有効化作業は完了です。
2. 利用資格の作成
次に利用資格オブジェクトを作成します。
有効化作業後に表示される、下記の画面で「CREATE」を選択します。
まずは昇格後に付与するロールと、昇格状態の有効時間を設定します。
この例では、Compute 管理者を付与し、1時間有効としてみます。
次にこの利用資格をリクエスト可能なプリンシパルを設定します。
個人アカウント単位の指定も可能ですが、実有運用を考えると一般的な IAM の設計と同じく、グループ単位の指定が便利かと思います。
また、併せてリクエスト時の理由の記載を必須とするかどうかも設定可能です。この例では必須としてみます。
今度は承認者の設定です。
先ほどと同様にプリンシパルの指定と、承認時の理由の記載の要否を設定できます。
また、承認なしで昇格させることも可能なようですが、通常は承認を必須とすることが多いと思いますので、今回は承認必須として設定します。
最後に通知の設定です。
リクエストが行われた際と、昇格が認められた際の通知先を指定することができます。
おそらくリクエストが行われた際には承認権限のあるグループに、昇格が認められた際は管理者に通知されるのが実運用上好ましいかと思いますので、そのように設定します。
「利用資格を作成」を実行し、作成完了です。
3. 権限リクエスト
権限付与をリクエストするアカウントで Google Cloud にログインし、FW の設定を確認してみます。
現在は権限がないため、操作することができません。権限をリクエストしてみます。
PAM の画面を開くと、利用可能な権限が表示されます。下記画面のように、自分が利用可能なもののみを表示するタブもあります。
「承認をリクエスト」します。
権限が必要な時間と理由を入力し、「権限付与をリクエスト」を実行します。
4. リクエストの承認
今度は権限付与リクエストを承認するアカウントで Google Cloud にログインし、PAM の画面を開きます。
「権限付与を承認」タブを選択すると、承認待ちの権限付与リクエストが表示されるので、「承認/拒否」を選択します。
承認の画面が表示されますので、コメントを記載の上、承認を実行します。
権限が付与されました。
この状態で、権限をリクエストするアカウントで再度 FW の設定画面を確認すると、「Compute 管理者」権限を利用した作業を行うことができるようになっています。
PAM の使い所
個人的には、PAM を利用して下記のような権限設計とするのが望ましいと考えます。
- 普段は基本的にリソースを編集する権限は付与せずに、閲覧権限だけを付与する権限設計とする
- 必要な時のみ PAM で時間限定の操作権限を付与する
これにより、普段から編集権限を持つことによる誤操作や、承認されていない作業の実施を防ぐことができます。
また、上記のような権限設計により、Terraform など、IaC を利用した CICD パイプラインからのみ設定変更を行うような構成管理フローも運用しやすくなるのではないかと思います。
おわりに
本機能を利用することで、普段は閲覧権限のみで運用することが可能になるため、誤操作に注意する場面が減るかと思います。
個人的にはずっと欲しかった機能であるため、早く GA になって欲しいと思う一方、土日や深夜の作業のためにあらかじめ承認を得ておきたい場合など、予約機能があればより嬉しいと思っています。
皆様も是非ご活用ください。
Discussion