リポジトリのデプロイをカスタマイズする (パブリック プレビュー)

リポジトリ コンテンツのデプロイをワークスペースにMicrosoft Sentinelするには、主に 2 つの方法があります。 各メソッドは異なるファイルと構文を使用するため、これらの例を検討して作業を開始します。

カスタマイズ方法 対象となるデプロイ オプション
GitHub ワークフロー
DevOps パイプライン
接続のデプロイ トリガーをカスタマイズする
デプロイ パスをカスタマイズする
スマート デプロイの有効化
構成ファイル コンテンツ展開の優先順位付け順序を制御する
展開から特定のコンテンツ ファイルを 除外 することを選択します
パラメーター ファイルを特定のコンテンツ ファイルにマッピングして、異なるワークスペース間でデプロイをスケーリングする

重要

Microsoft Sentinel リポジトリ機能は現在プレビュー段階です。 ベータ版、プレビュー版、または一般公開されていないAzure機能に適用されるその他の法的条件については、「Microsoft Azure プレビューの補足使用条件」を参照してください。

前提条件

リポジトリのデプロイをカスタマイズするには、リポジトリ接続が存在する必要があります。 接続の作成の詳細については、「 リポジトリからカスタム コンテンツをデプロイする」を参照してください。 接続が確立されると、次の前提条件が適用されます。

  • GitHub リポジトリへのコラボレーター アクセスまたはプロジェクト管理者がAzure DevOps リポジトリにアクセスする
  • Azure DevOps で有効になっている GitHub とパイプラインに対して有効なアクション
  • ワークスペースにデプロイするカスタム コンテンツ ファイルがサポートされている形式であることを確認します。 サポートされている形式については、「 リポジトリコンテンツを計画する」を参照してください。

デプロイ可能なコンテンツ タイプの詳細については、「 リポジトリ コンテンツを計画する」を参照してください。

ワークフローまたはパイプラインをカスタマイズする

既定のワークフローでは、リポジトリへのコミットに基づいて、前回のデプロイ以降に変更されたコンテンツのみがデプロイされます。 さまざまなデプロイ トリガーを構成したり、特定のルート フォルダーから排他的にコンテンツを展開したりするようにカスタマイズします。

接続の種類に応じて、次のいずれかのタブを選択します。

GitHub デプロイ ワークフローをカスタマイズするには:

  1. GitHub で、リポジトリに移動し、 .github/workflows ディレクトリでワークフローを見つけます。

    ワークフロー ファイルは、 sentinel-deploy-xxxxx.yml以降の YML ファイルです。 そのファイルを開き、ワークフロー名が最初の行に表示され、次の既定の名前付け規則があります: Deploy Content to <workspace-name> [<deployment-id>]

    例: name: Deploy Content to repositories-demo [xxxxx-dk5d-3s94-4829-9xvnc7391v83a]

  2. ページの右上にある鉛筆ボタンを選択して編集用のファイルを開き、次のようにデプロイを変更します。

    • デプロイ トリガーを変更するには、コード内の on セクションを更新します。このセクションでは、ワークフローを実行するようにトリガーするイベントについて説明します。

      既定では、この構成は on: push に設定されています。これは、既存のコンテンツへの変更とリポジトリへの新しいコンテンツの追加の両方を含む、接続されたブランチへの任意のプッシュでワークフローがトリガーされることを意味します。 例:

      on:
          push:
              branches: [ main ]
              paths:
              - `**`
              - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow
              - `.github/workflows/sentinel-deploy-<deployment-id>.yml`
      

      これらの設定を変更します。たとえば、ワークフローを定期的に実行するようにスケジュールしたり、異なるワークフロー イベントを組み合わせたりします。

      詳細については、ワークフロー イベントの構成に関する GitHub ドキュメントを参照してください

    • スマートデプロイを無効にするには:スマートデプロイの動作は、説明されているデプロイ トリガーとは別です。 ワークフローの [ jobs ] セクションに移動します。 smartDeployment既定値を true から false に切り替えます。 この変更がコミットされると、スマート デプロイ機能がオフになり、この接続の今後のすべてのデプロイで、リポジトリの関連するすべてのコンテンツ ファイルが接続されたワークスペースに再デプロイされます。

    • デプロイ パスを変更するには:

      on セクションに表示される既定の構成では、paths セクションの最初の行のワイルドカード (**) は、ブランチ全体がデプロイ トリガーのパスにあることを示します。

      この既定の構成は、コンテンツがブランチの任意の部分にプッシュされるたびにデプロイ ワークフローがトリガーされることを意味します。

      ファイルの後半の jobs セクションには、次の既定の構成が含まれています: directory: '${{ github.workspace }}'。 この行は、GitHub ブランチ全体が、フォルダー パスをフィルター処理せずに、コンテンツデプロイのパスにあることを示します。

      特定のフォルダー パスからのみコンテンツを展開するには、 pathsdirectory 構成の両方にコンテンツを追加します。 たとえば、 SentinelContent という名前のルート フォルダーからのみコンテンツを展開するには、次のようにコードを更新します。

      paths:
      - `SentinelContent/**`
      - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow
      - `.github/workflows/sentinel-deploy-<deployment-id>.yml`
      
      ...
          directory: '${{ github.workspace }}/SentinelContent'
      

