Jupyter Notebook を使用してセキュリティの脅威を探索する

セキュリティ調査と捜索の一環として、Jupyter ノートブックを起動して実行し、プログラムでデータを分析します。

この記事では、Azure Machine Learning ワークスペースの作成、Microsoft Sentinel から Azure Machine Learning ワークスペースへのノートブックの起動、ノートブックでのコードの実行を行います。

重要

Microsoft Sentinel は、Microsoft Defender ポータルの統合セキュリティ オペレーション プラットフォームのパブリック プレビューの一部として利用できます。 詳細については、「Microsoft Defender ポータルの Microsoft Sentinel」を参照してください。

前提条件

この記事の手順を行う前に、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 Machine Learning ワークスペースを作成する

ワークスペースを作成するには、パブリック エンドポイントとプライベート エンドポイントのどちらを使用するかに応じて、次のタブのいずれかを選択します。

  • ネットワーク通信の潜在的な問題を回避するために、Microsoft Sentinel ワークスペース内に "パブリック エンドポイント" がある場合はそれを使用することをお勧めします。
  • 仮想ネットワーク内で Azure Machine Learning ワークスペースを使用する場合は、"プライベート エンドポイント" を使用します。
  1. Azure portal の Microsoft Sentinel では、[脅威管理] で、[Notebooks] を選択します。
    Defender ポータルの Microsoft Sentinel では、[Microsoft Sentinel]>[脅威管理]>[Notebooks] を選択します。

  2. [Azure Machine Learning を構成する]>[新しい AML ワークスペースの作成] を選択します。

  3. 次の詳細を入力してから、 [次へ] を選択します。

    フィールド 説明
    サブスクリプション 使用する Azure サブスクリプションを選択します。
    リソース グループ サブスクリプションの既存のリソース グループを使用するか、任意の名前を入力して新しいリソース グループを作成します。 リソース グループは、Azure ソリューションの関連するリソースを保持します。
    ワークスペース名 ワークスペースを識別する一意の名前を入力します。 名前は、リソース グループ全体で一意である必要があります。 覚えやすく、他のユーザーが作成したワークスペースと区別しやすい名前を使用します。
    リージョン ユーザーとデータ リソースに最も近い場所を選択し、ワークスペースを作成します。
    [ストレージ アカウント] ストレージ アカウントは、ワークスペース用の既定のデータストアとして使用されます。 新しい Azure Storage リソースを作成しても、サブスクリプションで既存のものを選択してもかまいません。
    KeyVault キー コンテナーは、ワークスペースで必要なシークレットや他の機密情報を格納するために使用されます。 新しい Azure Key Vault リソースを作成しても、サブスクリプションで既存のものを選択してもかまいません。
    Application Insights ワークスペースでは、デプロイされているモデルに関する監視情報を格納するために、Azure Application Insights が使用されます。 新しい Azure Application Insights リソースを作成しても、サブスクリプションで既存のものを選択してもかまいません。
    コンテナー レジストリ コンテナー レジストリは、トレーニングとデプロイで使用される Docker イメージを登録するために使用されます。 コストを最小限に抑えるには、最初のイメージをビルドした後でのみ、新しい Azure Container Registry リソースを作成します。 または、ここでリソースを作成しても、サブスクリプションで既存のものを選択してもかまいません。または、コンテナー レジストリを使用しない場合は [なし] を選択してもかまいません。
  4. [ネットワーク] タブで、[すべてのネットワークからのパブリック アクセスを有効にする] を選択します。

    [詳細] または [タグ] タブで関連する設定を定義し、[確認および作成] を選びます。

  5. [確認および作成] タブで、情報を見直して正しいことを確認した後、 [作成] を選択してワークスペースのデプロイを開始します。 次に例を示します。

    Microsoft Sentinel で Machine Learning ワークスペースを確認して作成します。

    クラウドへのワークスペースの作成には数分かかる場合があります。 この間、ワークスペースの [概要] ページには現在のデプロイ状態が表示され、デプロイが完了すると更新されます。

デプロイが完了したら、Microsoft Sentinel の [Notebooks] に戻り、新しい Azure Machine Learning ワークスペースからノートブックを起動します。

