【解説】最小権限の原則を守るためには、IAM Recommenderの推奨事項を活用する # GoogleCloudセキュリティ

今回は権限の棚卸しやセキュリティ面で活用できるサービス、「IAM Recommender」の基礎情報についてブログにしました。
2024.01.09

最小権限の原則

概要

IAM Recommenderを解説する前に、理解しておくべきことが最小権限の原則です。

最小権限の原則を一言でお伝えすると、とある機能の必要な権限のみを最低限割り当てること、になるかと思います。

例えば、Google Cloud内でのネットワーク管理者であるユーザーAと開発者であるユーザーBに分けて考えてみると、わかりやすいです。
こちらの2つのロールでは、明確に役割が分担されています。

ネットワーク管理者は、VPCネットワーク全体の制御を担当し、ファイアウォールの設定やルーティング、サブネット間の通信や外部通信へのフィルタリングなど、開発者が行わないネットワークのセキュリティを担当します。

対して、開発者は広義な言葉ではありますが、ここでは分かりやすいようにGCE(VM)内でアプリケーションを開発するエンジニアと定義してみます。

すると、プロジェクト単位で権限を割り当てる場合、GCEのAdmin権限のみをユーザーBに割り当てれば、ネットワーク管理者が行う操作と明確に分断することができます。

ネットワーク管理者には、NetworkのAdmin権限を割り当てれば、GCEの全機能の操作はできません。(実際の細かな権限は調べないとわかりませんが)

このように、役割分担を明確にすることで、誤操作によるセキュリティミス権限の棚卸し、さらにはユーザーアカウントがハックされた時に、なるべく横展開できないようにするなど、主にセキュリティ周りで最小権限の原則の意義が発揮されます。

IAM Recommender

概要

過剰な権限がユーザーに割り当てられていないか、を推奨事項として教えてくれる機能です。
(最小権限の原則に則った場合、GCEの操作だけ必要なユーザーに対して、NetWork Adminのロールも付与していないか?などを自動調査してくれる)

【引用】
Google Cloud の IAM Recommender は、組織の最小権限の原則をサポートします。IAM Recommender は機械学習を利用して、過去 90 日間の GCP 環境全体における各プリンシパルの権限使用状況を検査します。その検査に基づいて、ロールがユーザーに適していると判断するか、そのユーザーのニーズにより適した新しいロールを推奨します。

上記でもわかるように、各ユーザーの権限の使用状況をモニタリングし、デフォルトは90日間で使用頻度の低い権限を教えてくれることにより、使用していない(=過剰な権限)を推奨事項として教えてくれます。

権限の予測

プリンシパルの現在のロールに含まれる権限の中で、特定の権限が必要となる見込みのプリンシパルが存在しますが、最近はその権限を使用していない場合があります。このような権限を特定するため、IAM Recommender は、ポリシーの分析情報の生成時に、機械学習(ML)モデルを使用します。

上記にもあるよう、機械学習を使用して、プリンシパルが現在保持しているロールに含まれる権限の中で、最近使用されていないが将来的に必要になると予想される権限も、特定することができます。

例えば、ユーザーAが過去にcompute.get、compute.list、compute.deleteを使用しました。
すると、compute.get、compute.listを使用したユーザーBも今後、compute.deleteを使用するのではないか?などの予測が立ちます。

こちらの機械学習の方式は観察された履歴の一般的な共起パターンと呼ばれるようですが、詳しくは機械学習によるポリシー分析をご覧ください。

IAM Recommenderの確認方法

最後に、実際にIAM Recommenderの推奨事項を確認する画面を見ていきましょう。

  • コンソールにログイン後、[IAMと管理]に移動します。

  • 画面遷移後、各ユーザーの右側に[〜件の過剰な権限]があることを確認し、▼を押下し[分析された権限を表示]を選択ます。

  • 今回はAccess Context Manager 管理者権限について推奨された事項を見てみます。
  • 41個ある中の、39個の権限は過去90日間で使用されていないことがわかります。

こちらの推奨事項に沿って、事前定義ロールにするか、またはカスタムロールを作成して必要最小限の権限のみを付与するか、などを検討します。

ただ、Google Cloudのベストプラクティスとしては、カスタムロールは管理の煩雑さの負担を減らすために本当に必要な時に作成し、事前定義ロールで対応可能な権限は、なるべくそちらを使用することが推奨されています。

まとめ

今回は、権限管理に焦点を当てつつ、IAM Recommenderの使用も含めて解説しました。
この辺りは、適当に管理した場合、かなりのセキュリティリスクになりかねないので、優先的に仕様書ガイドラインの策定に取り組むべき分野かと思います。