コードレス コネクタ フレームワーク (CCF) を使用して Azure Storage BLOB データ コネクタを作成するには、このリファレンスを、Microsoft Sentinel REST API for Data Connectors に関する記事に加えて使用します。
各dataConnectorは、Microsoft Sentinel データ コネクタの特定の接続を表します。 1 つのデータ コネクタに複数の接続があり、異なるエンドポイントからデータをフェッチします。 このリファレンス ドキュメントを使用して構築された JSON 構成は、CCF データ コネクタのデプロイ テンプレートを完了するために使用されます。
詳細については、「Microsoft Sentinel用のコードレス コネクタを作成する」を参照してください。
Azure Storage BLOB CCF データ コネクタを構築する
サンプルの Storage Blob CCF データ コネクタ デプロイ テンプレートを使用して、Azure Storage BLOB データ ソースを接続する開発を簡略化します。 詳細については、「 Connector StorageBlob CCF テンプレート」を参照してください。
ほとんどのデプロイ テンプレート セクションが入力された状態で、最初の 2 つのコンポーネント (出力テーブルと DCR) をビルドするだけで済みます。 詳細については、「 出力テーブル定義 」および「 データ収集規則 (DCR)」 セクションを参照してください。
データ コネクタ - 作成または更新
REST API ドキュメントの 作成または更新 操作を参照して、最新の安定した API バージョンまたはプレビュー API バージョンを見つけます。 作成操作と更新操作の違いは、更新に etag 値が必要です。
PUT メソッド
https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectors/{{dataConnectorId}}?api-version={{apiVersion}}
URI パラメーター
最新の API バージョンの詳細については、「 データ コネクタ - URI パラメーターの作成または更新」を参照してください。
| 名前 | 説明 |
|---|---|
| dataConnectorId | データ コネクタ ID は一意の名前である必要があり、要求本文の name パラメーターと同じです。 |
| resourceGroupName | 大文字と小文字を区別しないリソース グループの名前。 |
| subscriptionId | ターゲット サブスクリプションの ID。 |
| workspaceName | ID ではなくワークスペースの 名前 。 正規表現パターン: ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$ |
| api-version | この操作に使用する API バージョン。 |
要求本文
StorageAccountBlobContainer CCF データ コネクタの要求本文には、次の構造があります。
{
"name": "{{dataConnectorId}}",
"kind": "StorageAccountBlobContainer",
"etag": "",
"properties": {
"connectorDefinitionName": "",
"auth": {},
"request": {},
"dcrConfig": {},
"response": {}
}
}
StorageAccountBlobContainer
StorageAccountBlobContainer は、Azure Storage BLOB データ ソースに対して予想される応答ペイロードが既に構成されている CCF データ コネクタを表します。 ストレージ BLOB にデータを送信するようにプロデューサーを構成するには、個別に行う必要があります。
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
| name | はい | string | URI パラメーターに一致する接続の一意の名前 |
| kind | はい | string | にする必要があります。 |
| etag | GUID | 新しいコネクタを作成する場合は、空のままにします。 更新操作の場合、etag は既存のコネクタの etag (GUID) と一致する必要があります。 | |
| プロパティ。connectorDefinitionName | string | データ コネクタの UI 構成を定義する DataConnectorDefinition リソースの名前。 詳細については、「 データ コネクタの定義」を参照してください。 | |
| プロパティ。認証 | True | 入れ子になった JSON | Azure Storage BLOB データを取り込むための資格情報について説明します。 詳細については、「 認証の構成」を参照してください。 |
| プロパティ。要求 | True | 入れ子になった JSON | スコープ内 BLOB で作成されたイベントを受け取るストレージ キューのAzureについて説明します。 詳細については、「 要求の構成」を参照してください。 |
| プロパティ。dcrConfig | 入れ子になった JSON | データがデータ収集規則 (DCR) に送信されるときに必要なパラメーター。 詳細については、「 DCR の構成」を参照してください。 | |
| プロパティ。応答 | True | 入れ子になった JSON | データをプルするときに API から返される応答オブジェクトと入れ子になったメッセージについて説明します。 詳細については、「 応答の構成」を参照してください。 |
認証の構成
Azure Storage Blob コネクタは、Microsoft が管理するマルチテナント アプリケーション (サービス プリンシパルブループリント) に関連付けられているテナントで作成されたサービス プリンシパルに依存します。 テナント管理者は、このサービス プリンシパルを作成するための同意を付与する必要があります。 ARM テンプレートは、アプリケーションに関連付けられているサービス プリンシパルがテナントに既に存在するかどうかを確認する機能を提供し、存在しない場合は、ユーザーの同意を得てサービス プリンシパルを作成するオプションを提供します。
ARM テンプレートの例には、ストレージ アカウントに必要なすべてのロールベースのアクセスを適用して BLOB を読み取り、キューに投稿する操作が含まれています。 使用するテンプレートとサービス プリンシパルが環境のアプリケーションに関連付けられていることを確認し、テナント管理者の同意が付与されていることを確認します。
次の表に、Azure環境ごとのアプリケーション ID を示します。
| Azure環境 | ApplicationId |
|---|---|
| AzureCloud | 4f05ce56-95b6-4612-9d98-a45c8cc33f9f |
StorageAccountBlobContainer 認証の例:
"auth": {
"type": "ServicePrincipal"
}
要求の構成
要求セクションでは、BLOB で作成されたイベント メッセージを受信するストレージ キュー Azureについて説明します。
| フィールド | 必須 | 型 | 説明 |
|---|---|---|---|
| QueueUri | True | 文字列 | BLOB で作成されたイベントを受信するAzure ストレージ キューの URI。 |
| DlqUri | True | 文字列 | 失敗したメッセージの配信不能キューの URI。 |
StorageAccountBlobContainer 要求の例:
"request": {
"QueueUri": "[[concat('https://', variables('storageAccountName'), '.queue.core.windows.net/', variables('queueName'))]",
"DlqUri": "[[concat('https://', variables('storageAccountName'), '.queue.core.windows.net/', variables('dlqName'))]"
}
応答構成
次のパラメーターを使用して、データ コネクタの応答処理を定義します。
| フィールド | 必須 | 型 | 説明 |
|---|---|---|---|
| EventsJsonPaths | True | 文字列の一覧 | 応答 JSON 内のメッセージへのパスを定義します。 JSON パス式は、JSON 構造体内の要素または要素のセットへのパスを指定します。 |
| IsGzipCompressed | ブール型 | 応答が gzip ファイルに圧縮されているかどうかを判断します。 | |
| format | True | 文字列 |
json、 csv、 xml、または parquet |
| CompressionAlgo | 文字列 | 圧縮アルゴリズム ( multi-gzip または deflate)。 gzip 圧縮の場合は、このパラメーターの値を設定するのではなく、 IsGzipCompressed を True に構成します。 |
|
| CsvDelimiter | 文字列 | 応答形式が CSV で、 ,の既定の CSV 区切り記号を変更する場合。 |
|
| HasCsvBoundary | ブール型 | CSV データに境界があるかどうかを示します。 | |
| HasCsvHeader | ブール型 | CSV データにヘッダーがあるかどうかを示します。 既定値: True。 |
|
| CsvEscape | 文字列 | フィールド境界のエスケープ文字。 既定値: "。 たとえば、ヘッダーが id,name,avg された CSV と、 1,"my name",5.5 のようなスペースを含むデータ行には、 " フィールド境界が必要です。 |
注:
CSV 形式の種類は RFC 4180 仕様で解析されます。
応答構成の例
非圧縮 JSON:
"response": {
"EventsJsonPaths": ["$"],
"format": "json"
}
圧縮された CSV:
"response": {
"EventsJsonPaths": ["$"],
"format": "csv",
"IsGzipCompressed": true
}
Parquet (圧縮は推論できます):
"response": {
"EventsJsonPaths": ["$"],
"format": "parquet"
}
DCR 構成
| フィールド | 必須 | 型 | 説明 |
|---|---|---|---|
| DataCollectionEndpoint | True | 文字列 | DCE (データ収集エンドポイント)、たとえば、 https://example.ingest.monitor.azure.com。 |
| DataCollectionRuleImmutableId | True | 文字列 | DCR 不変 ID。 これを見つけるには、DCR 作成応答を表示するか 、DCR API を使用します。 |
| StreamName | はい | string | この値は、DCR で定義されている streamDeclaration です (プレフィックスは Custom-で始まる必要があります)。 |
CCF データ コネクタの例
StorageAccountBlobContainer CCF データ コネクタ JSON のすべてのコンポーネントの例を次に示します。
{
"kind": "StorageAccountBlobContainer",
"properties": {
"connectorDefinitionName": "[[parameters('connectorDefinitionName')]",
"dcrConfig": {
"streamName": "[variables('streamName')]",
"dataCollectionEndpoint": "[[parameters('dcrConfig').dataCollectionEndpoint]",
"dataCollectionRuleImmutableId": "[[parameters('dcrConfig').dataCollectionRuleImmutableId]"
},
"auth": {
"type": "ServicePrincipal"
},
"request": {
"QueueUri": "[[concat('https://', variables('storageAccountName'), '.queue.core.windows.net/', variables('queueName'))]",
"DlqUri": "[[concat('https://', variables('storageAccountName'), '.queue.core.windows.net/', variables('dlqName'))]"
}
}
}
詳細については、「 データ コネクタ REST API の作成の例」を参照してください。