Azure Codeless Connector Framework の Storage BLOB データ コネクタ リファレンス

コードレス コネクタ フレームワーク (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 文字列 jsoncsvxml、または parquet
CompressionAlgo 文字列 圧縮アルゴリズム ( multi-gzip または deflate)。 gzip 圧縮の場合は、このパラメーターの値を設定するのではなく、 IsGzipCompressedTrue に構成します。
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 の作成の例」を参照してください。