你当前正在访问 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 配置属性

配置连接器的用户界面

本部分介绍可用于自定义数据连接器页的用户界面的配置选项。

以下屏幕截图显示了一个示例数据连接器页,其中突出显示了与用户界面的显著区域相对应的数字。

示例数据连接器页的屏幕截图,其中分区标记为 1 到 9。

配置用户界面所需的 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 设置连接器将数据插入其中的表的名称。 可以通过指定 graphQuerieslastDataReceivedQuery 值中的 {{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 将所需的许可证定义为以下值之一:OfficeIRMOfficeATPOffice365AadP1P2McasAatpMdatpMtpIoT

示例: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 AdministratorSecurity 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 种类型中的每个类型都有 labelplaceholder 以及 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}

    支持的值:workspaceIdworkspaceNameprimaryKeyMicrosoftAwsAccountsubscriptionId
    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 对于基于策略的连接器,将分配模式定义为以下值之一:InitiativePolicy
    dataCollectionRuleType ENUM 对于基于 DCR 的连接器,将数据收集规则类型的类型定义为 SecurityEventForwardEvent

    示例数据连接器定义

    以下示例将本文中定义的一些组件组合为 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"
                      }
                    }
                  ]
                }
              ]
            }
        }
    }