[非推奨]Microsoft Sentinel 用の従来のコードレス コネクタを作成する
重要
多くのアプライアンスおよびデバイスからのログ収集が、AMA 経由の Common Event Format (CEF)、AMA 経由の Syslog、または Microsoft Sentinel の AMA データ コネクタ経由のカスタム ログでサポートされるようになりました。 詳細については、「Microsoft Sentinel データ コネクタを見つける」を参照してください。
重要
新しいバージョンのコードレス コネクタ プラットフォーム (CCP) があります。 新しい CCP の詳細については、「コードレス コネクタの作成 (プレビュー)」を参照してください。
この古いレガシ バージョンの CCP に基づくデータ コネクタを保守または更新する必要がある場合、このドキュメントを参照してください。
CCP は、パートナー、上級ユーザー、開発者に、カスタム コネクタを作成して、それらを接続し、Microsoft Sentinel にデータを取り込む機能を提供します。 CCP を介して作成されたコネクタは、API、ARM テンプレートを使用してデプロイするか、Microsoft Sentinel コンテンツ ハブのソリューションとしてデプロイできます。
CCP を使用して作成されたコネクタは、完全な SaaS であり、サービスのインストールの要件がなく、Microsoft Sentinel からの稼働状況の監視と完全なサポートを含んでいます。
JSON 構成ファイルを定義し、Microsoft Sentinel のデータ コネクタ ページの外観を設定し、接続の機能を定義するポーリング設定を使用して、データ コネクタを作成します。
重要
このバージョンのコードレス コネクタ プラットフォーム (CCP) はプレビュー段階ですが、レガシとも見なされています。 Azure プレビューの追加使用条件には、ベータ版、プレビュー版、またはまだ一般提供されていない Azure 機能に適用される追加の法律条項が含まれています。
CCP コネクタを作成し、Microsoft Sentinel からデータ ソースに接続するには、次の手順に従います。
- コネクタのユーザー インターフェイスを構成する
- コネクタのポーリング設定を構成する
- Microsoft Sentinel ワークスペースにコネクタをデプロイする
- Microsoft Sentinel をデータ ソースに接続し、データの取り込みを開始する
この記事では、CCP JSON 構成で使用される構文と、API、ARM テンプレート、または Microsoft Sentinel ソリューションを使用してコネクタをデプロイする手順について説明します。
前提条件
コネクタを構築する前に、データ ソースの動作と Microsoft Sentinel の正確な接続方法を理解することをお勧めします。
たとえば、正常に接続するために必要な認証、改ページ位置の自動修正、API エンドポイントの種類を知っている必要があります。
コネクタの JSON 構成ファイルを作成する
カスタム CCP コネクタには、デプロイに必要な 2 つのプライマリ JSON セクションがあります。 これらの領域に入力して、コネクタを Azure portal に表示する方法と、Microsoft Sentinel をデータ ソースに接続する方法を定義します。
connectorUiConfig
. Microsoft Sentinel のデータ コネクタ ページに表示されるビジュアル要素とテキストを定義します。 詳細については、「コネクタのユーザー インターフェイスを構成する」を参照してくださいpollingConfig
. Microsoft Sentinel がデータ ソースからデータを収集する方法を定義します。 詳細については、「コネクタのポーリング設定を構成する」を参照してください
次に、ARM 経由でコードレス コネクタをデプロイする場合は、データ コネクタ用の ARM テンプレートでこれらのセクションをラップします。
他の CCP データ コネクタを例として確認するか、テンプレート例である DataConnector_API_CCP_template.json (プレビュー) をダウンロードします。
コネクタのユーザー インターフェイスを構成する
このセクションでは、データ コネクタ ページのユーザー インターフェイスをカスタマイズするために使用できる構成オプションについて説明します。
ユーザー インターフェイスの注目領域が数字で強調表示されているサンプルのデータ コネクタ ページを次の図に示します。
- タイトル。 表示されるデータ コネクタのタイトル。
- ロゴ。 表示されるデータ コネクタのアイコン。 これは、ソリューションの一部としてデプロイするときにのみカスタマイズできます。
- Status。 データ コネクタが Microsoft Sentinel に接続されているかどうかを示します。
- データ グラフ。 関連するクエリと、過去 2 週間に取り込まれたデータの量が表示されます。
- [手順] タブ。ユーザーがコネクタを有効にするための最小限の検証のリストと、コネクタをユーザーが有効にする方法を示す[手順]がある [前提条件] セクションが含まれています。 このセクションには、テキスト、ボタン、フォーム、テーブル、およびプロセスを簡略化するその他の一般的なウィジェットを含めることができます。
- [次のステップ] タブ。サンプル クエリなど、イベント ログ内のデータを見つける方法を理解するために役立つ情報が含まれています。
ユーザー インターフェイスを構成するために必要な connectorUiConfig
セクションと構文を次に示します。
プロパティ名 | 種類 | 説明 |
---|---|---|
availability | { "status": 1, "isPreview": ブール値} |
status: 1 コネクタが顧客に一般提供されていることを示します。 isPreview コネクタ名に (プレビュー) サフィックスを含めるかどうかを示します。 |
connectivityCriteria | { "type": SentinelKindsV2, "value": APIPolling } |
コネクタが正しく定義されているかどうかを確認する方法を定義するオブジェクト。 ここに示されている値を使用します。 |
dataTypes | dataTypes[] | コネクタのすべてのデータ型のリストと、各データ型の最後のイベントの時刻を取り込むためのクエリ。 |
descriptionMarkdown | String | マークダウン言語を追加して強化する機能があるコネクタの説明。 |
graphQueries | graphQueries[] | [データ グラフ] ウィンドウで過去 2 週間のデータ インジェスト を表示するクエリ。 すべてのデータ コネクタのデータ型に対して 1 つのクエリを指定するか、データ型ごとに異なるクエリを指定します。 |
graphQueriesTableName | String | クエリのデータのプル元の Log Analytics テーブルの名前を定義します。 テーブル名には任意の文字列を指定できますが、 _CL で終わる必要があります。 例: TableName_CL |
instructionsSteps | instructionSteps[] | [手順] タブに表示される、コネクタのインストール方法を説明するウィジェット パーツの配列。 |
metadata | metadata | コネクタの説明の下に表示されるメタデータ。 |
アクセス許可 | permissions[] | UI の [前提条件 ] セクションに表示される情報。コネクタを有効または無効にするために必要なアクセス許可が一覧表示されます。 |
publisher | String | これは、[プロバイダー] セクションに表示されるテキストです。 |
sampleQueries | sampleQueries[] | イベント ログ内のデータを検索する方法をユーザーが理解できるようにするために[次の手順] タブに表示されるサンプルクエリ。 |
title | String | データ コネクタ ページに表示されるタイトル。 |
これらのすべての部分をまとめるのは複雑です。 まとめるコンポーネントをテストするには、コネクタ ページのユーザー エクスペリエンス検証ツールを使用してください。
dataTypes
配列の値 | 種類 | 説明 |
---|---|---|
name | String | 変数のサポートを含む lastDataReceivedQuery のわかりやすい説明。 例: {{graphQueriesTableName}} |
lastDataReceivedQuery | String | データが最後に受信された日時を示す 1 つの行を返す KQL クエリ。関連するデータがない場合は、データが存在しないことを示します。 例: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time) |
graphQueries
[データ グラフ] ウィンドウで過去 2 週間のデータ インジェスト を表示するクエリを定義します。
すべてのデータ コネクタのデータ型に対して 1 つのクエリを指定するか、データ型ごとに異なるクエリを指定します。
配列の値 | 種類 | 説明 |
---|---|---|
metricName | String | グラフのわかりやすい名前。 例: Total data received |
legend | String | グラフの右側の凡例に表示される文字列 (変数参照を含む)。 例: {{graphQueriesTableName}} |
baseQuery | String | 変数参照など、関連するイベントをフィルター処理するクエリ。 例: TableName_CL | where ProviderName == "myprovider" または {{graphQueriesTableName}} |
instructionSteps
このセクションでは、Microsoft Sentinel のデータ コネクタ ページに表示される手順のセットを定義するパラメーターについて説明します。
配列のプロパティ | 種類 | 説明 |
---|---|---|
title | String | 任意。 手順のタイトルを定義します。 |
description | String | 任意。 手順のわかりやすい説明を定義します。 |
innerSteps | Array | 省略可能。 内部手順の配列を定義します。 |
instructions | 手順の配列 | 必須。 特定のパラメーター型の手順の配列を定義します。 |
bottomBorder | ブール値 | 省略可能。 true の場合は、Microsoft Sentinel のコネクタ ページの手順領域の下部の罫線を追加します。 |
isComingSoon | ブール値 | 省略可能。 true の場合、Microsoft Sentinel のコネクタ ページに [近日対応予定] のタイトルが追加されます。 |
命令
パラメーターとしてさまざまなオプションがあり、より多くの instructionSteps をグループに入れ子にする機能を持つ手順のグループを表示します。
パラメーター | 配列のプロパティ | 説明 |
---|---|---|
APIKey | APIKey | コネクタの JSON 構成ファイルにプレースホルダーを追加します。 |
CopyableLabel | CopyableLabel | 末尾にコピー ボタンがあるテキスト フィールドを表示します。 ボタンを選択すると、フィールドの値がコピーされます。 |
InfoMessage | InfoMessage | インライン情報メッセージを定義します。 |
InstructionStepsGroup | InstructionStepsGroup | 別の手順セクションに、必要に応じて展開または折りたたみ可能な手順のグループを表示します。 |
InstallAgent | InstallAgent | さまざまなインストール要件を実現する Azure の他の部分へのリンクを表示します。 |
APIKey
複数のコネクタ間で再利用できるように、プレースホルダー パラメーターを使用して JSON 構成ファイル テンプレートを作成することも、現在使用していないデータを使用するコネクタを作成することもできます。
プレースホルダー パラメーターを作成するには、次の構文を使用して、CCP JSON 構成ファイルの Instructions セクションに userRequestPlaceHoldersInput
という名前の追加の配列を定義します。
"instructions": [
{
"parameters": {
"enable": "true",
"userRequestPlaceHoldersInput": [
{
"displayText": "Organization Name",
"requestObjectKey": "apiEndpoint",
"placeHolderName": "{{placeHolder}}"
}
]
},
"type": "APIKey"
}
]
パラメーターに userRequestPlaceHoldersInput
は、次の属性が含まれています。
名前 | 種類 | 説明 |
---|---|---|
DisplayText | String | 接続したときユーザーに表示されるテキスト ボックスの表示値を定義します。 |
RequestObjectKey | String | プレースホルダーの値をユーザーが指定した値に置き換えるための pollingConfig の要求セクションの ID を定義します。 この属性を使用しない場合は、代わりに PollingKeyPaths 属性を使用してください。 |
PollingKeyPaths | String | JsonPath オブジェクトの配列を定義し、プレースホルダー値をユーザー値に置き換えるテンプレート内の任意の場所への API 呼び出しを指示します。 例: "pollingKeyPaths":["$.request.queryParameters.test1"] この属性を使用しない場合は、代わりに RequestObjectKey 属性を使用してください。 |
PlaceHolderName | String | JSON テンプレート ファイル内のプレースホルダー パラメーターの名前を定義します。 これは、{{placeHolder}} などの任意の一意の値を指定できます。 |
CopyableLabel
例:
サンプル コード:
{
"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 |
label | String | テキスト ボックスの上にあるラベルのテキストを定義します。 |
value | String | テキスト ボックスに表示する値を定義します。プレースホルダーをサポートします。 |
rows | 行 | 省略可能。 ユーザー インターフェイス領域内の行を定義します。 既定では、1 に設定されます。 |
wideLabel | ブール値 | 省略可能。 長い文字列のワイドなラベルを決定します。 既定では、false に設定されます。 |
InfoMessage
インライン情報メッセージの例を次に示します。
これに対し、次の図は、非インライン情報メッセージを示しています。
配列の値 | 種類 | 説明 |
---|---|---|
text | String | メッセージに表示するテキストを定義します。 |
visible | ブール値 | メッセージを表示するかどうかを決定します。 |
inline | ブール値 | 情報メッセージの表示方法を決定します。 - true : (推奨) 手順に埋め込まれた情報メッセージを表示します。 - false :青い背景を追加します。 |
InstructionStepsGroup
展開可能な手順グループの例を次に示します。
配列の値 | 種類 | 説明 |
---|---|---|
title | String | 手順のタイトルを定義します。 |
canCollapseAllSections | ブール値 | 省略可能。 セクションが折りたたみ可能なアコーディオンかどうかを判断します。 |
noFxPadding | ブール値 | 省略可能。 true の場合、縦方向のパディングを減らしてスペースを節約します。 |
expanded | ブール値 | 省略可能。 true の場合、既定で展開して表示されます。 |
詳細な例については、Windows DNS コネクタの構成 JSON を参照してください。
InstallAgent
InstallAgent の種類にはボタンとして表示されるものと、リンクとして表示されるものがあります。 両方の例を次に示します。
配列の値 | 種類 | 説明 |
---|---|---|
linkType | ENUM | リンクの種類を次のいずれかの値で決定します。InstallAgentOnWindowsVirtualMachine InstallAgentOnWindowsNonAzure InstallAgentOnLinuxVirtualMachine InstallAgentOnLinuxNonAzure OpenSyslogSettings OpenCustomLogsSettings OpenWaf OpenAzureFirewall OpenMicrosoftAzureMonitoring OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
policyDefinitionGuid | String | OpenPolicyAssignment linkType を使用するときは必須。 ポリシー ベースのコネクタの場合は、組み込みのポリシー定義の GUID を定義します。 |
assignMode | ENUM | 省略可能。 ポリシー ベースのコネクタの場合は、割り当てモードを次のいずれかの値で定義します。Initiative 、Policy |
dataCollectionRuleType | ENUM | 省略可能。 DCR ベースのコネクタの場合、データ収集ルールの種類を次のいずれかで定義します。SecurityEvent ForwardEvent |
metadata
このセクションは、データ コネクタ UI の [説明] 領域にメタデータを提供します。
コレクション値 | 種類 | 説明設定 |
---|---|---|
kind | String | 作成している ARM テンプレートの種類を定義します。 常に dataConnector を使用します。 |
source | String | 次の構文を使用して、データソースについて説明します。{ "kind": string"name": string} |
author | String | 次の構文を使用して、データ コネクタの作成者について説明します。{ "name": string} |
サポート | String | 次の構文を使用して、データ コネクタ用に提供されるサポートについて説明します。{ "tier": string,"name": string,"email": string,"link": URL string} |
権限
配列の値 | 種類 | 説明 |
---|---|---|
customs | String | 次の構文で、データ接続に必要なカスタム アクセス許可を説明します。{ "name": string, "description": string} 例: customs の値は、Microsoft Sentinel の [前提条件] セクションに青い情報アイコンとともに表示されます。 GitHub の例では、これは GitHub API personal token Key: You need access to GitHub personal token... という行に対応します |
ライセンス | ENUM | 次のいずれかの値で必要なライセンスを定義します。OfficeIRM 、OfficeATP 、Office365 、AadP1P2 、Mcas 、Aatp 、Mdatp 、Mtp 、IoT 。 例: ライセンスの値は、Microsoft Sentinel で次のように表示されます:ライセンス: Azure AD Premium P2 が必要です |
resourceProvider | resourceProvider | Azure リソースの前提条件について説明します。 例: resourceProvider の値は、Microsoft Sentinel の [前提条件] セクションに次のように表示されます。 ワークスペース: 読み取りおよび書き込みのアクセス許可が必要です。 キー: ワークスペースの共有キーに対する読み取りアクセス許可が必要です。 |
tenant | ENUM 値の配列 例: "tenant": [ "GlobalADmin", "SecurityAdmin" ] |
次の 1 つ以上の値で必要なアクセス許可を定義します。"GlobalAdmin" 、"SecurityAdmin" 、"SecurityReader" 、"InformationProtection" 。 例: Microsoft Sentinel で tenant の値を「テナントのアクセス許可: ワークスペースのテナントの Global Administrator または Security Administrator が必要です」と表示します |
resourceProvider
サブ配列の値 | 種類 | 説明 |
---|---|---|
プロバイダー | ENUM | 次のいずれかの値を使用して、リソース プロバイダーについて説明します。 - Microsoft.OperationalInsights/workspaces - Microsoft.OperationalInsights/solutions - Microsoft.OperationalInsights/workspaces/datasources - microsoft.aadiam/diagnosticSettings - Microsoft.OperationalInsights/workspaces/sharedKeys - Microsoft.Authorization/policyAssignments |
providerDisplayName | String | コネクタ ページで requiredPermissions が検証されたときに赤い "x" または緑色のチェックマークを表示する [前提条件] の下のリスト アイテム。 たとえば、"Workspace" です。 |
permissionsDisplayText | String | requiredPermissions で構成されている値に対応する "読み取り"、"書き込み"、または "読み取りと書き込み" アクセス許可のテキストを表示します |
requiredPermissions | { "action": Boolean, "delete": Boolean, "read": Boolean, "write": Boolean} |
コネクタに必要な最小限のアクセス許可を記述します。 |
スコープ (scope) | ENUM | 次のいずれかの値でデータ コネクタのスコープについて説明します。"Subscription" 、"ResourceGroup" 、"Workspace" |
sampleQueries
配列の値 | 種類 | 説明 |
---|---|---|
description | String | サンプル クエリのわかりやすい説明。 例: Top 10 vulnerabilities detected |
query | String | データ型のデータをフェッチするために使用されるサンプル クエリ。 例: {{graphQueriesTableName}}\n | sort by TimeGenerated\n | take 10 |
その他のリンク オプションを構成する
マークダウンを使用してインライン リンクを定義するには、次の例を使用してください。 ここでは、手順の説明にリンクを指定しています。
{
"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[![Deploy To Azure](https://aka.ms/deploytoazurebutton)]({URL to custom ARM template})"
}
データ コネクタ ページのユーザー エクスペリエンスを検証する
コネクタのユーザー エクスペリエンスをレンダリングおよび検証するには、次の手順に従います。
- テスト ユーティリティには、URL https://aka.ms/sentineldataconnectorvalidateurl からアクセスできます
- [Microsoft Sentinel] -> [データ コネクタ] に移動します
- [インポート] ボタンをクリックし、データ コネクタの
connectorUiConfig
セクションのみを含む JSON ファイルを選択します。
この検証ツールの詳細については、GitHub ビルド ガイドのコネクタをビルドする手順を参照してください。
Note
APIKey 手順パラメーターはコードレス コネクタに固有であるため、検証ツールを使用するには、このセクションを一時的に削除しないと失敗します。
コネクタのポーリング設定を構成する
このセクションでは、コードレス データ コネクタのデータ ソースからデータをポーリングする方法の構成について説明します。
次のコードは、CCP 構成ファイルの pollingConfig
セクションの構文を示しています。
"pollingConfig": {
"auth": {
},
"request": {
},
"response": {
},
"paging": {
}
}
この pollingConfig
セクションには以下のプロパティが含まれています。
名前 | 種類 | 説明 |
---|---|---|
auth | String | データをポーリングするための認証プロパティについて説明します。 詳細については、「認証の構成」をご覧ください。 |
auth.authType | String | 必須。 auth オブジェクト内で入れ子になった認証の種類を、次のいずれかの値で定義します。Basic 、APIKey 、OAuth2 |
request | 入れ子の JSON | 必須。 API エンドポイントなど、データをポーリングするための要求ペイロードについて説明します。 詳細については、「要求の構成」をご覧ください。 |
response | 入れ子の JSON | 必須。 データのポーリング時に API から返される応答オブジェクトと入れ子になったメッセージについて説明します。 詳細については、「応答の構成」をご覧ください。 |
paging | 入れ子の JSON | 省略可能。 データをポーリングする際の改ページ位置の自動修正のペイロードについて説明します。 詳細については、「ページングの構成」をご覧ください。 |
詳細については、「pollingConfig のコード サンプル」をご覧ください。
認証の構成
pollingConfig 構成の auth
セクションには、authType 要素で定義された型に応じて、次のパラメーターが含まれています。
基本的な authType パラメータ
名前 | 種類 | 説明 |
---|---|---|
ユーザー名 | String | 必須。 ユーザー名を定義します。 |
パスワード | String | 必須。 ユーザー パスワードを定義します。 |
APIKey authType パラメーター
名前 | 種類 | 説明 |
---|---|---|
APIKeyName | String | 省略可能。 次のいずれかの値で API キーの名前を定義します。 - XAuthToken - Authorization |
IsAPIKeyInPostPayload | ブール値 | API キーが定義されている場所を決定します。 True: API キーは POST 要求ペイロードで定義されます。 False: API キーはヘッダーで定義されます。 |
APIKeyIdentifier | String | 任意。 API キーの識別子の名前を定義します。 たとえば、承認が "Authorization": "token <secret>" として定義されている場合、このパラメーターは {APIKeyIdentifier: “token”}) として定義されます。 |
OAuth2 authType パラメータ
コードレス コネクタ プラットフォームでは、OAuth 2.0 承認コードの付与がサポートされています。
認証コード付与の種類は、認証コードをアクセストークンと交換するために、機密クライアントおよびパブリッククライアントによって使用されます。
ユーザーがリダイレクト URL 経由でクライアントに戻った後、アプリケーションは URL から認証コードを取得し、それを使用してアクセス トークンを要求します。
名前 | 種類 | 説明 |
---|---|---|
FlowName | String | 必須。 OAuth2 フローを定義します。 サポートされる値: AuthCode - 認可フローが必要 |
AccessToken | String | 任意。 アクセストークンの有効期限が切れない場合に関連する OAuth2 アクセストークンを定義します。 |
AccessTokenPrepend | String | 任意。 OAuth2 アクセストークンの先頭を定義します。 既定値は Bearer です。 |
RefreshToken | String | OAuth2 認証の種類には必須です。 OAuth2 更新トークンを定義します。 |
TokenEndpoint | String | OAuth2 認証の種類には必須です。 OAuth2 トークン サービス エンドポイントを定義します。 |
AuthorizationEndpoint | String | 任意。 OAuth2 承認サービス エンドポイントを定義します。 オンボーディング中または更新トークンの更新時にのみ使用されます。 |
RedirectionEndpoint | String | 任意。 オンボーディング中のリダイレクト エンドポイントを定義します。 |
AccessTokenExpirationDateTimeInUtc | String | 任意。 アクセス トークンの有効期限 datetime を UTC 形式で定義します。 アクセス トークンの有効期限が切れない場合、つまり UTC の日付時刻が大きい場合、またはアクセス トークンの有効期限が大きい日時に関連します。 |
RefreshTokenExpirationDateTimeInUtc | String | OAuth2 認証の種類には必須です。 更新トークンの有効期限を UTC 形式で定義します。 |
TokenEndpointHeaders | ディクショナリ<文字列、オブジェクト> | 省略可能。 OAuth2 トークン サービス エンドポイントを呼び出すときのヘッダーを定義します。 次のようにシリアル化された dictionary<string, string> 形式で文字列を定義します。{'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
AuthorizationEndpointHeaders | ディクショナリ<文字列、オブジェクト> | 省略可能。 OAuth2 承認サービス エンドポイントを呼び出すときのヘッダーを定義します。 オンボーディング中または更新トークンの更新時にのみ使用されます。 次のようにシリアル化された dictionary<string, object> 形式で文字列を定義します。{'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
AuthorizationEndpointQueryParameters | ディクショナリ<文字列、オブジェクト> | 省略可能。 OAuth2 承認サービス エンドポイントを呼び出すときのクエリ パラメーターを定義します。 オンボーディング中または更新トークンの更新時にのみ使用されます。 次のようにシリアル化された dictionary<string, object> 形式で文字列を定義します。{'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
TokenEndpointQueryParameters | ディクショナリ<文字列、オブジェクト> | 省略可能。 OAuth2 トークン サービス エンドポイントを呼び出すときにクエリ パラメーターを定義します。 次のようにシリアル化された dictionary<string, object> 形式で文字列を定義します。{'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
IsTokenEndpointPostPayloadJson | Boolean | 省略可能。既定値は false です。 クエリ パラメーターが JSON 形式で、要求の POST ペイロードに設定されているかどうかを判断します。 |
IsClientSecretInHeader | Boolean | 省略可能。既定値は false です。 client_id と client_secret の値を、POST ペイロードではなく基本認証スキーマで実行されるように、ヘッダーで定義するかどうかを決定します。 |
RefreshTokenLifetimeinSecAttributeName | String | 任意。 トークン エンドポイント応答からの属性名を定義し、更新トークンの有効期間を秒単位で指定します。 |
IsJwtBearerFlow | Boolean | 省略可能。既定値は false です。 JWT を使用しているかどうかを判断します。 |
JwtHeaderInJson | ディクショナリ<文字列、オブジェクト> | 省略可能。 JWT ヘッダーを JSON 形式で定義します。 次のようにシリアル化された dictionary<string, object> 形式で文字列を定義します。{'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...} |
JwtClaimsInJson | ディクショナリ<文字列、オブジェクト> | 省略可能。 JWT 要求を JSON 形式で定義します。 次のようにシリアル化された dictionary<string, object> 形式で文字列を定義します。{'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ...} |
JwtPem | String | 任意。 秘密キーを PEM Pkcs1 形式で定義します。 '-----BEGIN RSA PRIVATE KEY-----\r\n{privatekey}\r\n-----END RSA PRIVATE KEY-----\r\n' '\r\n' コードを所定の位置に保持してください。 |
RequestTimeoutInSeconds | Integer | 省略可能。 トークン サービス エンドポイントを呼び出すときのタイムアウトを秒単位で決定します。 既定値は 180 秒です |
OAuth 2 構成の例を次に示します。
"pollingConfig": {
"auth": {
"authType": "OAuth2",
"authorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent",
"redirectionEndpoint": "https://portal.azure.com/TokenAuthorize",
"tokenEndpoint": "https://oauth2.googleapis.com/token",
"authorizationEndpointQueryParameters": {},
"tokenEndpointHeaders": {
"Accept": "application/json"
},
"TokenEndpointQueryParameters": {},
"isClientSecretInHeader": false,
"scope": "https://www.googleapis.com/auth/admin.reports.audit.readonly",
"grantType": "authorization_code",
"contentType": "application/x-www-form-urlencoded",
"FlowName": "AuthCode"
},
セッション authType パラメーター
名前 | 種類 | 説明 |
---|---|---|
QueryParameters | ディクショナリ<文字列、オブジェクト> | 省略可能。 シリアル化された dictionary<string, string> 形式のクエリ パラメーターのリスト: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
IsPostPayloadJson | ブール値 | 省略可能。 クエリ パラメーターが JSON 形式であるかどうかを判断します。 |
ヘッダー | ディクショナリ<文字列、オブジェクト> | 省略可能。 エンドポイントを呼び出してセッション ID を取得したり、エンドポイント API を呼び出したりするときに使用するヘッダーを定義します。 次のようにシリアル化された dictionary<string, string> 形式で文字列を定義します。{'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
SessionTimeoutInMinutes | String | 任意。 セッションのタイムアウトを分単位で定義します。 |
SessionIdName | String | 任意。 セッションの ID 名を定義します。 |
SessionLoginRequestUri | String | 任意。 セッションのログイン要求の URI を定義します。 |
要求の構成
pollingConfig 構成の request
セクションには、次のパラメーターが含まれています。
名前 | 種類 | 説明 |
---|---|---|
apiEndpoint | String | 必須。 データのプル元のエンドポイントを定義します。 |
httpMethod | String | 必須。 API メソッド GET または POST を定義します。 |
queryTimeFormat | String、UnixTimestamp、または UnixTimestampInMills | 必須。 クエリ時間の定義に使用する形式を定義します。 この値には、文字列を指定することも、UnixTimestamp または UnixTimestampInMills 形式を使用して、UnixTimestamp のクエリの開始時間と終了時間を指定することもできます。 |
startTimeAttributeName | String | 任意。 クエリの開始時間を定義する属性の名前を定義します。 |
endTimeAttributeName | String | 任意。 クエリの終了時間を定義する属性の名前を定義します。 |
queryTimeIntervalAttributeName | String | 省略可能。 クエリの時間間隔を定義する属性の名前を定義します。 |
queryTimeIntervalDelimiter | String | 任意。 クエリの時間間隔の区切り記号を定義します。 |
queryWindowInMin | Integer | 省略可能。 使用可能なクエリ ウィンドウを分単位で定義します。 最小値: 5 |
queryParameters | ディクショナリ<文字列、オブジェクト> | 省略可能。 クエリで eventsJsonPaths パスで渡されるパラメーターを定義します。 次のようにシリアル化された dictionary<string, string> 形式で文字列を定義します。{'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
queryParametersTemplate | String | 省略可能。 高度なシナリオでクエリ パラメーターを渡すときに使用するクエリ パラメーター テンプレートを定義します。 例: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}" {_QueryWindowStartTime} と {_QueryWindowEndTime} は、queryParameters と queryParametersTemplate の要求パラメーターでのみサポートされます。 {_APIKeyName} と {_APIKey} は、queryParametersTemplate 要求パラメーターでのみサポートされます。 |
isPostPayloadJson | ブール値 | 省略可能。 ポスト ペイロードが JSON 形式であるかどうかを判断します。 |
rateLimitQPS | Double | 省略可能。 1 秒あたりに許可される呼び出しまたはクエリの数を定義します。 |
timeoutInSeconds | Integer | 省略可能。 要求のタイムアウトを秒単位で定義します。 |
retryCount | Integer | 省略可能。 必要に応じて実行する要求の再試行回数を定義します。 |
headers | ディクショナリ<文字列、オブジェクト> | 省略可能。 次のように要求ヘッダー値をシリアル化された dictionary<string, object> 形式で定義します。{'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... } |
応答の構成
pollingConfig 構成の response
セクションには、次のパラメーターが含まれています。
次のコードは、最上位レベルのメッセージの eventsJsonPaths 値の例を示しています。
"eventsJsonPaths": [
"$"
]
ページングの構成
pollingConfig 構成の paging
セクションには、次のパラメーターが含まれています。
名前 | 種類 | 説明 |
---|---|---|
pagingType | String | 必須。 結果で使用するページングの種類を次のいずれかの値で決定します。None 、LinkHeader 、NextPageToken 、NextPageUrl 、Offset |
linkHeaderTokenJsonPath | String | 任意。 LinkHeader が応答ヘッダーで定義されていない場合に、応答の JSON 内のリンク ヘッダーへの JSON パスを定義します。 |
nextPageTokenJsonPath | String | 任意。 次のページ トークン JSON へのパスを定義します。 |
hasNextFlagJsonPath | String | 任意。 HasNextPage フラグ属性へのパスを定義します。 |
nextPageTokenResponseHeader | String | 任意。 応答内の次のページ トークン ヘッダー名を定義します。 |
nextPageParaName | String | 任意。 要求の次のページ名を決定します。 |
nextPageRequestHeader | String | 任意。 要求の次のページ ヘッダー名を決定します。 |
nextPageUrl | String | 任意。 最初の要求 URL と異なる場合に、次のページの URL を決定します。 |
nextPageUrlQueryParameters | String | 任意。 最初の要求の URL と異なる場合に、次のページの URL のクエリ パラメーターを決定します。 次のようにシリアル化された dictionary<string, object> 形式で文字列を定義します。{'<attr_name>': <val>, '<attr_name>': <val>... } |
offsetParaName | String | 任意。 オフセット パラメーターの名前を定義します。 |
pageSizeParaName | String | 任意。 ページ サイズ パラメーターの名前を定義します。 |
PageSize | Integer | ページング サイズを定義します。 |
pollingConfig のコード サンプル
次のコードは、CCP 構成ファイルの pollingConfig
セクションの例を示しています。
"pollingConfig": {
"auth": {
"authType": "APIKey",
"APIKeyIdentifier": "token",
"APIKeyName": "Authorization"
},
"request": {
"apiEndpoint": "https://api.github.com/../{{placeHolder1}}/audit-log",
"rateLimitQPS": 50,
"queryWindowInMin": 15,
"httpMethod": "Get",
"queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
"retryCount": 2,
"timeoutInSeconds": 60,
"headers": {
"Accept": "application/json",
"User-Agent": "Scuba"
},
"queryParameters": {
"phrase": "created:{_QueryWindowStartTime}..{_QueryWindowEndTime}"
}
},
"paging": {
"pagingType": "LinkHeader",
"pageSizeParaName": "per_page"
},
"response": {
"eventsJsonPaths": [
"$"
]
}
}
Microsoft Sentinel にコネクタをデプロイし、データの取り込みを開始する
ユーザー インターフェイスとポーリング構成の両方を含む JSON 構成ファイルを作成した後で、Microsoft Sentinel ワークスペースにコネクタをデプロイします。
データ コネクタをデプロイするには、次のいずれかのオプションを使用します。
ヒント
Azure Resource Manager (ARM) テンプレートを使用したデプロイの利点は、いくつかの値がテンプレートに組み込まれているので、それらを API 呼び出しで手動で定義する必要がないということです。
JSON 構成コレクションを ARM テンプレートにラップして、コネクタをデプロイします。 データ コネクタが正しいワークスペースにデプロイされるようにするには、ARM テンプレートにワークスペースを定義するか、ARM テンプレートをデプロイするときにワークスペースを選択するようにしてください。
コネクタ用のARM テンプレートの JSON ファイルを準備します。 たとえば、次の ARM テンプレートの JSON ファイルを参照してください。
- Slack ソリューションのデータ コネクタ
- GitHub ソリューションのデータ コネクタ
Azure portal で、[カスタム テンプレートのデプロイ] を検索します。
[カスタム デプロイ] ページで、[エディターで独自のテンプレートを作成する]>[ファイルの読み込み] を選択します。 ローカル ARM テンプレートを参照して選択し、変更を保存します。
サブスクリプションとリソース グループを選択し、カスタム コネクタをデプロイする Log Analytics ワークスペースを入力します。
[確認と作成] を選択して、カスタム コネクタを Microsoft Sentinel にデプロイします。
Microsoft Sentinel で、[データ コネクタ] ページに移動 し、新しいコネクタを検索します。 データの取り込みを開始するように構成します。
詳細については、Azure Resource Manager ドキュメントの「ローカル テンプレートをデプロイする」を参照してください。
データ ソースを接続し、Microsoft Sentinel へのデータの取り込みを開始するようにデータ コネクタを構成します。 データ ソースには、標準のデータ コネクタと同様にポータルを介して接続するか、または API を使用して接続できます。
Azure portal を使用して接続する場合、ユーザー データが自動的に送信されます。 API を使用して接続する場合は、API 呼び出しで関連する認証パラメーターを送信する必要があります。
Microsoft Sentinel データ コネクタ ページで、指定した手順に従ってデータ コネクタに接続します。
Microsoft Sentinel のデータ コネクタ ページは、CCP JSON 構成ファイルの
connectorUiConfig
要素の InstructionSteps 構成 によって制御 されます。 ユーザー インターフェイスでの接続に問題がある場合は、認証の種類の構成が正しいことを確認してください。Microsoft Sentinel で、[ログ] ページに移動し、データ ソースからのログがワークスペースに送られていることを確認します。
Microsoft Sentinel にデータが送られていない場合は、データ ソースのドキュメントとトラブルシューティング リソースを参照し、構成の詳細および接続を確認してください。 詳しくは、データ コネクタの正常性の監視に関するページをご覧ください。
コネクタを切断する
コネクタのデータが不要になった場合は、コネクタを切断してデータ フローを停止します。
以下のいずれかの方法を使用します。
Azure portal: Microsoft Sentinel データ コネクタ ページで、[切断] を 選択します。
API: DISCONNECT API を使用して、空の本文を含む PUT 呼び出しを次の URL に送信します。
https://management.azure.com /subscriptions/{{SUB}}/resourceGroups/{{RG}}/providers/Microsoft.OperationalInsights/workspaces/{{WS-NAME}}/providers/Microsoft.SecurityInsights/dataConnectors/{{Connector_Id}}/disconnect?api-version=2021-03-01-preview
次の手順
まだ行っていない場合は、新しいコードレス データ コネクタを Microsoft Sentinel コミュニティと共有してください。 データ コネクタのソリューションを作成し、Microsoft Sentinel Marketplace で共有します。
詳細については、「