你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

无代码连接器框架的数据连接器定义参考

若要使用无代码连接器框架 (CCF) 创建数据连接器,请使用本文档作为Microsoft Sentinel REST API for Data Connector 定义参考文档的补充。具体而言,此参考文档扩展了以下部分:

  • 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 创建 CCF 数据连接器定义的请求正文具有以下结构:

{
    "kind": "Customizable",
    "properties": {
        "connectorUIConfig": {}
    }
}

dataConnectorDefinition 具有以下属性:

Name 必需 类型 说明
Kind True String Customizable用于 API 轮询数据连接器或其他Static
性能。connectorUiConfig True 嵌套 JSON
connectorUiConfig
数据连接器的 UI 配置属性

配置连接器的用户界面

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

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

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

配置用户界面所需的部分的以下每个元素 connectorUiConfig 都对应于 API 的 CustomizableConnectorUiConfig 部分。

字段 必需 类型 说明 屏幕截图值得注意的区域#
title True string 数据连接器页中显示的标题 1
id string 设置内部使用的自定义连接器 ID
logo string SVG 格式的图像文件的路径。 如果未配置任何值,则使用默认徽标。 2
出版商 True string 连接器的提供程序 3
descriptionMarkdown True markdown 中的字符串 连接器的说明,能够添加 markdown 语言来增强它。 4
sampleQueries True 嵌套 JSON
sampleQueries
让客户了解如何在事件日志中查找数据。
graphQueries True 嵌套 JSON
graphQueries
在过去两周内显示数据引入的查询。

针对所有数据连接器的数据类型提供一个查询,或者为每个数据类型提供不同的查询。
5
graphQueriesTableName 设置连接器将数据插入到的表的名称。 通过在 和 lastDataReceivedQuery 值中指定{{graphQueriesTableName}}占位符,可以在其他查询中graphQueries使用此名称。
dataTypes True 嵌套 JSON
dataTypes
连接器的所有数据类型的列表,以及用于为每个数据类型提取最后一个事件时间的查询。 6
connectivityCriteria True 嵌套 JSON
connectivityCriteria
一个 对象,该对象定义如何验证连接器是否已连接。 7
可用 性 嵌套 JSON
可用 性
定义连接器的可用性状态的 对象。
权限 True 嵌套 JSON
权限
UI 的 “先决条件 ”部分下显示的信息,其中列出了启用或禁用连接器所需的权限。 8
instructionSteps True 嵌套 JSON
指示
说明如何安装连接器的小组件部件数组,以及显示在“ 说明 ”选项卡上的可操作控件。 9
isConnectivityCriteriasMatchSome 布尔值 一个布尔值,指示在 ConnectivityCriteria 项之间是使用“OR” (某些) 还是“AND”。

connectivityCriteria

字段 必需 类型 说明
类型 True String 以下两个选项之一: HasDataConnectors – 此值最适合用于 API 轮询数据连接器,例如 CCF。 连接器被视为已连接至少一个活动连接。

isConnectedQuery – 此值最适合其他类型的数据连接器。 当提供的查询返回数据时,连接器被视为已连接。
当类型为 时为 True isConnectedQuery String 用于确定是否在特定时间段内收到数据的查询。 例如:CommonSecurityLog | where DeviceVendor == \"Vectra Networks\"\n| where DeviceProduct == \"X Series\"\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(7d)"

dataTypes

数组值 类型 说明
name String 对 的lastDataReceivedQuery有意义的说明,包括对 graphQueriesTableName 变量的支持。

例如:{{graphQueriesTableName}}
lastDataReceivedQuery String 返回一行并指示上次接收数据的时间的 KQL 查询,如果没有结果,则返回无数据。

