はじめに
Prisma Cloudではコンソールから取得できるデータがいくつかあり、アラートデータもそのひとつです。
日々大量に発生するアラートの中から、本当に注視すべきリスクや傾向を読み解くのは容易ではありません。手動での確認には限界があり、セキュリティ運用の非効率さにも繋がりかねません。
今回は、Prisma Cloudで検知されたアラートデータを取得して、クラウド環境のアラート状況をわかりやすく可視化できないか試してみました。
取得データの紹介
まず、アラートデータはPrisma Cloudコンソールの「アラート画面」の「csvファイルをダウンロード」から取得できます。
csvファイルに記載されているカラムは以下22項目です。
No. | カラム | 説明 |
1 | Alert ID | アラートに割り当てられた一意の識別子 |
2 | Policy Name | アラートをトリガーしたポリシーの名前 |
3 | Policy Type | ポリシーのタイプ(CSPMを利用した際に主に利用されるタイプはiam, config, networkなど) |
4 | Description | アラートが何を意味するのか、なぜトリガーされたのかについての詳細な説明 |
5 | Policy Labels | ポリシーに関連付けられたカスタムラベルまたはタグ |
6 | Policy Severity | アラートの重大度レベル(Critical, High, Medium, Low, Informationalの5段階) |
7 | Resource Name | アラートに関係するクラウドリソースの名前 |
8 | Cloud Type | クラウド環境の種類(例:AWS, Azure, GCP, Alibaba Cloud) |
9 | Cloud Account Id | リソースが存在するクラウドアカウントのID |
10 | Cloud Account Name | クラウドアカウント名 |
11 | Region | クラウドリソースが配置されているリージョン |
12 | Recommendation | アラートをトリガーした問題を解決するための推奨されるアクション |
13 | Alert Status | アラートの現在のステータス(例:Open, Dismissed, Resolved) |
14 | Alert Time | アラートが生成されたタイムスタンプ |
15 | Event Occurred | アラートをトリガーしたイベントが実際に発生したタイムスタンプ |
16 | Dismissed On | アラートが無視されたタイムスタンプ |
17 | Dismissed By | アラートをDismissed処理したユーザー |
18 | Dismissal Reason | アラートをDismissedした理由 |
19 | Resolved On | アラートが解決済みとしてマークされたタイムスタンプ |
20 | Resolution Reason | アラートを解決した理由 |
21 | Resource ID | アラートに関係するクラウドリソースの一意の識別子 |
22 | Account Groups | そのクラウドアカウントが属するPrisma Cloudのアカウントグループ |
今回はこの中から「Policy Type」、「Policy Severity」、「Cloud Account Id」を使用していきます。
可視化の準備:分析シナリオと仮想データの作成
今回は実際のアラート情報ではなく、仮想的なアラートデータを作成し、どのように可視化分析ができるかご紹介します。
可視化分析をするにあたって3つのそれぞれ状況の違うクラウドアカウントのアラート状況を用意しました。以下簡単な説明です。
Cloud Account ID | 説明 |
1 | 全体的に多くのアラートが検知されているものの、ほとんどが「informational」や「low」の重要度であり、criticalやhighは少ない。様々なPolicy Typeでアラートがタイプ毎に似たような分布。 |
2 | network や iam といったごく特定のPolicy Typeに「critical」アラートが極めて集中している。他のSeverityのアラートも存在するが、リスクの焦点は明確な領域に集中している。 |
3 | 特定のPolicy Typeにアラートが極端に偏って集中している。この集中しているPolicy Type内では、「medium」や「high」のSeverityのアラートが多く検出されている。 |
各クラウド環境の具体的なデータは以下の通りです。
左列の「Policy Type」と、上段の「Policy Severity」の組み合わせごとに、発生したアラートの件数を示しています。
Cloud Account ID=1 | informational | low | medium | high | critical |
iam | 30 | 25 | 10 | 2 | 0 |
config | 28 | 22 | 8 | 1 | 0 |
network | 32 | 20 | 12 | 3 | 0 |
anomaly | 30 | 18 | 5 | 0 | 0 |
Cloud Account ID=2 | informational | low | medium | high | critical |
iam | 5 | 3 | 8 | 15 | 50 |
config | 10 | 7 | 5 | 3 | 1 |
network | 7 | 5 | 10 | 20 | 45 |
anomaly | 2 | 1 | 0 | 0 | 0 |
Cloud Account ID=3 | informational | low | medium | high | critical |
iam | 5 | 10 | 40 | 35 | 5 |
config | 3 | 5 | 8 | 2 | 0 |
network | 1 | 0 | 2 | 1 | 0 |
anomaly | 0 | 0 | 0 | 0 | 0 |
Pythonによるデータ分析と可視化の実装
今回のPrisma Cloudアラートデータの可視化分析にはPythonを使用しました。
主な利用ライブラリは、データの読み込みや加工を行うpandas、そしてグラフ描画を担当するmatplotlibです。
処理の概要
読み込んだアラートデータの「Policy Severity」(重要度)を数値に変換するスコアリング処理を行います。これにより、例えば「critical」なアラートは「5点」、「informational」なアラートは「1点」といった形で、重要度を数値として扱えるようになります。
具体的には、以下のように変換しています。
critical: 5点
high: 4点
medium: 3点
low: 2点
informational: 1点
このスコアを使って、各「Cloud Account Id」(クラウドアカウント)ごとに、「Policy Type」別のアラート数を集計し、さらに重要度の平均値を算出しています。
そして、これらの集計結果をもとに、各クラウドアカウントごとに「バブルチャート」を生成します。
このバブルチャートでは、以下の要素で構成されます。
横軸: そのポリシータイプで発生したアラートの総数。右に行くほどアラートが多いことを示します。
縦軸: そのポリシータイプにおけるアラートの平均的な重要度スコア。上に行くほど平均重要度が高いことを示します。
バブルの大きさ: 発生したアラートの総数が多いほど、バブルが大きくなります。
バブルの色: 同様に可読性を上げるため、平均重要度が高いほど、バブルの色が濃い赤色に変化します。
バブル内のテキスト: 各バブルの中には、それがどの「Policy Type」に属するかの名前が表示されます。
このバブルチャートを見ることで、「どのクラウドアカウントで、どのポリシータイプのアラートが、どれくらいの量と重要度で発生しているのか」を一目で把握できるようになります。例えば、「ネットワーク関連のアラートが非常に多く、かつ重要度も高い」といったクラウド環境のアラート状況を視覚的に理解できます。
結果の表示
前述のPythonコードで処理したバブルチャートを実際に表示すると以下のようになります。
このグラフを見ることで、各クラウドアカウントにおいて、どのようなポリシータイプのアラートが、どれくらいの量と重要度で発生しているのかを一目で把握できます。
Cloud Account ID:1
全体的に重要度の低いアラートが検知されていることが読み取れます。また、networkとiam(右の方で重なって表示されています)ポリシータイプのアラート件数が70程度とほぼ同数で最も多く検知されていることが読み取れます。
Cloud Account ID:2
networkとiamで際立って重要度の高いアラートが多く検出されていることが見て取れます。
Cloud Account ID:3
anomalyアラートが検出されずiamに偏ってアラートが検出されていることが見て取れます。
まとめ
今回はPrisma Cloudのアラートデータ(今回は仮想データを使用)をPythonで処理し、ポリシータイプごとのアラート数と平均重要度を示すバブルチャートを作成しました。
バブルチャートはどのポリシータイプにアラートが集中し、かつ平均重要度が高いのかを直感的に捉え、セキュリティ対応の優先順位付けの際の一つの判断材料にできるのではないかと考えました。
このように一次データを処理することで、膨大なアラート情報を可視化しクラウド環境の全体的なセキュリティ状況を感覚的に把握する手助けになるのではないでしょうか。
今回紹介した手法は一例であり、データの性質や分析目的によっては、さらに多様な可視化や分析手法が存在します。また、スコアリングの算出方法などの改善点も考えられます。今後もPrisma Cloudから取得できるデータのさらなる活用方法について、試行錯誤し結果を発信していければと考えております。
また、当社では、Prisma Cloudを利用して複数クラウド環境の設定状況を自動でチェックし、設定ミスやコンプライアンス違反、異常行動などのリスクを診断するCSPMソリューションを販売しております。ご興味のある方はお気軽にお問い合わせください。リンクはこちら↓