コードレス コネクタ フレームワーク (CCF) を使用してデータ コネクタを作成するには、このドキュメントを 、Microsoft Sentinel REST API for Data Connector Definitions リファレンス ドキュメントの補足として使用します。具体的には、このリファレンス ドキュメントは次のセクションで展開されています。
-
connectorUiConfig
- Microsoft Sentinel のデータ コネクタ ページに表示されるビジュアル要素とテキストを定義します。
詳細については、「 コードレス コネクタの作成」を参照してください。
データ コネクタの定義 - 作成または更新
REST API ドキュメントの作成または更新操作を参照して、最新の安定した API バージョンまたはプレビュー API バージョンを見つけます。
update
値が必要なのは、etag
操作だけです。
PUT メソッド
https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectorDefinitions/{{dataConnectorDefinitionName}}?api-version={{apiVersion}}
URI パラメーター
最新の API バージョンの詳細については、「Data Connector の定義 - URI パラメーターの作成または更新」を参照してください。
リクエストの本文
API を使用して CCF データ コネクタ定義を作成するための要求本文には、次の構造があります。
{
"kind": "Customizable",
"properties": {
"connectorUIConfig": {}
}
}
dataConnectorDefinition には、次のプロパティがあります。
名前 | 必須 | タイプ | 説明 |
---|---|---|---|
親切 | 正しい | 糸 |
Customizable API ポーリング データ コネクタの場合は、それ以外の場合は Static |
プロパティ。connectorUiConfig | 正しい | 入れ子の JSON connectorUiConfig |
データ コネクタの UI 構成プロパティ |
コネクタのユーザー インターフェイスを構成する
このセクションでは、データ コネクタ ページのユーザー インターフェイスをカスタマイズするために使用できる構成オプションについて説明します。
次のスクリーンショットは、ユーザー インターフェイスの注目すべき領域に対応する数値で強調表示されたサンプル データ コネクタ ページを示しています。
ユーザー インターフェイスを構成するために必要な connectorUiConfig
セクションの次の各要素は、API の CustomizableConnectorUiConfig 部分に対応します。
フィールド | 必須 | タイプ | 説明 | 注目すべき領域のスクリーンショット# |
---|---|---|---|---|
タイトル | 正しい | ひも | データ コネクタ ページに表示されるタイトル | 1 |
ID | ひも | 内部使用のカスタム コネクタ ID を設定します | ||
ロゴ | ひも | SVG 形式のイメージ ファイルへのパス。 値が構成されていない場合は、既定のロゴが使用されます。 | 2 | |
発行者 | 正しい | ひも | コネクタのプロバイダー | 3 |
descriptionMarkdown | 正しい | markdown の文字列 | マークダウン言語を追加して強化する機能を備えたコネクタの説明。 | 4 |
sampleQueries | 正しい | 入れ子の JSON sampleQueries |
顧客がイベント ログ内のデータを検索する方法を理解するためのクエリ。 | |
graphQueries | 正しい | 入れ子の JSON graphQueries |
過去 2 週間のデータ インジェストを示すクエリ。 データ コネクタのすべてのデータ型に対して 1 つのクエリを指定するか、データ型ごとに異なるクエリを指定します。 |
5 |
graphQueriesTableName | コネクタがデータを挿入するテーブルの名前を設定します。 この名前は、{{graphQueriesTableName}} 値とgraphQueries 値lastDataReceivedQuery プレースホルダーを指定することで、他のクエリで使用できます。 |
|||
dataTypes | 正しい | 入れ子の JSON dataTypes |
コネクタのすべてのデータ型の一覧と、各データ型の最後のイベントの時刻をフェッチするクエリ。 | 6 |
接続基準 | 正しい | 入れ子の JSON 接続基準 |
コネクタが接続されているかどうかを確認する方法を定義するオブジェクト。 | 7 |
アクセス許可 | 正しい | 入れ子の JSON アクセス許可 |
UI の [前提条件 ] セクションに表示される情報。コネクタを有効または無効にするために必要なアクセス許可が一覧表示されます。 | 8 |
instructionSteps | 正しい | 入れ子の JSON 指示 |
コネクタのインストール方法を説明するウィジェット パーツの配列と、[ 手順 ] タブに表示されるアクション可能なコントロール。 | 9 |
connectivityCriteria (接続性基準)
フィールド | 必須 | タイプ | 説明 |
---|---|---|---|
タイプ | 正しい | 糸 | 次の 2 つのオプションのいずれか: HasDataConnectors – この値は、CCF などの API ポーリング データ コネクタに最適です。 コネクタは、少なくとも 1 つのアクティブな接続で接続されていると見なされます。isConnectedQuery – この値は、他の種類のデータ コネクタに最適です。 指定されたクエリがデータを返すと、コネクタは接続されていると見なされます。 |
価値 | 型が次の場合は true isConnectedQuery |
糸 | 特定の期間内にデータを受信するかどうかを判断するクエリ。 例: CommonSecurityLog | where DeviceVendor == \"Vectra Networks\"\n| where DeviceProduct == \"X Series\"\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(7d)" |
データ型
配列値 | タイプ | 説明 |
---|---|---|
名前 | 糸 |
lastDataReceivedQuery 変数のサポートを含む、graphQueriesTableName のわかりやすい説明。 例: {{graphQueriesTableName}} |
最後のデータ受信クエリ | 糸 | 1 つの行を返し、最後にデータを受信したことを示す KQL クエリ。結果がない場合はデータがありません。 例: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time) |
graphQueries
過去 2 週間のデータ インジェストを示すクエリを定義します。
データ コネクタのすべてのデータ型に対して 1 つのクエリを指定するか、データ型ごとに異なるクエリを指定します。
配列値 | タイプ | 説明 |
---|---|---|
metricName | 糸 | グラフのわかりやすい名前。 例: Total data received |
伝説 | 糸 | グラフの右側にある凡例に表示される文字列で、変数参照を含むものです。 例: {{graphQueriesTableName}} |
baseQuery | 糸 | 変数参照など、関連するイベントをフィルター処理するクエリ。 例: TableName_CL | where ProviderName == "myprovider" または {{graphQueriesTableName}} |
権限
配列値 | タイプ | 説明 |
---|---|---|
関税 | 糸 | 次の構文で、データ接続に必要なカスタム アクセス許可について説明します。 { 文字列 "name": , "description": 文字列} 例: 通関 値は、青い情報アイコンと共に Microsoft Sentinel の [前提条件] セクションに表示されます。 GitHub の例では、この値は GitHub API の個人用トークン キーの行に関連付けられます。GitHub 個人用トークンにアクセスする必要があります。... |
ライセンス | ENUM | 必要なライセンスを、 OfficeIRM 、OfficeATP 、 Office365 、 AadP1P2 、 Mcas 、 Aatp 、 Mdatp 、 Mtp のいずれかの値として定義します。 IoT 例: ライセンスの値は、Microsoft Sentinel に [License: Required Azure AD Premium P2]\(ライセンス: 必須 Azure AD Premium P2\) として表示されます |
resourceProvider | resourceProvider | Azure リソースの前提条件について説明します。 例: resourceProvider の値は、Microsoft Sentinel の [前提条件] セクションに次のように表示されます。 ワークスペース: 読み取りおよび書き込みアクセス許可が必要です。 キー: ワークスペースの共有キーに対する読み取りアクセス許可が必要です。 |
Tenant | ENUM 値の配列 例: "tenant": [ "GlobalADmin", "SecurityAdmin" ] |
必要なアクセス許可を、1 つ以上の値として定義します: "GlobalAdmin" 、 "SecurityAdmin" 、 "SecurityReader" 、 "InformationProtection" 例: Microsoft Sentinelでテナントの値を表示するには: 。 |
Von Bedeutung
Microsoft は、アクセス許可が最も少ないロールを使用することを推奨しています。 これにより、組織のセキュリティが向上します。 グローバル管理者は高い特権を持つロールであり、既存のロールを使用できない場合の緊急シナリオに限定する必要があります。
リソースプロバイダー
sub 配列値 | タイプ | 説明 |
---|---|---|
供給者 | ENUM | 次のいずれかの値を使用して、リソース プロバイダーについて説明します。 - Microsoft.OperationalInsights/workspaces - Microsoft.OperationalInsights/solutions - Microsoft.OperationalInsights/workspaces/datasources - microsoft.aadiam/diagnosticSettings - Microsoft.OperationalInsights/workspaces/sharedKeys - Microsoft.Authorization/policyAssignments |
providerDisplayName | 糸 | コネクタ ページで requiredPermissions が検証されたときに赤い "x" または緑色のチェックマークが表示される [前提条件] の下のリスト アイテム。 例 "Workspace" |
権限表示テキスト | 糸 | requiredPermissions で構成された値に対応する読み取り、書き込み、または読み取りと書き込みのアクセス許可用のテキスト表示 |
requiredPermissions | { "action": ブーリアン, "delete": ブーリアン, "read": ブーリアン, "write": ブーリアン} |
コネクタに必要な最小限のアクセス許可について説明します。 |
スコープ | ENUM | データ コネクタのスコープを、 "Subscription" 、 "ResourceGroup" 、次のいずれかの値として記述します。 "Workspace" |
サンプルクエリ
配列値 | タイプ | 説明 |
---|---|---|
説明 | 糸 | サンプル クエリのわかりやすい説明。 例: Top 10 vulnerabilities detected |
クエリ | 糸 | データ型のデータを取得するために使用されるサンプルクエリ。 例: {{graphQueriesTableName}}\n | sort by TimeGenerated\n | take 10 |
その他のリンク オプションを構成する
markdown を使用してインライン リンクを定義するには、次の例を使用します。
{
"title": "",
"description": "Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)"
}
リンクを ARM テンプレートとして定義するには、ガイドとして次の例を使用します。
{
"title": "Azure Resource Manager (ARM) template",
"description": "1. Click the **Deploy to Azure** button below.\n\n\t[]({URL to custom ARM template})"
}
instructionSteps
このセクションでは、Microsoft Sentinel のデータ コネクタ ページに表示される一連の手順を定義し、次の構造を持つパラメーターを提供します。
"instructionSteps": [
{
"title": "",
"description": "",
"instructions": [
{
"type": "",
"parameters": {}
}
],
"innerSteps": {}
}
]
アレイ プロパティ | 必須 | タイプ | 説明 |
---|---|---|---|
タイトル | 糸 | 手順のタイトルを定義します。 | |
説明 | 糸 | 手順のわかりやすい説明を定義します。 | |
innerSteps | 配列 | 内部命令ステップの配列を定義します。 | |
指示 | 正しい | 命令の配列 | 特定のパラメーター型の命令の配列を定義します。 |
指示
さまざまなパラメーターと、より多くの命令ステップをグループに入れ子にする機能を持つ命令のグループを表示します。 ここで定義されているパラメーターは対応します
タイプ | 配列プロパティ | 説明 |
---|---|---|
OAuthForm | OAuthForm | OAuth を使用して接続する |
テキスト ボックス | テキスト ボックス | これは ConnectionToggleButton とペアになります。 使用可能な種類は 4 つあります。password text number email |
ConnectionToggleButton | ConnectionToggleButton | プレースホルダー パラメーターを使用して提供される接続情報に基づいて、DCR のデプロイをトリガーします。 サポートされているパラメーターは次のとおりです。name :必須disabled isPrimary connectLabel disconnectLabel |
コピー可能なラベル | コピー可能なラベル | 末尾にコピー ボタンがあるテキスト フィールドが表示されます。 ボタンを選択すると、フィールドの値がコピーされます。 |
情報メッセージ | 情報メッセージ | インライン情報メッセージを定義します。 |
InstructionStepsGroup | InstructionStepsGroup | 別の手順セクションに、必要に応じて展開または折りたたみ可能な命令のグループを表示します。 |
InstallAgent | InstallAgent | さまざまなインストール要件を満たす Azure の他の部分へのリンクを表示します。 |
OAuthForm
このコンポーネントでは、データ コネクタ テンプレートの OAuth2
プロパティにauth
型が存在する必要があります。
"instructions": [
{
"type": "OAuthForm",
"parameters": {
"clientIdLabel": "Client ID",
"clientSecretLabel": "Client Secret",
"connectButtonLabel": "Connect",
"disconnectButtonLabel": "Disconnect"
}
}
]
テキストボックス
Textbox
型の例をいくつか次に示します。 これらの例は、auth
の セクションの例で使用されるパラメーターに対応しています。 4 種類ごとに、それぞれ label
、 placeholder
、および name
があります。
"instructions": [
{
"type": "Textbox",
"parameters": {
{
"label": "User name",
"placeholder": "User name",
"type": "text",
"name": "username"
}
}
},
{
"type": "Textbox",
"parameters": {
"label": "Secret",
"placeholder": "Secret",
"type": "password",
"name": "password"
}
}
]
ConnectionToggleButton
"instructions": [
{
"type": "ConnectionToggleButton",
"parameters": {
"connectLabel": "toggle",
"name": "toggle"
}
}
]
コピー可能なラベル
例:
サンプル コード:
{
"parameters": {
"fillWith": [
"WorkspaceId",
"PrimaryKey"
],
"label": "Here are some values you'll need to proceed.",
"value": "Workspace is {0} and PrimaryKey is {1}"
},
"type": "CopyableLabel"
}
配列値 | 必須 | タイプ | 説明 |
---|---|---|---|
fillWith | ENUM | プレースホルダーを設定するために使用される環境変数の配列。 複数のプレースホルダーをコンマで区切ります。 例: {0},{1} サポートされる値: workspaceId 、 workspaceName 、 primaryKey 、 MicrosoftAwsAccount 、 subscriptionId |
|
ラベル | 正しい | 糸 | テキスト ボックスの上にあるラベルのテキストを定義します。 |
価値 | 正しい | 糸 | テキスト ボックスに表示する値を定義し、プレースホルダーをサポートします。 |
行 | 行 | ユーザー インターフェイス領域の行を定義します。 既定では、1 に設定 します。 | |
wideLabel | ボーリアン | 長い文字列のワイド ラベルを決定します。 既定では、 false に設定します。 |
InfoMessage
インライン情報メッセージの例を次に示します。
これに対し、次の図はインラインではない情報メッセージを示しています。
配列値 | タイプ | 説明 |
---|---|---|
テキスト | 糸 | メッセージに表示するテキストを定義します。 |
目に見える | ボーリアン | メッセージを表示するかどうかを決定します。 |
インライン | ボーリアン | 情報メッセージの表示方法を決定します。 - true : (推奨) 指示に埋め込まれた情報メッセージを表示します。 - false :青い背景を追加します。 |
InstructionStepsGroup
展開可能な命令グループの例を次に示します。
配列値 | 必須 | タイプ | 説明 |
---|---|---|---|
タイトル | 正しい | 糸 | 命令ステップのタイトルを定義します。 |
説明 | 糸 | 省略可能な説明テキスト。 | |
canCollapseAllSections | ボーリアン | セクションが折りたたみ可能なアコーディオンかどうかを判断します。 | |
noFxPadding | ボーリアン | もしtrue による場合、高さのパディングを減らしてスペースを節約します。 |
|
拡大 | ボーリアン |
true 場合は、既定で展開済みとして表示されます。 |
詳細な例については、 Windows DNS コネクタの構成 JSON を参照してください。
インストールエージェント
一部の InstallAgent の種類はボタンとして表示され、他の種類はリンクとして表示されます。 両方の例を次に示します。
配列値 | 必須 | タイプ | 説明 |
---|---|---|---|
リンクタイプ | 正しい | ENUM | 次のいずれかの値として、リンクの種類を決定します。 InstallAgentOnWindowsVirtualMachine InstallAgentOnWindowsNonAzure InstallAgentOnLinuxVirtualMachine InstallAgentOnLinuxNonAzure OpenSyslogSettings OpenCustomLogsSettings OpenWaf OpenAzureFirewall
OpenMicrosoftAzureMonitoring
OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
policyDefinitionGuid | true OpenPolicyAssignment linkType を使用する場合。 |
糸 | ポリシー ベースのコネクタの場合は、組み込みのポリシー定義の GUID を定義します。 |
assignMode | ENUM | ポリシー ベースのコネクタの場合は、割り当てモードを次のいずれかの値として定義します: Initiative 、 Policy |
|
データ収集ルールタイプ | ENUM | DCR ベースのコネクタの場合、データ収集規則の種類を SecurityEvent または ForwardEvent として定義します。 |
データ コネクタ定義の例
次の例では、この記事で定義されているコンポーネントの一部を、Create or Update データ コネクタ定義 API で使用する JSON 本文形式としてまとめます。
connectorUiConfig
のその他の例については、他の CCF データ コネクタを確認してください。 レガシ CCF を使用するコネクタでも、UI 作成の有効な例があります。
{
"kind": "Customizable",
"properties": {
"connectorUiConfig": {
"title": "Example CCF Data Connector",
"publisher": "My Company",
"descriptionMarkdown": "This is an example of data connector",
"graphQueriesTableName": "ExampleConnectorAlerts_CL",
"graphQueries": [
{
"metricName": "Alerts received",
"legend": "My data connector alerts",
"baseQuery": "{{graphQueriesTableName}}"
},
{
"metricName": "Events received",
"legend": "My data connector events",
"baseQuery": "ASIMFileEventLogs"
}
],
"sampleQueries": [
{
"description": "All alert logs",
"query": "{{graphQueriesTableName}} \n | take 10"
}
],
"dataTypes": [
{
"name": "{{graphQueriesTableName}}",
"lastDataReceivedQuery": "{{graphQueriesTableName}} \n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)"
},
{
"name": "ASIMFileEventLogs",
"lastDataReceivedQuery": "ASIMFileEventLogs \n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)"
}
],
"connectivityCriteria": [
{
"type": "HasDataConnectors"
}
],
"permissions": {
"resourceProvider": [
{
"provider": "Microsoft.OperationalInsights/workspaces",
"permissionsDisplayText": "Read and Write permissions are required.",
"providerDisplayName": "Workspace",
"scope": "Workspace",
"requiredPermissions": {
"write": true,
"read": true,
"delete": true
}
},
],
"customs": [
{
"name": "Example Connector API Key",
"description": "The connector API key username and password is required"
}
]
},
"instructionSteps": [
{
"title": "Connect My Connector to Microsoft Sentinel",
"description": "To enable the connector provide the required information below and click on Connect.\n>",
"instructions": [
{
"type": "Textbox",
"parameters": {
"label": "User name",
"placeholder": "User name",
"type": "text",
"name": "username"
}
},
{
"type": "Textbox",
"parameters": {
"label": "Secret",
"placeholder": "Secret",
"type": "password",
"name": "password"
}
},
{
"type": "ConnectionToggleButton",
"parameters": {
"connectLabel": "toggle",
"name": "toggle"
}
}
]
}
]
}
}
}