你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
无代码连接器平台的数据连接器定义参考
要使用无代码连接器平台 (CCP) 创建数据连接器,请使用本文档作为适用于数据连接的 Microsoft Sentinel REST API 定义参考文档的补充。具体来说,此参考文档将展开以下部分:
connectorUiConfig
- 定义 Microsoft Sentinel 中数据连接器页上显示的视觉元素和文本。
有关详细信息,请参阅创建无代码连接器。
数据连接器定义 - 创建或更新
请参考 REST 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 版本的详细信息,请参阅数据连接器定义 - 创建或更新 URI 参数
名称 | 描述 |
---|---|
dataConnectorDefinitionName | 数据连接器定义必须是唯一的名称,并且与请求正文中的 name 参数相同。 |
resourceGroupName | 资源组的名称,不区分大小写。 |
subscriptionId | 目标订阅的 ID。 |
workspaceName | 工作区的名称,而不是 ID。 正则表达式模式: ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$ |
api-version | 要用于此操作的 API 版本。 |
请求正文
使用 API 创建 CCP 数据连接器定义的请求正文具有以下结构:
{
"kind": "Customizable",
"properties": {
"connectorUIConfig": {}
}
}
dataConnectorDefinition 具有以下属性:
名称 | 必需 | 类型 | 说明 |
---|---|---|---|
Kind | True | 字符串 | 对于 API 轮询数据连接器,为 Customizable ,否则为 Static |
properties.connectorUiConfig | True | 嵌套的 JSON connectorUiConfig |
数据连接器的 UI 配置属性 |
配置连接器的用户界面
本部分介绍可用于自定义数据连接器页的用户界面的配置选项。
以下屏幕截图显示了一个示例数据连接器页,其中突出显示了与用户界面的显著区域相对应的数字。
配置用户界面所需的 connectorUiConfig
部分中以下每个元素对应于 API 的 CustomizableConnectorUiConfig 部分。
字段 | 必须 | 类型 | 描述 | 屏幕截图显著区域 # |
---|---|---|---|---|
title | True | string | 数据连接器页中显示的标题 | 1 |
id | string | 设置内部使用的自定义连接器 ID | ||
徽标 | string | 采用 SVG 格式的图像文件的路径。 如果未配置任何值,则使用默认徽标。 | 2 | |
publisher | True | string | 连接器的提供程序 | 3 |
descriptionMarkdown | True | markdown 中的字符串 | 连接器的说明,能够添加 Markdown 语言来增强它。 | 4 |
sampleQueries | True | 嵌套的 JSON sampleQueries |
用于了解如何在事件日志中查找数据的客户查询。 | |
graphQueries | True | 嵌套的 JSON graphQueries |
呈现过去两周内数据引入的查询。 针对所有数据连接器的数据类型提供一个查询,或针对每种数据类型提供不同的查询。 |
5 |
graphQueriesTableName | 设置连接器将数据插入其中的表的名称。 可以通过指定 graphQueries 和 lastDataReceivedQuery 值中的 {{graphQueriesTableName}} 占位符在其他查询中使用此名称。 |
|||
dataTypes | True | 嵌套的 JSON dataTypes |
连接器的所有数据类型的列表,以及用于提取每种数据类型的最后一个事件的时间的查询。 | 6 |
connectivityCriteria | True | 嵌套的 JSON connectivityCriteria |
定义如何验证连接器是否已连接的对象。 | 7 |
权限 | True | 嵌套的 JSON 权限 |
UI 的“先决条件”部分下显示的信息,其中列出了启用或禁用连接器所需的权限。 | 8 |
instructionSteps | True | 嵌套的 JSON instructions |
介绍如何安装连接器的一组小组件部件,以及“说明”选项卡上显示的可操作控件。 | 9 |
connectivityCriteria
字段 | 必须 | 类型 | 说明 |
---|---|---|---|
类型 | True | 字符串 | 以下两个选项之一: HasDataConnectors 此值最适合 API 轮询数据连接器,例如 CCP。 连接器被视为已至少连接了一个活动连接。isConnectedQuery – 此值最适合其他类型的数据连接器。 当提供的查询返回数据时,连接器被视为已连接。 |
值 | 当类型为 isConnectedQuery 时为 True |
字符串 | 一个查询,用于确定是否在特定时间段内收到数据。 例如:CommonSecurityLog | where DeviceVendor == \"Vectra Networks\"\n| where DeviceProduct == \"X Series\"\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(7d)" |
dataTypes
数组值 | 类型 | 说明 |
---|---|---|
name | 字符串 | lastDataReceivedQuery 的有意义说明,包括对 graphQueriesTableName 变量的支持。 示例: {{graphQueriesTableName}} |
lastDataReceivedQuery | 字符串 | 返回一行的 KQL 查询,指示上次收到数据的时间,如果没有结果,则不显示任何数据。 示例: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time) |
graphQueries
定义显示过去两周数据引入的查询。
针对所有数据连接器的数据类型提供一个查询,或针对每种数据类型提供不同的查询。
数组值 | 类型 | 说明 |
---|---|---|
metricName | String | 图形的有意义名称。 示例: Total data received |
legend | 字符串 | 图表右侧的图例中显示的字符串,包括变量引用。 示例: {{graphQueriesTableName}} |
baseQuery | String | 用于筛选相关事件的查询,包括变量引用。 示例: TableName_CL | where ProviderName == "myprovider" 或 {{graphQueriesTableName}} |
权限
数组值 | 类型 | 说明 |
---|---|---|
customs | 字符串 | 使用以下语法描述数据连接所需的任何自定义权限:{ "name": 字符串, "description": 字符串} 示例:自定义值显示在 Microsoft Sentinel 先决条件部分中,带有蓝色信息图标。 在 GitHub 示例中,此值与行 GitHub API 个人令牌密钥:需要访问 GitHub 个人令牌... 相关联 |
许可证 | ENUM | 将所需的许可证定义为以下值之一:OfficeIRM 、OfficeATP 、Office365 、AadP1P2 、Mcas 、Aatp 、Mdatp 、Mtp 、IoT 示例:licenses 值在 Microsoft Sentinel 中显示为:“许可证: 需要 Azure AD Premium P2” |
resourceProvider | resourceProvider | 描述 Azure 资源的任何先决条件。 示例:resourceProvider 值在 Microsoft Sentinel 先决条件部分中显示为: 工作区:需要读取和写入权限。 “密钥: 需要对工作区共享密钥的读取权限”。 |
tenant | ENUM 值的数组 例如: "tenant": [ "GlobalADmin", "SecurityAdmin" ] |
将所需权限定义为以下一个或多个值:"GlobalAdmin" 、"SecurityAdmin" 、"SecurityReader" 、"InformationProtection" 示例:在 Microsoft Sentinel 中将 tenant 值显示为:租户权限:在工作区的租户上需要 Global Administrator 或 Security Administrator |
重要
Microsoft 建议使用权限最少的角色。 这有助于提高组织的安全性。 全局管理员是一个高度特权的角色,应仅限于无法使用现有角色的紧急情况。
resourceProvider
子数组值 | 类型 | 说明 |
---|---|---|
提供程序 | 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" |
permissionsDisplayText | String | 显示“读取”、“写入”或“读取和写入”权限的文本,这些权限应与 requiredPermissions 中配置的值相对应 |
requiredPermissions | { "action": 布尔值, "delete": 布尔值, "read": 布尔值, "write": 布尔} |
描述连接器所需的最低权限。 |
作用域 | ENUM | 将数据连接器的范围描述为下列值之一:"Subscription" 、"ResourceGroup" 、"Workspace" |
sampleQueries
数组值 | 类型 | 说明 |
---|---|---|
description | String | 示例查询的有意义说明。 示例: Top 10 vulnerabilities detected |
query | String | 用于提取数据类型的数据的示例查询。 示例: {{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[![Deploy To Azure](https://aka.ms/deploytoazurebutton)]({URL to custom ARM template})"
}
instructionSteps
本部分提供的参数用于定义 Microsoft Sentinel 中数据连接器页上显示的指令集,并具有以下结构:
"instructionSteps": [
{
"title": "",
"description": "",
"instructions": [
{
"type": "",
"parameters": {}
}
],
"innerSteps": {}
}
]
数组属性 | 必须 | 类型 | 说明 |
---|---|---|---|
title | 字符串 | 定义说明的标题。 | |
description | 字符串 | 为说明定义有意义的描述。 | |
innerSteps | 数组 | 定义一系列内部说明步骤。 | |
instructions | True | 指令数组 | 定义特定参数类型的指令数组。 |
instructions
显示一组指令,其中包含各种参数,并能够在组中嵌套更多 instructionSteps。 此处定义的参数对应
类型 | 数组属性 | 说明 |
---|---|---|
OAuthForm | OAuthForm | 使用 Oauth 连接 |
文本框 | 文本框 | 这会与 ConnectionToggleButton 配对。 有 4 种可用类型:password text number email |
ConnectionToggleButton | ConnectionToggleButton | 根据通过占位符参数提供的连接信息触发 DCR 的部署。 支持以下参数:name :必需disabled isPrimary connectLabel disconnectLabel |
CopyableLabel | CopyableLabel | 显示一个文本字段,末尾有一个复制按钮。 选择按钮后,将复制字段的值。 |
InfoMessage | InfoMessage | 定义内联信息消息。 |
InstructionStepsGroup | InstructionStepsGroup | 在单独的指令部分中显示一组指令,可以选择展开或折叠。 |
InstallAgent | InstallAgent | 显示指向 Azure 的其他部分的链接,用于满足各种安装要求。 |
OAuthForm
此组件要求 数据连接器模板的 auth
属性中存在该 OAuth2
类型。
"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"
}
}
]
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 | True | 字符串 | 定义文本框上方的标签文本。 |
value | True | 字符串 | 定义要在文本框中呈现的值,支持占位符。 |
rows | “行” | 定义用户界面区域中的行。 默认设置为 1。 | |
wideLabel | 布尔 | 确定长字符串的宽标签。 默认设置为 false 。 |
InfoMessage
下面是内联信息消息的示例:
相比之下,下图显示了非内联信息消息:
数组值 | 类型 | 说明 |
---|---|---|
text | String | 定义要在消息中显示的文本。 |
visible | 布尔 | 确定是否显示消息。 |
inline | 布尔 | 确定信息消息的显示方式。 - true :(建议)显示嵌入在说明中的信息消息。 - false :添加蓝色背景。 |
InstructionStepsGroup
下面是可展开的指令组的示例:
数组值 | 必须 | 类型 | 说明 |
---|---|---|---|
title | True | 字符串 | 定义说明步骤的标题。 |
说明 | 字符串 | 可选描述性文本。 | |
canCollapseAllSections | 布尔 | 确定该部分是否为可折叠的收缩/展开结构。 | |
noFxPadding | 布尔 | 如果为 true ,则减少高度填充以节省空间。 |
|
expanded | 布尔 | 如果 true ,则默认显示为展开。 |
有关详细示例,请参阅 Windows DNS 连接器的配置 JSON。
InstallAgent
某些 InstallAgent 类型显示为按钮,其他类型则显示为链接。 以下是这两者的示例:
数组值 | 必须 | 类型 | 说明 |
---|---|---|---|
linkType | True | ENUM | 确定链接类型,使用以下值之一:InstallAgentOnWindowsVirtualMachine InstallAgentOnWindowsNonAzure InstallAgentOnLinuxVirtualMachine InstallAgentOnLinuxNonAzure OpenSyslogSettings OpenCustomLogsSettings OpenWaf OpenAzureFirewall OpenMicrosoftAzureMonitoring OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
policyDefinitionGuid | 使用 OpenPolicyAssignment linkType 时为 true。 |
字符串 | 对于基于策略的连接器,定义内置策略定义的 GUID。 |
assignMode | ENUM | 对于基于策略的连接器,将分配模式定义为以下值之一:Initiative 、Policy |
|
dataCollectionRuleType | ENUM | 对于基于 DCR 的连接器,将数据收集规则类型的类型定义为 SecurityEvent 或 ForwardEvent 。 |
示例数据连接器定义
以下示例将本文中定义的一些组件组合为 JSON 正文格式,以用于创建或更新数据连接器定义 API。
有关 connectorUiConfig
的更多示例,请查看其他 CCP 数据连接器示例。 即使是使用旧式 CCP 的连接器也具有 UI 创建的有效示例。
{
"kind": "Customizable",
"properties": {
"connectorUiConfig": {
"title": "Example CCP 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"
}
}
]
}
]
}
}
}