複数のノートブックがある場合は、ノートブックを起動するときに使用する既定の AML ワークスペースを選択してください。 次に例を示します。

ノートブックの既定の AML ワークスペースを選択します。

Azure Machine Learning ワークスペースでノートブックを起動する

Azure Machine Learning ワークスペースを作成したら、Microsoft Sentinel からそのワークスペースのノートブックを起動します。

  1. Azure portal の Microsoft Sentinel では、[脅威管理] で、[Notebooks] を選択します。
    Defender ポータルの Microsoft Sentinel では、[Microsoft Sentinel]>[脅威管理]>[Notebooks] を選択します。

  2. [テンプレート] タブを選択し、Microsoft Sentinel に用意されているノートブックを表示します。

  3. ノートブックを選択すると、その説明、必要なデータの種類、データ ソースが表示されます。

  4. 使用するノートブックを見つけたら、[テンプレートから作成][保存] を選択して、独自のワークスペースにクローンします。

  5. 必要に応じて名前を編集します。 ワークスペースにノートブックが既に存在している場合は、既存のノートブックを上書きするか、新しいノートブックを作成します。 既定では、ノートブックは、選択した AML ワークスペースの /Users/<Your_User_Name>/ ディレクトリに保存されます。

    ノートブックを保存して、自分のワークスペースに複製します。

  6. ノートブックを保存すると、 [Save notebook](ノートブックの保存) ボタンが [Launch notebook](ノートブックの起動) に変わります。 [Launch notebook](ノートブックの起動) を選択し、AML ワークスペースでそれを開きます。

    次に例を示します。

    AML ワークスペースでノートブックを起動します。

  7. ページの上部で、ノートブック サーバーに使用する [Compute](コンピューティング) インスタンスを選択します。

    コンピューティング インスタンスがない場合は、新しく作成します。 コンピューティング インスタンスが停止している場合は、開始してください。 詳細については、Azure Machine Learning スタジオでのノートブックの実行に関する記事を参照してください。

    作成したコンピューティング インスタンスを表示および使用できるのは自分のみです。 ユーザー ファイルは VM とは別に格納され、ワークスペース内のすべてのコンピューティング インスタンス間で共有されます。

    ノートブックをテストするために新しいコンピューティング インスタンスを作成する場合は、汎用カテゴリのコンピューティング インスタンスを作成します。

    また、カーネルは Azure Machine Learning ウィンドウの右上にも表示されます。 必要なカーネルが選択されていない場合は、ドロップダウン リストから別のバージョンを選択します。

  8. ノートブック サーバーを作成して起動したら、ノートブック セルを実行します。 各セルで、 [実行] アイコンを選択してノートブックのコードを実行します。

    詳細については、「コマンド モードのショートカット」を参照してください。

  9. ノートブックがハングする場合、または最初からやり直したい場合は、カーネルを再起動して、ノートブックのセルを最初から再実行します。 カーネルを再起動すると、変数とその他の状態が削除されます。 再起動後に、初期化と認証のセルを再実行する必要があります。

    やり直すために、[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 のすべてのノートブックをダウンロードする

このセクションでは、Git を使用して Microsoft Sentinel GitHub リポジトリで使用できるすべてのノートブックを、Microsoft Sentinel ノートブック内から Azure Machine Learning ワークスペースに直接ダウンロードする方法について説明します。

Azure Machine Learning ワークスペースに Microsoft Sentinel ノートブックを格納すると、更新された状態を簡単に維持することができます。

  1. Microsoft Sentinel のノートブックから、次のコードを空のセルに入力し、セルを実行します。

    !git clone https://github.com/Azure/Azure-Sentinel-Notebooks.git azure-sentinel-nb
    

    GitHub リポジトリ コンテンツのコピーが、Azure Machine Learning ワークスペースのユーザー フォルダーの azure-Sentinel-nb ディレクトリに作成されます。

  2. 目的のノートブックをこのフォルダーから作業ディレクトリにコピーします。

  3. GitHub で最近加えられた変更が反映されるようノートブックを更新するには、次のように実行します。

    !cd azure-sentinel-nb && git pull