Jupyter Notebook を使用してセキュリティの脅威を探索する
セキュリティ調査と捜索の一環として、Jupyter ノートブックを起動して実行し、プログラムでデータを分析します。
この攻略ガイドでは、Azure Machine Learning (ML) ワークスペースを作成し、Sentinel ポータルから Azure ML ワークスペースにノートブックを起動し、ノートブックでコードを実行します。
前提条件
この記事の手順を行う前に、Microsoft Sentinel ノートブック全般について学習することをお勧めします。 「Jupyter のノートブックを使用してセキュリティの脅威を検出する」を参照ください。
Microsoft Sentinel ノートブックを使用するには、次のロールとアクセス許可が必要です。
Type | 詳細 |
---|---|
Microsoft Sentinel | - Microsoft Sentinel からノートブックを保存して起動するための Microsoft Sentinel 共同作成者ロール |
Azure Machine Learning | - 必要に応じて、新しい Azure Machine Learning ワークスペースを作成するための、リソース グループ レベルの所有者または共同作成者ロール。 - Microsoft Sentinel ノートブックを実行する Azure Machine Learning ワークスペースへの共同作成者ロール。 詳細については、「Azure Machine Learning ワークスペースへのアクセスの管理」を参照してください。 |
Microsoft Sentinel から Azure ML ワークスペースを作成する
ワークスペースを作成するために、パブリック エンドポイントとプライベート エンドポイントのどちらを使うかに応じて、次のタブのいずれかを選びます。
- ネットワーク通信の問題が発生する可能性を回避するために、"パブリック エンドポイント" が Microsoft Sentinel ワークスペース内にある場合はそちらを使うことをお勧めします。
- 仮想ネットワーク内で Azure ML ワークスペースを使う場合は、"プライベート エンドポイント" を使います。
Azure portal から [Microsoft Sentinel]>[脅威の管理]>[Notebooks] に移動し、 [Create a new AML workspace](新しい AML ワークスペースの作成) を選択します。
次の詳細を入力してから、 [次へ] を選択します。
フィールド 説明 サブスクリプション 使用する Azure サブスクリプションを選択します。 リソース グループ サブスクリプションの既存のリソース グループを使用するか、任意の名前を入力して新しいリソース グループを作成します。 リソース グループは、Azure ソリューションの関連するリソースを保持します。 ワークスペース名 ワークスペースを識別する一意の名前を入力します。 名前は、リソース グループ全体で一意である必要があります。 覚えやすく、他のユーザーが作成したワークスペースと区別しやすい名前を使用します。 リージョン ユーザーとデータ リソースに最も近い場所を選択し、ワークスペースを作成します。 [ストレージ アカウント] ストレージ アカウントは、ワークスペース用の既定のデータストアとして使用されます。 新しい Azure Storage リソースを作成しても、サブスクリプションで既存のものを選択してもかまいません。 KeyVault キー コンテナーは、ワークスペースで必要なシークレットや他の機密情報を格納するために使用されます。 新しい Azure Key Vault リソースを作成しても、サブスクリプションで既存のものを選択してもかまいません。 Application Insights ワークスペースでは、デプロイされているモデルに関する監視情報を格納するために、Azure Application Insights が使用されます。 新しい Azure Application Insights リソースを作成しても、サブスクリプションで既存のものを選択してもかまいません。 コンテナー レジストリ コンテナー レジストリは、トレーニングとデプロイで使用される Docker イメージを登録するために使用されます。 コストを最小限に抑えるには、最初のイメージをビルドした後でのみ、新しい Azure Container Registry リソースを作成します。 または、今すぐリソースを作成するか、サブスクリプションで既存のものを選択するか、コンテナー レジストリを使用しない場合は [なし] を選択してもかまいません。 [ネットワーク] タブで、[すべてのネットワークからのパブリック アクセスを有効にする] を選択します。
[詳細] または [タグ] タブで関連する設定を定義し、[確認および作成] を選びます。
[確認および作成] タブで、情報を見直して正しいことを確認した後、 [作成] を選択してワークスペースのデプロイを開始します。 次に例を示します。
クラウドへのワークスペースの作成には数分かかる場合があります。 この間、ワークスペースの [概要] ページには現在のデプロイ状態が表示され、デプロイが完了すると更新されます。
デプロイが完了したら、Microsoft Sentinel の [Notebooks] に戻り、新しい Azure ML ワークスペースからノートブックを起動できます。
複数のノートブックがある場合は、ノートブックを起動するときに使用する既定の AML ワークスペースを選択してください。 次に例を示します。
Azure ML ワークスペースでノートブックを起動する
AML ワークスペースを作成した後、Microsoft Sentinel から Azure ML ワークスペースでノートブックの起動を開始します。
Azure portal から [Microsoft Sentinel]>[Threat management](脅威の管理)>[Notebooks]>[テンプレート] に移動します。ここで、Microsoft Sentinel によって提供されるノートブックを確認できます。
ノートブックを選択すると、その説明、必要なデータの種類、データ ソースが表示されます。
使用するノートブックが見つかったら、[テンプレートから作成] を選択してから [保存] を選択して、自分のワークスペースに複製します。
必要に応じて名前を編集します。 ワークスペースにノートブックが既に存在する場合は、既存のノートブックを上書します。または、新しいノートブックを作成します。
ノートブックを保存すると、 [Save notebook](ノートブックの保存) ボタンが [Launch notebook](ノートブックの起動) に変わります。 [Launch notebook](ノートブックの起動) を選択し、AML ワークスペースでそれを開きます。
次に例を示します。
ページの上部で、ノートブック サーバーに使用する [Compute](コンピューティング) インスタンスを選択します。
コンピューティング インスタンスがない場合は、新しく作成します。 コンピューティング インスタンスが停止している場合は、開始してください。 詳細については、Azure Machine Learning スタジオでのノートブックの実行に関する記事を参照してください。
作成したコンピューティング インスタンスを表示および使用できるのは自分のみです。 ユーザー ファイルは VM とは別に格納され、ワークスペース内のすべてのコンピューティング インスタンス間で共有されます。
ノートブックをテストするために新しいコンピューティング インスタンスを作成する場合は、汎用カテゴリのコンピューティング インスタンスを作成します。
また、カーネルは Azure ML のウィンドウの右上にも表示されます。 必要なカーネルが選択されていない場合は、ドロップダウン リストから別のバージョンを選択します。
ノートブック サーバーを作成して起動したら、ノートブックのセルの実行を開始できます。 各セルで、 [実行] アイコンを選択してノートブックのコードを実行します。
詳細については、「コマンド モードのショートカット」を参照してください。
ノートブックがハングする場合、または最初からやり直したい場合は、カーネルを再起動して、ノートブックのセルを最初から再実行します。 カーネルを再起動すると、変数とその他の状態が削除されます。 再起動後に、初期化と認証のセルを再実行する必要があります。
やり直すために、[Kernel operations](カーネルの操作)>[Restart kernel](カーネルの再起動) を選択します。 次に例を示します。
ノートブックでコードを実行する
ノートブックのコード セルは必ず順番に実行してください。 セルをスキップすると、エラーが発生する可能性があります。
ノートブックは次のようになっています。
- Markdown セルにはテキスト (HTML を含む) と静的イメージがあります。
- コード セルにはコードが含まれます。 コード セルを選択した後、セルの左側にある [再生] アイコンを選択するか、SHIFT + ENTER キーを押して、セル内のコードを実行します。
たとえば、ノートブックで次のコード セルを実行します。
# This is your first code cell. This cell contains basic Python code.
# You can run a code cell by selecting it and then selecting
# the Play button to the left of the cell, or by pressing SHIFT+ENTER.
# Code output displays below the code.
print("Congratulations, you just ran this code cell")
y = 2 + 2
print("2 + 2 =", y)
上のサンプル コードでは、こちらの出力が生成されます。
Congratulations, you just ran this code cell
2 + 2 = 4
ノートブックのコード セル内で設定した変数はセル間で保持されるため、セルをチェーンでつなぐことができます。 たとえば、次のコード セルでは、前のセルの y
の値が使用されます。
# Note that output from the last line of a cell is automatically
# sent to the output cell, without needing the print() function.
y + 2
出力は次のようになります。
6
Microsoft Sentinel のすべてのノートブックをダウンロードする
このセクションでは、Microsoft Sentinel ノートブックから、Git を使用して Microsoft Sentinel GitHub リポジトリで使用できるすべてのノートブックを、Azure ML ワークスペースに直接ダウンロードする方法について説明します。
Azure ML ワークスペースに Microsoft Sentinel のノートブックを格納しておくと、簡単に更新された状態に保つことができます。
Microsoft Sentinel のノートブックから、次のコードを空のセルに入力し、セルを実行します。
!git clone https://github.com/Azure/Azure-Sentinel-Notebooks.git azure-sentinel-nb
GitHub リポジトリ コンテンツのコピーが Azure ML ワークスペースのユーザー フォルダーの azure-Sentinel-nb ディレクトリに作成されます。
目的のノートブックをこのフォルダーから作業ディレクトリにコピーします。
GitHub で最近加えられた変更が反映されるようノートブックを更新するには、次のように実行します。
!cd azure-sentinel-nb && git pull
次のステップ
- チュートリアル: Microsoft Sentinel での Jupyter Notebook と MSTICPy の概要
- ノートブックと Azure Synapse の統合 (パブリック プレビュー)
その他のリソース:
Microsoft Sentinel GitHub リポジトリでは、独自のノートブックを開発するときに使用できる役立つツール、図、コード サンプルとして、共有されているノートブックを使用します。
既存のノートブックに関するフィードバック、提案、機能の要求、ノートブックの投稿、バグ レポート、機能強化や追加機能などがあれば、お寄せください。 問題またはフォークを作成して、投稿をアップロードするには、Microsoft Sentinel GitHub リポジトリにアクセスしてください。
Azure Log Analytics での資格情報のスキャンやガイド付き調査 - プロセス アラートなど、いくつかのノートブック テンプレートを調べて、脅威のハンティングと調査でのノートブックの使用についてさらに学習します。
Microsoft Sentinel >[ノートブック]>[テンプレート] タブで、ノートブック テンプレートをさらに検索します。
Microsoft Sentinel GitHub リポジトリで、ノートブックをさらに検索します。
Example-Notebooks
ディレクトリにはデータと共に保存されるサンプル ノートブックが含まれており、目的の出力を表示するために使用できます。HowTos
ディレクトリには、既定の Python バージョンの設定や、ノートブックからの Microsoft Sentinel ブックマークの作成などの概念を説明するノートブックが含まれています。
詳細については、次を参照してください。