詳細については、GitHub ワークフローのGitHub Actionsと編集に関する GitHub ドキュメントを参照してください

重要

GitHub と Azure DevOps の両方で、トリガー パスとデプロイ パスディレクトリの一貫性を維持してください。

パラメーター ファイルを使用してデプロイをスケーリングする

コンテンツ ファイルでパラメーターをインライン値として渡すのではなく、 Bicep パラメーター ファイルまたはパラメーター 値を 含む JSON ファイルの使用を検討してください。 次に、これらのパラメーター ファイルを関連する Microsoft Sentinel コンテンツ ファイルにマップして、さまざまなワークスペース間でのデプロイのスケーリングを改善します。

パラメーター ファイルをコンテンツ ファイルにマップするには、いくつかの方法があります。 Bicep パラメーター ファイルでは Bicep ファイル テンプレートのみがサポートされますが、JSON パラメーター ファイルでは両方がサポートされることに注意してください。 リポジトリのデプロイ パイプラインでは、次の順序でパラメーター ファイルが考慮されます。

パラメーター ファイル マッピングの優先順位を示す図。

  1. sentinel-deployment.config?
    にマッピングはありますか?詳細については、「接続構成をカスタマイズする」を参照してください。

  2. ワークスペース にマップされたパラメーター ファイルはありますか? はい。コンテンツ ファイルは、ワークスペース マップパラメーター ファイルと同じディレクトリ内に存在し、次のいずれかのパターンに一致します:
    .<WorkspaceID>.bicepparam
    .parameters-<WorkspaceID>.json

  3. 既定のパラメーター ファイルはありますか? はい。コンテンツ ファイルは同じディレクトリに存在し、パラメーター ファイルは
    .bicepparam
    のいずれかと一致します.parameters.json

構成ファイルを使用してパラメーター ファイルをマッピングするか、ファイル名にワークスペース ID を指定することで、複数のワークスペース展開との競合を回避します。

重要

マッピングの優先順位に基づいてパラメーター ファイルの一致が決定されると、パイプラインは残りのマッピングを無視します。

sentinel-deployment.config に一覧表示されているマップされたパラメーター ファイルを変更すると、ペアリングされたコンテンツ ファイルのデプロイがトリガーされます。 ワークスペース マップパラメーター ファイルまたは既定のパラメーター ファイルを追加または変更すると、優先順位の高いパラメーター マッピングが設定されていない限り、ペアになっているコンテンツ ファイルと新しく変更されたパラメーターのデプロイもトリガーされます。 スマートデプロイ機能がワークフロー/パイプライン定義ファイルで引き続き有効になっている限り、他のコンテンツ ファイルはデプロイされません。

