Microsoft Sentinel での Jupyter Notebook と MSTICPy の詳細な構成

この記事では、Microsoft Sentinel で Jupyter Notebook と MSTICPy を操作するための詳細な構成について説明します。

詳細については、「Jupyter のノートブックを使用してセキュリティの脅威を検出する」および「チュートリアル: Microsoft Sentinel での Jupyter Notebook と MSTICPy の概要」を参照してください。

前提条件

この記事は、「チュートリアル: Microsoft Sentinel での Jupyter Notebook と MSTICPy の概要」の続きです。 以下で説明する高度な手順に進む前に、このチュートリアルを実行することをお勧めします。

Azure および Microsoft Sentinel API の認証パラメーターを指定する

この手順では、msticpyconfig.yaml ファイルで Microsoft Sentinel および他の Azure API リソースの認証パラメーターを構成する方法について説明します。

MSTICPy 設定エディターで Azure 認証と Microsoft Sentinel API の設定を追加するには:

  1. 次のセルに進み、次のコードを入力して実行します。

    mpedit.set_tab("Data Providers")
    mpedit
    
  2. [Data Providers](データ プロバイダー) タブで、 [AzureCLI]>[Add](追加) の順に選択します。

  3. 使用する認証方法を選択します。

    • Azure の既定値とは異なる一連の方法を使用することもできますが、この使用方法は一般的な構成ではありません。
    • env (環境変数) 認証を使用する場合を除き、clientIdtenantiIdclientSecret の各フィールドは空のままにしておきます。
    • 推奨されていませんが、MSTICPy では、クライアント アプリ ID とシークレットを使用した認証もサポートされています。 この場合、 [Data Providers](データ プロバイダー) タブで、clientIdtenantIdclientSecret の各フィールドを直接定義します。
  4. [Save File](ファイルの保存) を選択して、変更を保存します。

自動読み込みクエリ プロバイダーを定義する

nbinit.init_notebook 関数の実行時に、MSTICPy で自動的に読み込むクエリ プロバイダーを定義します。

新しいノートブックを頻繁に作成する場合、クエリ プロバイダーの自動読み込みにより、ピボット関数やノートブックレットなどの他のコンポーネントの前に必要なプロバイダーを確実に読み込むことができるため、時間を節約できます。

自動読み込みクエリ プロバイダーを追加するには:

  1. 次のセルに進み、次のコードを入力して実行します。

    mpedit.set_tab("Autoload QueryProvs")
    mpedit
    
  2. [Autoload QueryProv](QueryProv の自動読み込み) タブ:

    • Microsoft Sentinel プロバイダーの場合は、プロバイダー名と接続先のワークスペース名の両方を指定します。
    • 他のクエリ プロバイダーの場合は、プロバイダー名だけを指定します。

    各プロバイダーには、次の省略可能な値もあります。

    • Auto-connect: このオプションは、既定で True として定義されており、MSTICPy は読み込み直後にプロバイダーに対して認証を試みます。 MSTICPy では、設定でプロバイダーの資格情報が構成済みであることを前提としています。

    • Alias: MSTICPy では、プロバイダーを読み込むときに、プロバイダーを Python 変数名に割り当てます。 既定では、変数名は、Microsoft Sentinel プロバイダーの場合は qryworkspace_name、他のプロバイダーの場合は qryprovider_name になります。

      たとえば、ContosoSOC ワークスペースのクエリ プロバイダーを読み込むと、ノートブック環境にこのクエリ プロバイダーが qry_ContosoSOC という名前で作成されます。 より短い名前や、入力しやすく覚えやすい名前を使用したい場合は、別名を追加します。 プロバイダー変数名は qry_<alias> になります。<alias> は指定した別名に置き換えられます。

      このメカニズムによって読み込まれるプロバイダーは、たとえば、次のコードで使用されている、MSTICPy の current_providers 属性にも追加されます。

      import msticpy
      msticpy.current_providers
      
  3. [Save Settings](設定の保存) を選択して変更を保存します。

自動読み込み MSTICPy コンポーネントを定義する

この手順では、nbinit.init_notebook 関数の実行時に、MSTICPy によって自動的に読み込まれる他のコンポーネントを定義する方法について説明します。

サポートされているコンポーネントは次のとおりです (次の順序で読み込まれます)。

  1. TILookup:TI プロバイダー ライブラリ
  2. GeoIP: 使用する GeoIP プロバイダー
  3. AzureData:Azure リソースの詳細のクエリに使用するモジュール
  4. AzureSentinelAPI:Microsoft Sentinel API のクエリに使用するモジュール
  5. Notebooklets:msticnb パッケージの Notebooklets
  6. Pivot: ピボット関数

Note

Pivot コンポーネントでは、エンティティにアタッチするピボット関数を見つけるために、クエリ プロバイダーと他のプロバイダーが読み込まれている必要があるため、コンポーネントはこの順序で読み込まれます。 詳細については、MSTICPy のドキュメントを参照してください。