例如:{{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)

graphQueries

定义一个查询,该查询显示过去两周的数据引入。

针对所有数据连接器的数据类型提供一个查询,或者为每个数据类型提供不同的查询。

数组值 类型 说明
metricName String 图形的有意义的名称。

例如:Total data received
传说 String 图表右侧的图例中显示的字符串,包括变量引用。

例如:{{graphQueriesTableName}}
baseQuery String 筛选相关事件的查询,包括变量引用。

示例:TableName_CL | where ProviderName == "myprovider"{{graphQueriesTableName}}

availability

字段 必需 类型 说明
status 整数 连接器的可用性状态。
可用 = 1
功能标志 = 2
即将推出 = 3
内部 = 4
isPreview 布尔值 一个布尔值,指示连接器是否处于预览模式。

permissions

数组值 类型 说明
海关 String 使用以下语法描述数据连接所需的任何自定义权限:
{
"name":字符串,
"description":string
}

示例:海关值显示在“Microsoft Sentinel先决条件”部分中,并带有蓝色信息图标。 在 GitHub 示例中,此值与 行 GitHub API 个人令牌密钥相关联:你需要访问 GitHub 个人令牌...
许可证 枚举 将所需的许可证定义为以下值之一:OfficeIRM、、OfficeATPOffice365AadP1P2McasAatpMdatp、、MtpIoT

示例:许可证值在Microsoft Sentinel显示为:许可证:必需Azure AD Premium P2
resourceProvider resourceProvider 描述Azure资源的任何先决条件。

示例:resourceProvider 值在Microsoft Sentinel先决条件部分中显示为:
工作区:需要读取和写入权限。
密钥:需要对工作区的共享密钥具有读取权限。
tenant ENUM 值的数组
示例:

"tenant": [
"GlobalADmin",
"SecurityAdmin"
]
将所需的权限定义为以下一个或多个值: "GlobalAdmin""SecurityAdmin""SecurityReader""InformationProtection"

示例:将Microsoft Sentinel中的租户值显示为:租户权限:需要Global Administrator工作区的租户或Security Administrator

重要

Microsoft 建议使用权限最少的角色。 这有助于提高组织的安全性。 全局管理员是一个权限很高的角色,应仅限于在无法使用现有角色的紧急情况下使用。

resourceProvider

子数组值 类型 说明
供应商 枚举 使用以下值之一描述资源提供程序:
- 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":布尔值,
"delete":布尔值,
"read":布尔值,
"write":布尔值
}
介绍连接器所需的最低权限。
scope 枚举 将数据连接器的范围描述为以下值之一: "Subscription""ResourceGroup""Workspace"

sampleQueries

数组值 类型 说明
description String 示例查询的有意义的说明。

例如:Top 10 vulnerabilities detected
查询 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": {}
    }
]
Array 属性 必需 类型 说明
title String 为说明定义标题。
description String 为说明定义有意义的说明。
innerSteps Array 定义内部指令步骤的数组。
指示 True 指令数组 定义特定参数类型的指令数组。

指示

显示一组指令,其中包含各种参数,并且能够在组中嵌套更多指令Steps。 此处定义的参数对应