接続構成をカスタマイズする

リポジトリのデプロイ スクリプトでは、2022 年 7 月の時点で、各リポジトリ ブランチのデプロイ構成ファイルの使用がサポートされています。 構成 JSON ファイルは、パラメーター ファイルを関連するコンテンツ ファイルにマップし、デプロイ内の特定のコンテンツに優先順位を付け、特定のコンテンツをデプロイから除外するのに役立ちます。

  1. リポジトリのルートに sentinel-deployment.config ファイルを作成します。 この構成ファイルを追加、削除、または変更すると、更新された構成に従って、リポジトリ内のすべてのコンテンツの完全なデプロイがトリガーされます。

    リポジトリのルート ディレクトリのスクリーンショット。RepositoriesSampleContent は、sentinel-deployment.config ファイルの場所と共に表示されます。

  2. 構造化コンテンツを、 "prioritizedcontentfiles":"excludecontentfiles":"parameterfilemappings":の 3 つの省略可能なセクションに含めます。 セクションが含まれていない場合、または .config ファイルが省略された場合でも、デプロイ プロセスが実行されます。 無効なセクションまたは認識されないセクションは無視されます。

有効な sentinel-deployment.config ファイルの内容全体の例を次に示します。 このサンプルは、Microsoft Sentinel CICD リポジトリ のサンプルでも確認できます。

{
  "prioritizedcontentfiles": [
    "parsers/Sample/ASimAuthenticationAWSCloudTrail.json",
    "workbooks/sample/TrendMicroDeepSecurityAttackActivity_ARM.json",
    "Playbooks/PaloAlto-PAN-OS/PaloAltoCustomConnector/azuredeploy.bicep"
  ], 
  "excludecontentfiles": [
     "Detections/Sample/PaloAlto-PortScanning.json",
     "parameters"
  ],
  "parameterfilemappings": {
    "879001c8-2181-4374-be7d-72e5dc69bd2b": {
      "Playbooks/PaloAlto-PAN-OS/Playbooks/PaloAlto-PAN-OS-BlockIP/azuredeploy.bicep": "parameters/samples/auzredeploy.bicepparam"
    },
    "9af71571-7181-4cef-992e-ef3f61506b4e": {
      "Playbooks/Enrich-SentinelIncident-GreyNoiseCommunity-IP/azuredeploy.json": "path/to/any-parameter-file.json"
    }
  },
  "DummySection": "This shouldn't impact deployment"
}

注:

どのコンテンツ パスにも円記号 "\" 文字を使用しないでください。 代わりにスラッシュ "/" を使用します。

  • コンテンツ ファイルに優先順位を付ける方法:

    リポジトリ内のコンテンツの量が増えるにつれて、デプロイ時間が長くなる可能性があります。 このセクションに時間の影響を受けやすいコンテンツを追加して、トリガーが発生したときにデプロイに優先順位を付けます。

    [ "prioritizedcontentfiles": ] セクションに完全なパス名を追加します。 現時点では、ワイルドカードの一致はサポートされていません。

  • コンテンツ ファイルを除外するには、個々の.json コンテンツ ファイルの完全なパス名を使用して "excludecontentfiles": セクションを変更します。

  • パラメーターをマップするには:

    デプロイ スクリプトは、「パラメーター ファイルを使用して デプロイをスケーリングする」で説明されているように、3 つのマッピング パラメーターの方法を受け入れます。 sentinel-deployment.config を介したパラメーターのマッピングが最も優先順位が高く、指定されたパラメーター ファイルが関連付けられているコンテンツ ファイルにマップされることを保証します。 ターゲット接続のワークスペース ID と個々の.json ファイルの完全なパス名を使用して、 "parameterfilemappings": セクションを変更します。

サンプル リポジトリは、デプロイ構成ファイルと 3 つのパラメーター マッピング メソッドすべてを示しています。 詳細については、「MICROSOFT SENTINEL CICD リポジトリのサンプル」を参照してください。