[已弃用]为 Microsoft Sentinel 创建旧版无代码连接器
重要
现在,Microsoft Sentinel 中的“通过 AMA 的通用事件格式 (CEF)”、“通过 AMA 的 Syslog”或“通过 AMA 的自定义日志”数据连接器支持从许多设备收集日志。 如需详细信息,请参阅查找 Microsoft Sentinel 数据连接器。
重要
有更新版本的无代码连接器平台 (CCP)。 有关新版 CCP 的详细信息,请参阅创建无代码连接器(预览)。
如果需要维护或更新基于此更旧的旧版 CCP 的数据连接器,请参阅本文档。
合作伙伴、高级用户和开发人员可以使用 CCP 创建自定义连接器、连接这些连接器并将数据引入 Microsoft Sentinel。 可以使用 API、ARM 模板部署通过 CCP 创建的连接器,或者可以在 Microsoft Sentinel 内容中心将这些连接器部署为解决方案。
使用 CCP 创建的连接器完全是 SaaS,对服务安装没有任何要求,还包括运行状况监视和 Microsoft Sentinel 的全面支持。
创建数据连接器,方法是定义 JSON 配置,设置数据连接器页面在 Microsoft Sentinel 中的外观,并设置用于定义连接的运作方式的轮询。
重要
此版本的无代码连接器平台 (CCP) 现为预览版,但也被视为旧版。 Azure 预览版补充条款包含适用于 beta 版、预览版或其他尚未正式发布的 Azure 功能的其他法律条款。
使用以下步骤创建 CCP 连接器并从 Microsoft Sentinel 连接到数据源:
- 配置连接器的用户界面
- 配置连接器的轮询设置
- 将连接器部署到 Microsoft Sentinel 工作区
- 将 Microsoft Sentinel 连接到数据源并开始引入数据
本文介绍 CCP JSON 配置中使用的语法,以及通过 API、ARM 模板或 Microsoft Sentinel 解决方案部署连接器的过程。
先决条件
在生成连接器之前,我们建议了解数据源的行为方式以及 Microsoft Sentinel 的确切连接方式。
例如,了解需要提供哪些类型的身份验证、分页和 API 终结点才能确保连接成功。
创建连接器 JSON 配置文件
自定义 CCP 连接器具有部署所需的两个主要 JSON 部分。 填写这些区域,以定义连接器在 Azure 门户中的显示方式,以及它如何将 Microsoft Sentinel 连接到你的数据源。
connectorUiConfig
。 定义在 Microsoft Sentinel 中的数据连接器页上显示的视觉元素和文本。 有关详细信息,请参阅配置连接器的用户界面。pollingConfig
。 定义 Microsoft Sentinel 如何从数据源收集数据。 有关详细信息,请参阅配置连接器的轮询设置。
然后,如果你通过 ARM 部署无代码连接器,则将这些部分包装在数据连接器的 ARM 模板中。
查看其他 CCP 数据连接器作为示例,或下载示例模板 DataConnector_API_CCP_template.json(预览版)。
配置连接器的用户界面
本部分介绍可用于自定义数据连接器页的用户界面的配置选项。
下图显示了示例数据连接器页,其中突出显示了与用户界面的显著区域对应的编号:
- 标题。 为数据连接器显示的标题。
- 徽标。 为数据连接器显示的图标。 仅当作为解决方案的一部分进行部署时,才能自定义此项。
- Status。 指示你的数据连接器是否连接到 Microsoft Sentinel。
- 数据图表。 显示过去两周内的相关查询和引入数据量。
- “说明”选项卡。包括一个“先决条件”部分,其中列出了在用户可以启用连接器之前最起码需要通过的验证;另外还包含一个“说明”部分,用于指导用户启用连接器。 此部分可能包含文本、按钮、表单、表和其他常用小组件以简化过程。
- “后续步骤”选项卡。包含用于了解如何在事件日志中查找数据的有用信息,例如示例查询。
下面是配置用户界面所需的 connectorUiConfig
部分和语法:
属性名称 | 类型 | 说明 |
---|---|---|
availability | { "status": 1, "isPreview": 布尔} |
状态:1 表示连接器已向客户推出正式版。 isPreview 表示是否在连接器名称中包含“(预览版)”后缀。 |
connectivityCriteria | { "type": SentinelKindsV2, "value": APIPolling } |
一个对象,用于定义如何验证是否已正确定义连接器。 使用此处指示的值。 |
dataTypes | dataTypes[] | 连接器的所有数据类型的列表,以及用于提取每种数据类型的最后一个事件的时间的查询。 |
descriptionMarkdown | 字符串 | 连接器的说明,能够添加 Markdown 语言来增强它。 |
graphQueries | graphQueries[] | 用于在“数据图表”窗格中呈现过去两周引入数据量的查询。 针对所有数据连接器的数据类型提供一个查询,或针对每种数据类型提供不同的查询。 |
graphQueriesTableName | 字符串 | 定义要从中拉取查询数据的 Log Analytics 表的名称。 表名称可以是任意字符串,但必须以 _CL 结尾。 例如:TableName_CL |
instructionsSteps | instructionSteps[] | 用于解释如何安装连接器的一系列小组件,将显示在“说明”选项卡上。 |
metadata | metadata | 连接器说明下显示的元数据。 |
权限 | permissions[] | UI 的“先决条件”部分下显示的信息,其中列出了启用或禁用连接器所需的权限。 |
publisher | 字符串 | 这是“提供程序”部分中显示的文本。 |
sampleQueries | sampleQueries[] | 帮助客户了解如何在事件日志中查找数据的示例查询,这些查询将显示在“后续步骤”选项卡中。 |
title | 字符串 | 在数据连接器页中显示的标题。 |
将所有这些部分放在一起是复杂的。 使用连接器页用户体验验证工具测试组合在一起的组件。
dataTypes
数组值 | 类型 | 说明 |
---|---|---|
name | 字符串 | lastDataReceivedQuery 的有意义说明,包括对变量的支持。 示例: {{graphQueriesTableName}} |
lastDataReceivedQuery | String | 返回一个行的 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}} |
instructionSteps
本部分提供用于定义一组说明的参数,这些说明将显示在 Microsoft Sentinel 中的数据连接器页上。
数组属性 | 类型 | 说明 |
---|---|---|
title | 字符串 | 可选。 定义说明的标题。 |
description | 字符串 | 可选。 为说明定义有意义的描述。 |
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
参数包含以下属性:
名称 | Type | 说明 |
---|---|---|
DisplayText | 字符串 | 定义文本框显示值,在连接时将向用户显示该值。 |
RequestObjectKey | 字符串 | 定义 pollingConfig 的请求部分中的 ID,以将占位符值替代为用户提供的值。 如果不使用此属性,请改用 PollingKeyPaths 属性。 |
PollingKeyPaths | 字符串 | 定义 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 | 字符串 | 定义要在文本框中呈现的值,支持占位符。 |
rows | “行” | 可选。 定义用户界面区域中的行。 默认设置为 1。 |
wideLabel | 布尔 | 可选。 确定长字符串的宽标签。 默认设置为 false 。 |
InfoMessage
下面是内联信息消息的示例:
相反,下图显示了一条非内联信息消息:
数组值 | 类型 | 说明 |
---|---|---|
text | String | 定义要在消息中显示的文本。 |
visible | 布尔 | 确定是否显示消息。 |
inline | 布尔 | 确定信息消息的显示方式。 - true :(建议)显示嵌入在说明中的信息消息。 - false :添加蓝色背景。 |
InstructionStepsGroup
下面是可展开的指令组的示例:
数组值 | 类型 | 说明 |
---|---|---|
title | 字符串 | 定义说明步骤的标题。 |
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 | 字符串 | 使用 OpenPolicyAssignment linkType 时是必需的。 对于基于策略的连接器,定义内置策略定义的 GUID。 |
assignMode | ENUM | 可选。 对于基于策略的连接器,将分配模式定义为以下值之一:Initiative 、Policy |
dataCollectionRuleType | ENUM | 可选。 对于基于 DCR 的连接器,将数据收集规则类型定义为以下值之一:SecurityEvent 、ForwardEvent |
metadata
本部分在“描述”区域下的数据连接器 UI 中提供元数据。
集合值 | 类型 | 说明 |
---|---|---|
kind | String | 定义要创建的 ARM 模板的类型。 请始终使用 dataConnector 。 |
source | 字符串 | 使用以下语法描述数据源:{ "kind": 字符串"name": 字符串} |
author | 字符串 | 使用以下语法描述数据连接器创建者:{ "name": 字符串} |
support | 字符串 | 使用以下语法描述为数据连接器提供的支持:{ "tier": 字符串,"name": 字符串,"email": 字符串,"link": URL 字符串} |
权限
数组值 | 类型 | 说明 |
---|---|---|
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 |
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})"
}
验证数据连接器页用户体验
按照以下步骤呈现和验证连接器用户体验。
- 可以通过此 URL 访问测试实用工具 - https://aka.ms/sentineldataconnectorvalidateurl
- 转到 Microsoft Sentinel -> 数据连接器
- 单击“导入”按钮并选择仅包含数据连接器的
connectorUiConfig
部分的 json 文件。
有关此验证工具的详细信息,请参阅 GitHub 生成指南中的生成连接器说明。
注意
由于 APIKey 指令参数特定于无代码连接器,因此请暂时删除此部分以使用验证工具,否则它将失败。
配置连接器的轮询设置
本部分介绍如何完成从数据源轮询无代码数据连接器的数据的配置。
以下代码演示了 CCP 配置文件的 pollingConfig
部分的语法。
"pollingConfig": {
"auth": {
},
"request": {
},
"response": {
},
"paging": {
}
}
pollingConfig
部分包含以下属性:
名称 | Type | 说明 |
---|---|---|
auth | String | 描述用于轮询数据的身份验证属性。 有关详细信息,请参阅身份验证配置。 |
auth.authType | String | 必需。 将嵌套在 auth 对象中的身份验证类型定义为以下值之一:Basic 、APIKey 、OAuth2 |
请求 | 嵌套的 JSON | 必需。 描述用于轮询数据的请求有效负载,例如 API 终结点。 有关详细信息,请参阅请求配置。 |
response | 嵌套的 JSON | 必需。 描述在轮询数据时从 API 返回的响应对象和嵌套消息。 有关详细信息,请参阅响应配置。 |
paging | 嵌套的 JSON | 可选。 描述轮询数据时的分页有效负载。 有关详细信息,请参阅分页配置。 |
有关详细信息,请参阅示例 pollingConfig 代码。
身份验证配置
pollingConfig 配置的 auth
部分包含以下参数,具体取决于 authType 元素中定义的类型:
基本 authType 参数
名称 | Type | 说明 |
---|---|---|
用户名 | 字符串 | 必需。 定义用户名。 |
密码 | 字符串 | 必需。 定义用户密码。 |
APIKey authType 参数
名称 | Type | 说明 |
---|---|---|
APIKeyName | 字符串 | 可选。 将 API 密钥的名称定义为以下值之一: - XAuthToken - Authorization |
IsAPIKeyInPostPayload | 布尔 | 确定 API 密钥的定义位置。 True:在 POST 请求有效负载中定义 API 密钥 False:在标头中定义 API 密钥 |
APIKeyIdentifier | 字符串 | 可选。 定义 API 密钥的标识符名称。 例如,如果授权定义为 "Authorization": "token <secret>" ,则此参数定义为:{APIKeyIdentifier: “token”}) |
OAuth2 authType 参数
无代码连接器平台支持 OAuth 2.0 授权代码授予。
机密客户端和公共客户端使用授权代码授权类型将授权代码兑换为访问令牌。
用户通过重定向 URL 返回到客户端后,应用程序将从 URL 中获取授权代码,并使用它来请求访问令牌。
名称 | Type | 说明 |
---|---|---|
FlowName | 字符串 | 必需。 定义 OAuth2 流。 支持的值: AuthCode - 需要授权流 |
AccessToken | 字符串 | 可选。 定义 OAuth2 访问令牌,当访问令牌未过期时相关。 |
AccessTokenPrepend | 字符串 | 可选。 定义 OAuth2 访问令牌前置。 默认值为 Bearer 。 |
RefreshToken | 字符串 | 对于 OAuth2 授权类型是必需的。 定义 OAuth2 刷新令牌。 |
TokenEndpoint | 字符串 | 对于 OAuth2 授权类型是必需的。 定义 OAuth2 令牌服务终结点。 |
AuthorizationEndpoint | 字符串 | 可选。 定义 OAuth2 授权服务终结点。 仅在加入期间或续订刷新令牌时使用。 |
RedirectionEndpoint | 字符串 | 可选。 在加入期间定义重定向终结点。 |
AccessTokenExpirationDateTimeInUtc | 字符串 | 可选。 以 UTC 格式定义访问令牌过期日期/时间。 当访问令牌未过期,因此具有较大的日期/时间 (UTC) 时,或访问令牌具有较大的过期日期/时间时相关。 |
RefreshTokenExpirationDateTimeInUtc | 字符串 | 对于 OAuth2 授权类型是必需的。 以 UTC 格式定义刷新令牌过期日期/时间。 |
TokenEndpointHeaders | Dictionary<string, object> | 可选。 在调用 OAuth2 令牌服务终结点时定义标头。 定义采用序列化 dictionary<string, string> 格式的字符串:{'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
AuthorizationEndpointHeaders | Dictionary<string, object> | 可选。 在调用 OAuth2 授权服务终结点时定义标头。 仅在加入期间或续订刷新令牌时使用。 定义采用序列化 dictionary<string, object> 格式的字符串:{'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
AuthorizationEndpointQueryParameters | Dictionary<string, object> | 可选。 在调用 OAuth2 授权服务终结点时定义查询参数。 仅在加入期间或续订刷新令牌时使用。 定义采用序列化 dictionary<string, object> 格式的字符串:{'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
TokenEndpointQueryParameters | Dictionary<string, object> | 可选。 在调用 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 | 字符串 | 可选。 定义令牌终结点响应中的属性名称,并指定刷新令牌的生存期(以秒为单位)。 |
IsJwtBearerFlow | Boolean | 可选,默认值为 false。 确定是否正在使用 JWT。 |
JwtHeaderInJson | Dictionary<string, object> | 可选。 以 JSON 格式定义 JWT 标头。 定义采用序列化 dictionary<string, object> 格式的字符串:{'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...} |
JwtClaimsInJson | Dictionary<string, object> | 可选。 以 JSON 格式定义 JWT 声明。 定义采用序列化 dictionary<string, object> 格式的字符串:{'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ...} |
JwtPem | 字符串 | 可选。 以 PEM Pkcs1 格式定义机密密钥:'-----BEGIN RSA PRIVATE KEY-----\r\n{privatekey}\r\n-----END RSA PRIVATE KEY-----\r\n' 请确保将 '\r\n' 代码保留在原位。 |
RequestTimeoutInSeconds | 整数 | 可选。 确定在调用令牌服务终结点时的超时(以秒为单位)。 默认值为 180 秒 |
下面是 OAuth2 配置的示例:
"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 参数
名称 | Type | 说明 |
---|---|---|
QueryParameters | Dictionary<string, object> | 可选。 查询参数的列表,采用序列化的 dictionary<string, string> 格式:{'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
IsPostPayloadJson | 布尔 | 可选。 确定查询参数是否采用 JSON 格式。 |
标头 | Dictionary<string, object> | 可选。 定义调用终结点以获取会话 ID 时以及调用终结点 API 时使用的标头。 定义采用序列化 dictionary<string, string> 格式的字符串:{'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
SessionTimeoutInMinutes | 字符串 | 可选。 定义会话超时,以分钟为单位。 |
SessionIdName | 字符串 | 可选。 定义会话的 ID 名称。 |
SessionLoginRequestUri | 字符串 | 可选。 定义会话登录请求 URI。 |
请求配置
pollingConfig 配置的 request
部分包含以下参数:
名称 | Type | 说明 |
---|---|---|
apiEndpoint | String | 必需。 定义要从中拉取数据的终结点。 |
httpMethod | String | 必需。 定义 API 方法:GET 或 POST |
queryTimeFormat | 字符串,或采用 UnixTimestamp 或 UnixTimestampInMills 格式 | 必需。 定义用于定义查询时间的格式。 此值可以是字符串,也可以采用 UnixTimestamp 或 UnixTimestampInMills 格式,以便以 UnixTimestamp 指示查询开始和结束时间。 |
startTimeAttributeName | 字符串 | 可选。 定义用于定义查询开始时间的属性的名称。 |
endTimeAttributeName | 字符串 | 可选。 定义用于定义查询结束时间的属性的名称。 |
queryTimeIntervalAttributeName | 字符串 | 可选。 定义用于定义查询时间间隔的属性的名称。 |
queryTimeIntervalDelimiter | 字符串 | 可选。 定义查询时间间隔分隔符。 |
queryWindowInMin | 整数 | 可选。 定义可用的查询期限,以分钟为单位。 最小值: 5 |
queryParameters | Dictionary<string, object> | 可选。 定义在 eventsJsonPaths 路径中传入查询的参数。 定义采用序列化 dictionary<string, string> 格式的字符串:{'<attr_name>': '<val>', '<attr_name>': '<val>'... } 。 |
queryParametersTemplate | 字符串 | 可选。 定义在高级方案中传递查询参数时要使用的查询参数模板。 例如: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}" {_QueryWindowStartTime} 和 {_QueryWindowEndTime} 仅在 queryParameters 和 queryParametersTemplate 请求参数中受支持。 {_APIKeyName} 和 {_APIKey} 仅在 queryParametersTemplate 请求参数中受支持。 |
isPostPayloadJson | 布尔 | 可选。 确定 POST 有效负载是否采用 JSON 格式。 |
rateLimitQPS | Double | 可选。 定义一秒钟内允许的调用或查询次数。 |
timeoutInSeconds | 整数 | 可选。 定义请求超时,以秒为单位。 |
retryCount | 整数 | 可选。 定义按需重试请求次数。 |
headers | Dictionary<string, object> | 可选。 定义请求标头值,采用序列化的 dictionary<string, object> 格式:{'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... } |
响应配置
pollingConfig 配置的 response
部分包含以下参数:
以下代码演示了顶级消息的 eventsJsonPaths 值示例:
"eventsJsonPaths": [
"$"
]
分页配置
pollingConfig 配置的 paging
部分包含以下参数:
名称 | Type | 说明 |
---|---|---|
pagingType | 字符串 | 必需。 确定要在结果中使用的分页类型,使用以下值之一:None 、LinkHeader 、NextPageToken 、NextPageUrl 、Offset |
linkHeaderTokenJsonPath | 字符串 | 可选。 如果未在响应标头中定义 LinkHeader ,则定义响应 JSON 中链接标头的 JSON 路径。 |
nextPageTokenJsonPath | 字符串 | 可选。 定义下一页标记 JSON 的路径。 |
hasNextFlagJsonPath | 字符串 | 可选。 定义 HasNextPage 标志属性的路径。 |
nextPageTokenResponseHeader | 字符串 | 可选。 定义响应中的下一页标记标头名称。 |
nextPageParaName | 字符串 | 可选。 确定请求中的下一页名称。 |
nextPageRequestHeader | 字符串 | 可选。 确定请求中的下一页标头名称。 |
nextPageUrl | 字符串 | 可选。 确定下一页 URL(如果它不同于初始请求 URL)。 |
nextPageUrlQueryParameters | 字符串 | 可选。 确定下一页 URL 的查询参数(如果它不同于初始请求的 URL)。 定义采用序列化 dictionary<string, object> 格式的字符串:{'<attr_name>': <val>, '<attr_name>': <val>... } |
offsetParaName | 字符串 | 可选。 定义偏移参数的名称。 |
pageSizeParaName | 字符串 | 可选。 定义页面大小参数的名称。 |
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 资源管理器 (ARM) 模板进行部署的优势在于,模板中内置了多个值,因此无需在 API 调用中手动定义这些值。
将 JSON 配置集合包装在 ARM 模板中以部署连接器。 为确保将数据连接器部署到正确的工作区,请务必在 ARM 模板中定义该工作区,或者在部署 ARM 模板时选择该工作区。
为连接器准备 ARM 模板 JSON 文件。 例如,参阅以下 ARM 模板 JSON 文件:
- Slack 解决方案中的数据连接器
- GitHub 解决方案中的数据连接器
在 Azure 门户中搜索“部署自定义模板”。
在“自定义部署”页上,选择“在编辑器中生成自己的模板”>“加载文件”。 浏览并选择你的本地 ARM 模板,然后保存更改。
选择你的订阅和资源组,然后输入要在其中部署自定义连接器的 Log Analytics 工作区。
选择“查看 + 创建”,将自定义连接器部署到 Microsoft Sentinel。
在 Microsoft Sentinel 中,转到“数据连接器”页并搜索新连接器。 对其进行配置以开始引入数据。
有关详细信息,请参阅 Azure 资源管理器文档中的部署本地模板。
配置数据连接器以连接数据源并开始将数据引入 Microsoft Sentinel。 可以像使用现成的数据连接器那样通过门户连接到数据源,也可以通过 API 进行连接。
使用 Azure 门户进行连接时,会自动发送用户数据。 通过 API 进行连接时,需要在 API 调用中发送相关的身份验证参数。
在 Microsoft Sentinel 数据连接器页中,按照提供的说明连接到数据连接器。
Microsoft Sentinel 中的数据连接器页由 CCP JSON 配置文件的
connectorUiConfig
元素中的 InstructionSteps 配置进行控制。 如果遇到用户界面连接问题,请确保身份验证类型配置正确。在 Microsoft Sentinel 中转到“日志”页,确认是否看到有日志从数据源流入工作区。
如果未看到有数据流入 Microsoft Sentinel,请查看数据源文档和故障排除资源,检查配置详细信息,并检查连接。 有关详细信息,请参阅监视数据连接器的运行状况。
断开连接器
如果不再需要连接器的数据,请断开连接器以停止数据流。
使用下列方法之一:
Azure 门户:在 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 市场中分享。
有关详细信息,请参阅