类型 Array 属性 说明
OAuthForm OAuthForm 使用 OAuth 进行连接
Textbox Textbox 这与 ConnectionToggleButton配对。 有 4 种可用类型:
  • password
  • text
  • number
  • email
  • ConnectionToggleButton ConnectionToggleButton 根据通过占位符参数提供的连接信息触发 DCR 的部署。 支持以下参数:
  • name :强制性
  • disabled
  • isPrimary
  • connectLabel
  • disconnectLabel
  • CopyableLabel CopyableLabel 显示末尾带有复制按钮的文本字段。 选择按钮后,将复制字段的值。
    Dropdown Dropdown 显示供用户选择的选项下拉列表。
    Markdown Markdown 显示带 Markdown 格式的文本部分。
    DataConnectorsGrid DataConnectorsGrid 显示数据连接器网格。
    ContextPane ContextPane 显示上下文信息窗格。
    InfoMessage InfoMessage 定义内联信息消息。
    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 种类型中的每一种,每个类型都有 labelplaceholdername

    "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 枚举 用于填充占位符的环境变量数组。 使用逗号分隔多个占位符。 例如:{0},{1}

    支持的值: workspaceIdworkspaceName、、 primaryKeyMicrosoftAwsAccountsubscriptionId
    标签 True String 定义文本框上方标签的文本。
    value True String 定义要在文本框中显示的值,支持占位符。
    rows Rows 定义用户界面区域中的行。 默认情况下,设置为 1
    wideLabel 布尔值 确定长字符串的宽标签。 默认情况下,将 设置为 false
    {
      "parameters": {
        "label": "Select an option",
        "name": "dropdown",
        "options": [
          {
            "key": "Option 1",
            "text": "option1"
          },
          {
            "key": "Option 2",
            "text": "option2"
          }
        ],
        "placeholder": "Select an option",
        "isMultiSelect": false,
        "required": true,
        "defaultAllSelected": false
      },
      "type": "Dropdown"
    }
    
    字段 必需 类型 说明
    标签 True String 定义下拉列表上方标签的文本。
    名称 True String 定义下拉列表的唯一名称。 这在轮询配置中使用。
    options True Array 定义下拉列表的选项列表。
    占位符 String 定义下拉列表的占位符文本。
    isMultiSelect 布尔值 确定是否可以选择多个选项。 默认情况下,将 设置为 false
    required 布尔值 如果 true为 ,则需要填充下拉列表。
    defaultAllSelected 布尔值 如果 true为 ,则默认选择所有选项。
    Markdown
    {
      "parameters": {
        "content": "## This is a Markdown section\n\nYou can use **bold** text, _italic_ text, and even [links](https://www.example.com)."
      },
      "type": "Markdown"
    }
    
    DataConnectorsGrid
    {
      "type": "DataConnectorsGrid",
      "parameters": {
        "mapping": [
          {
            "columnName": "Column 1",
            "columnValue": "Value 1"
          },
          {
            "columnName": "Column 2",
            "columnValue": "Value 2"
          }
        ],
        "menuItems": [
          "MyConnector"
        ]
      }
    }
    
    
    字段 必需 类型 说明
    映射 True Array 定义网格中列的映射。
    menuItems Array 定义网格的菜单项。
    ContextPane
    {
      "type": "ContextPane",
      "parameters": {
        "isPrimary": true,
        "label": "Add Account",
        "title": "Add Account",
        "subtitle": "Add Account",
        "contextPaneType": "DataConnectorsContextPane",
        "instructionSteps": [
          {
            "instructions": [
              {
                "type": "Textbox",
                "parameters": {
                  "label": "Snowflake Account Identifier",
                  "placeholder": "Enter Snowflake Account Identifier",
                  "type": "text",
                  "name": "accountId",
                  "validations": {
                    "required": true
                  }
                }
              },
              {
                "type": "Textbox",
                "parameters": {
                  "label": "Snowflake PAT",
                  "placeholder": "Enter Snowflake PAT",
                  "type": "password",
                  "name": "apikey",
                  "validations": {
                    "required": true
                  }
                }
              }
            ]
          }
        ]
      }
    }
    
    字段 必需 类型 说明
    title True String 上下文窗格的标题。
    副标题 True String 上下文窗格的副标题。
    contextPaneType True String 上下文窗格的类型。
    instructionSteps True Array
    instructionSteps
    上下文窗格的说明步骤。
    标签 String 上下文窗格的标签。
    isPrimary 布尔值 指示这是否是主上下文窗格。
    InfoMessage

    下面是内联信息消息的示例:

    内联信息消息的屏幕截图。

    相比之下,下图显示了一条未内联的信息消息:

    非内联信息消息的屏幕截图。

    数组值 类型 说明
    text String 定义要在消息中显示的文本。
    visible 布尔值 确定是否显示消息。
    内嵌 布尔值 确定信息消息的显示方式。

    - true: (建议) 显示说明中嵌入的信息消息。
    - false:添加蓝色背景。
    InstructionStepsGroup

    下面是可展开指令组的示例:

    可展开的额外指令组的屏幕截图。

    数组值 必需 类型 说明
    title True String 定义指令步骤的标题。
    description String 可选的描述性文本。
    canCollapseAllSections 布尔值 确定节是否为可折叠的可折叠的可折叠项。
    noFxPadding 布尔值 如果 true为 ,则减少高度填充以节省空间。
    扩大 布尔值 如果 true为 ,则默认显示为展开。

    有关详细示例,请参阅 Windows DNS 连接器的配置 JSON。

    InstallAgent

    某些 InstallAgent 类型显示为按钮,其他类型显示为链接。 下面是两者的示例:

    添加为按钮的链接的屏幕截图。

    添加为内联文本的链接的屏幕截图。

    数组值 必需 类型 说明
    linkType True 枚举 确定链接类型,作为以下值之一:

    InstallAgentOnWindowsVirtualMachine
    InstallAgentOnWindowsNonAzure
    InstallAgentOnLinuxVirtualMachine
    InstallAgentOnLinuxNonAzure
    OpenSyslogSettings
    OpenCustomLogsSettings
    OpenWaf
    OpenAzureFirewall OpenMicrosoftAzureMonitoring
    OpenFrontDoors
    OpenCdnProfile
    AutomaticDeploymentCEF
    OpenAzureInformationProtection
    OpenAzureActivityLog
    OpenIotPricingModel
    OpenPolicyAssignment
    OpenAllAssignmentsBlade
    OpenCreateDataCollectionRule
    policyDefinitionGuid 使用 OpenPolicyAssignment linkType 时为 True。 String 对于基于策略的连接器,定义内置策略定义的 GUID。
    assignMode 枚举 对于基于策略的连接器,将分配模式定义为以下值之一: InitiativePolicy
    dataCollectionRuleType 枚举 对于基于 DCR 的连接器,将数据收集规则类型的类型定义为 SecurityEvent、 或 ForwardEvent

    示例数据连接器定义

    以下示例将本文中定义为 JSON 正文格式的一些组件汇集在一起,用于创建或更新数据连接器定义 API。

    有关其他 CCF 数据连接器connectorUiConfig更多示例。 即使是使用旧 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"
                      }
                    }
                  ]
                }
              ]
            }
        }
    }