リポジトリのデプロイをカスタマイズする (パブリック プレビュー)
Microsoft Sentinel ワークスペースへのリポジトリのコンテンツのデプロイをカスタマイズするには、主に 2 つの方法があります。 各方法では異なるファイルと構文が使われるため、これらの例を使って作業を始めることを検討してください。
カスタマイズ方法 | 対象となる配置オプション |
---|---|
GitHub ワークフロー DevOps パイプライン |
接続の配置トリガーをカスタマイズする 配置パスをカスタマイズする スマート配置の有効化 |
構成ファイル | コンテンツ配置の優先順位を制御する 特定のコンテンツ ファイルを配置から "除外" することを選択する パラメーター ファイルを特定のコンテンツ ファイルにマップすることで、さまざまなワークスペースに配置をスケーリングする |
重要
Microsoft Sentinel のリポジトリ機能は、現在プレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項について詳しくは、「Microsoft Azure プレビューの追加の使用条件」を参照してください。
前提条件
リポジトリの配置をカスタマイズするには、リポジトリ接続が存在する必要があります。 接続の作成の詳細については、「リポジトリからカスタム コンテンツを配置する」を参照してください。 接続が確立された後は、次の前提条件が適用されます。
- GitHub リポジトリへのコラボレーター アクセスまたは Azure DevOps リポジトリへのプロジェクト管理者アクセス
- GitHub に対して有効なアクションと、Azure DevOps に対して有効なパイプライン
- ワークスペースに配置するカスタム コンテンツ ファイルがサポートされている形式であることを確認します。 サポートされている形式については、「リポジトリのコンテンツを計画する」を参照してください。
配置できるコンテンツ タイプの詳細については、「コンテンツの検証」を参照してください。
ワークフローまたはパイプラインをカスタマイズする
既定のワークフローでは、リポジトリへのコミットに基づいて、前回のデプロイ以降に変更されたコンテンツのみがデプロイされます。 異なる配置トリガーを構成したり、特定のルート フォルダーからのみコンテンツを配置したりするには、カスタマイズしてください。
接続の種類に応じて、次のいずれかのタブを選択します。
GitHub デプロイ ワークフローをカスタマイズするには:
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]
ページの右上にある鉛筆ボタンを選択して編集のためにファイルを開き、次のようにデプロイを変更します。
デプロイ トリガーを変更するには、コードの
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 ブランチ全体がコンテンツ デプロイのパスに含まれることを示しています。特定のフォルダー パスのコンテンツのみをデプロイするには、それを
paths
とdirectory
の両方の構成に追加します。 たとえば、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 の両方で、トリガー パスとデプロイ パスのディレクトリの一貫性を維持してください。
パラメーター ファイルを使用してデプロイをスケーリングする
コンテンツ ファイルのインライン値としてパラメーターを渡すのではなく、Bicep パラメーター ファイルを使用するか、パラメーター値を含む JSON ファイルを使用することを検討してください。 次に、これらのパラメーター ファイルを関連付けられた Microsoft Sentinel コンテンツ ファイルにマップして、異なるワークスペースにまたがる配置をより適切にスケーリングします。
パラメーター ファイルをコンテンツ ファイルにマップするには、いくつかの方法があります。 Bicep パラメーター ファイルは Bicep ファイル テンプレートのみをサポートしますが、JSON パラメーター ファイルは両方をサポートしていることに注意してください。 リポジトリの展開パイプラインでは、パラメーター ファイルが次の順序で考慮されます。
sentinel-deployment.config にマッピングはありますか?
詳細については、「接続構成をカスタマイズする」を参照してください。ワークスペースにマップされたパラメーター ファイルはありますか? はい。コンテンツ ファイルは、次のパターンのいずれかと一致するワークスペースマップ パラメーター ファイルと同じディレクトリ内にあります:
.<WorkspaceID>.bicepparam
.parameters-<WorkspaceID>.json既定のパラメーター ファイルはあるか? はい。コンテンツ ファイルは同じディレクトリにあり、パラメーター ファイルは次のパターンのいずれかと一致します:
.bicepparam
.parameters.json
構成ファイルを使用してパラメーター ファイルをマップするか、ファイル名にワークスペース ID を指定することで、複数のワークスペース配置との競合を回避します。
重要
マッピングの優先順位に基づいてパラメーター ファイルの一致が決定されると、残りのマッピングはパイプラインで無視されます。
sentinel-deployment.config に列挙されているマップされたパラメーター ファイルを変更すると、それとペアになったコンテンツ ファイルのデプロイがトリガーされます。 ワークスペースマップ パラメーター ファイルまたは既定のパラメーター ファイルの追加または変更を行うと、さらに優先順位の高いパラメーター マッピングが設定されていない限り、ペアになっているコンテンツ ファイルと、新しく変更されたパラメーターの配置がトリガーされます。 ワークフロー/パイプライン定義ファイルでスマート デプロイ機能が有効になっている限り、他のコンテンツ ファイルはデプロイされません。
接続構成をカスタマイズする
2022 年 7 月の時点で、リポジトリのデプロイ スクリプトでは、各リポジトリ ブランチのデプロイ構成ファイルの使用がサポートされています。 構成 JSON ファイルは、パラメーター ファイルを関連するコンテンツ ファイルにマップし、デプロイの特定のコンテンツを優先し、デプロイから特定のコンテンツを除外するのに役立ちます。
リポジトリのルートで sentinel-deployment.config ファイルを作成します。 この構成ファイルを追加、削除、または変更すると、更新された構成に従ってリポジトリ内のすべてのコンテンツの完全な配置がトリガーされます。
構造化コンテンツを 3 つの省略可能なセクションである
"prioritizedcontentfiles":
、"excludecontentfiles":
、"parameterfilemappings":
に追加します。 セクションが含まれない場合や、.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"
}
Note
どのコンテンツ パスでも円記号 "\" 文字を使わないでください。 代わりにスラッシュ "/" を使ってください。
コンテンツ ファイルの優先順位を指定するには:
リポジトリ内のコンテンツの量が増えると、デプロイの時間が長くなる可能性があります。 時間の影響を受けやすいコンテンツをこのセクションに追加し、トリガーが発生したときにそのデプロイを優先させます。
"prioritizedcontentfiles":
セクションに完全なパス名を追加します。 現時点では、ワイルドカード マッチングはサポートされていません。コンテンツ ファイルを除外するには、個々の .json コンテンツ ファイルの完全パス名で
"excludecontentfiles":
セクションを変更します。パラメーターをマップするには:
デプロイ スクリプトには、「パラメーター ファイルを使用してデプロイをスケーリングする」で説明されているように、3 通りのパラメーター マッピング方法を使用できます。 sentinel-deployment.config を介したパラメーターのマッピングが最も優先順位が高く、指定したパラメーター ファイルは、関連付けられたコンテンツ ファイルに確実にマップされます。
"parameterfilemappings":
セクションを、ターゲット接続のワークスペース ID と個々の .json ファイルの絶対パス名に変更してください。
関連するコンテンツ
サンプル リポジトリを使って、デプロイ構成ファイルと 3 つのパラメーター マッピング方法をすべて行ってみることができます。 詳細については、Microsoft Sentinel CICD リポジトリのサンプルを参照してください。