自動的に読み込まれる MSTICPy コンポーネントを定義するには:

  1. 次のセルに進み、次のコードを入力して実行します。

    mpedit.set_tab("Autoload Components")
    mpedit
    
  2. [Autoload Components](コンポーネントの自動読み込み) タブで、必要に応じてパラメーター値を定義します。 次に例を示します。

    • GeoIpLookup。 使用する GeoIP プロバイダーの名前 (GeoLiteLookup または IPStack) を入力します。 詳細については、「GeoIP プロバイダーの設定の追加」を参照してください。

    • AzureData および AzureSentinelAPI コンポーネント。 次の値を定義します。

      • auth_methods: AzureCLI の既定の設定をオーバーライドし、選択した方法を使用して接続します。
      • Auto-connect: 接続せずに読み込むには、false に設定します。

      詳細については、「Azure および Microsoft Sentinel API の認証パラメーターを指定する」を参照してください。

    • NotebookletsNotebooklets コンポーネントには、AzureSentinel という単一のパラメーター ブロックがあります。

      workspace:\<workspace name> 構文を使用して、Microsoft Sentinel ワークスペースを指定します。 ワークスペース名は、 [Microsoft Sentinel] タブで定義されているワークスペースのいずれかである必要があります。

      notebooklets init 関数に送信するパラメーターをさらに追加する場合は、改行で区切って、キーと値のペアとして指定します。 次に例を示します。

      workspace:<workspace name>
      providers=["LocalData","geolitelookup"]
      

      詳細については、MSTICNB (MSTIC Notebooklets) のドキュメントを参照してください。

    TILookupPivot など、一部のコンポーネントではパラメーターは不要です。

  3. [Save Settings](設定の保存) を選択して変更を保存します。

Python 3.6 カーネルと 3.8 カーネルを切り替える

Python 3.65 カーネルと 3.8 カーネルを切り替えると、MSTICPy や他のパッケージが期待どおりにインストールされない場合があります。

これは、!pip install pkg コマンドによって、最初の環境では正しくインストールされても、2 番目の環境では正しくインストールされない場合に発生する可能性があります。 これにより、2 番目の環境でパッケージをインポートまたは使用できない状況が発生します。

Azure ML ノートブックにパッケージをインストールするときに、!pip install... を使用しないことをお勧めします。 代わりに、次のいずれかのオプションを使用します。

  • ノートブック内で %pip 行マジックを使用する。 次を実行します。

    
    %pip install --upgrade msticpy
    
  • ターミナルからインストールする:

    1. Azure ML ノートブックでターミナルを開き、次のコマンドを実行します。

      conda activate azureml_py38
      pip install --upgrade msticpy
      
    2. ターミナルを閉じ、カーネルを再起動します。

msticpyconfig.yaml ファイルの環境変数を設定する

Azure ML で実行していて、msticpyconfig.yaml ファイルがユーザー フォルダーのルートにある場合、MSTICPy によってこれらの設定が自動的に検出されます。 ただし、ノートブックを別の環境で実行している場合は、このセクションの手順に従って、構成ファイルの場所を参照する環境変数を設定します。

環境変数に msticpyconfig.yaml ファイルのパスを定義すると、ファイルを既知の場所に保存し、常に同じ設定を読み込むことができるようになります。

ノートブックごとに異なる設定を使用する場合は、複数の構成ファイルと複数の環境変数を使用します。

  1. ~/.msticpyconfig.yaml%userprofile%/msticpyconfig.yaml など、msticpyconfig.yaml ファイルの場所を決定します。

    Azure ML ユーザー: 構成ファイルを Azure ML ユーザー フォルダーに保存すると、MSTICPy の init_notebook 関数 (初期化セルで実行) によってファイルが自動的に検出され、使用されるので、MSTICPYCONFIG 環境変数を設定する必要はありません。

    ただし、ファイルにシークレットも保存されている場合は、構成ファイルをコンピューティング ローカル ドライブに保存することをお勧めします。 コンピューティング内部ストレージにアクセスできるのは、コンピューティングを作成したユーザーだけですが、共有ストレージには、Azure ML ワークスペースへのアクセス権を持つすべてのユーザーがアクセスできます。

    詳細については、「Azure Machine Learning コンピューティング インスタンスとは」を参照してください。

  2. 必要に応じて、msticpyconfig.yaml ファイルを選択した場所にコピーします。

  3. その場所を参照するように MSTICPYCONFIG 環境変数を設定します。

次のいずれかの手順を使用して、MSTICPYCONFIG 環境変数を定義します。

Windows システムで MSTICPYCONFIG 環境変数を設定する場合:

  1. 必要に応じて、msticpyconfig.yaml ファイルをコンピューティング インスタンスに移動します。

  2. [システムのプロパティ] ダイアログ ボックスを開き、 [詳細設定] タブに移動します。

  3. [環境変数] を選択して、 [環境変数] ダイアログを開きます。

  4. [システム環境変数] 領域で [新規] を選択し、次のように値を定義します。

    • [変数名] : MSTICPYCONFIG として定義します
    • [変数値] : msticpyconfig.yaml ファイルのパスを入力します

注意

Linux および Windows オプションでは、定義した環境変数が選択されるように、Jupyter サーバーを再起動する必要があります。

次のステップ

詳細については、次を参照してください。

サブジェクト その他の参考資料
MSTICPy - MSTICPy パッケージ構成
- MSTICPy 設定エディター
- ノートブック環境の構成
- MPSettingsEditor ノートブック

: Azure-Sentinel-Notebooks GitHub リポジトリには、コメントアウトされたセクションを含むテンプレート msticpyconfig.yaml ファイルも含まれており、設定を理解するのに役立ちます。
Microsoft Sentinel と Jupyter Notebook - 初めての Microsoft Sentinel ノートブックを作成する (ブログ シリーズ)
- Jupyter Notebook: 概要
- MSTICPy のドキュメント
- Microsoft Sentinel Notebooks のドキュメント
- Infosec Jupyterbook
- Linux Host Explorer Notebook のチュートリアル
- セキュリティ調査に Jupyter を使用する理由
- Microsoft Sentinel と Notebooks を使用したセキュリティ調査
- Pandas のドキュメント
- Batch のドキュメント