次の方法で共有


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

Microsoft Sentinel ワークスペースへのリポジトリのコンテンツのデプロイをカスタマイズするには、主に 2 つの方法があります。 各方法では異なるファイルと構文が使われるため、これらの例を使って作業を始めることを検討してください。

  • GitHub ワークフローまたは DevOps パイプラインを変更して、接続のデプロイ トリガー、デプロイ パス、スマート デプロイの使用などのデプロイ オプションをカスタマイズします。

  • 新しく導入された構成ファイルを利用して、コンテンツのデプロイの優先順位を制御したり、デプロイから特定のコンテンツ ファイルを "除外" したり、パラメーター ファイルを特定のコンテンツ ファイルにマップしたりします。

重要

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

前提条件とスコープ

Microsoft Sentinel では、現在、GitHub および Azure DevOps リポジトリへの接続がサポートされています。 Microsoft Sentinel ワークスペースをお使いのソース管理リポジトリに接続する前に、次のものがあることを確認してください。

  • Microsoft Sentinel ワークスペースを含むリソース グループの所有者ロール、"または"、接続を作成するためのユーザー アクセス管理者ロールと Sentinel 共同作成者ロールの組み合わせ
  • GitHub リポジトリへのコラボレーター アクセスまたは Azure DevOps リポジトリへのプロジェクト管理者アクセス
  • GitHub に対して有効なアクションと、Azure DevOps に対して有効なパイプライン
  • ワークスペースにデプロイするカスタム コンテンツ ファイルが、関連する Azure Resource Manager (ARM) テンプレートに含まれることを確認します。

詳しくは、「コンテンツを検証する」を参照してください。

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

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

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

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 Actions と GitHub ワークフローの編集に関する GitHub ドキュメントを参照してください。

重要

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

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

コンテンツ ファイル内のインライン値としてパラメーターを渡すのではなく、パラメーター値を含む JSON ファイルを使用することを検討してください。 その後、さまざまなワークスペースにわたってデプロイをより適切にスケーリングできるように、これらのパラメーター JSON ファイルを、関連付けられている Sentinel コンテンツ ファイルにマップします。 パラメーター ファイルを Sentinel ファイルにマップするには、さまざまな方法があり、リポジトリデプロイ パイプラインでは、次の順序でそれらを検討します。

A diagram showing the precedence of parameter file mappings.

  1. sentinel-deployment.config にマッピングはありますか? 詳細については、「接続構成をカスタマイズする」に関するページを参照してください。
  2. ワークスペースにマップされたパラメーター ファイルはありますか? はい、これは、末尾が .parameters-<WorkspaceID>.json のコンテンツ ファイルと同じディレクトリ内のパラメーター ファイルです。
  3. 既定のパラメーター ファイルはあるか? はい、末尾が .parameters.json のコンテンツ ファイルと同じディレクトリ内のいずれかのパラメーター ファイルです。

複数のデプロイを含むシナリオでの競合を回避するために、パラメーター ファイルは、構成ファイルを介してマップするか、ファイル名でワークスペース ID を指定してマップすることをお勧めします。

重要

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

sentinel-deployment.config に列挙されているマップされたパラメーター ファイルを変更すると、それとペアになったコンテンツ ファイルのデプロイがトリガーされます。 .parameters-<WorkspaceID>.json ファイルまたは .parameters.json ファイルの追加または変更を行うと、さらに優先順位の高いパラメーター マッピングが設定されていない限り、ペアになっているコンテンツ ファイルと、新しく変更されたパラメーターのデプロイがトリガーされます。 ワークフロー/パイプライン定義ファイルでスマート デプロイ機能が有効になっている限り、他のコンテンツ ファイルはデプロイされません。

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

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

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

    Screenshot of a repository root directory. The RepositoriesSampleContent is shown with the location of the sentinel-deployment.config file.

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

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

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

Note

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

  • コンテンツ ファイルの優先順位を指定するには:

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

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

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

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

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

次のステップ

サンプル リポジトリを使って、デプロイ構成ファイルと 3 つのパラメーター マッピング方法をすべて行ってみることができます。 詳しくは、Sentinel CICD リポジトリ サンプルに関するページをご覧ください。

ARM テンプレートの詳細については、次のリソースをご覧ください。