管理高级安全信息模型 (ASIM) 分析程序(公共预览版)
高级安全信息模型 (ASIM) 用户在查询中使用统一的分析程序而不是表名,从而以规范化的格式查看数据,并在单个查询中获取与架构相关的所有数据。 每个统一的分析程序使用多个特定于源的分析程序来处理每个源的特定详细信息。
若要了解分析程序如何适用于 ASIM 体系结构,请参阅 ASIM 体系结构图。
你可能需要管理每个统一的分析程序所使用的特定于源的分析程序,以执行以下操作:
将自定义的、特定于源的分析程序添加到统一的分析程序。
将统一的分析程序所使用的内置的、特定于源的分析程序替换为自定义的、特定于源的分析程序。 如果要执行以下操作,请替换内置的分析程序:
使用其他版本的内置的分析程序(非统一的分析程序中所默认使用的版本)。
保留统一的分析程序所使用的特定于源的分析程序的版本,以防止自动更新。
使用内置分析程序的修改版本。
配置特定于源的分析程序,例如定义发送与分析程序相关的信息的源。
本文将介绍如何管理分析程序,包括内置的统一的 ASIM 分析程序以及工作区部署的统一的分析程序。
重要
ASIM 当前处于预览状态。 Azure 预览版补充条款包含适用于 beta 版、预览版或其他尚未正式发布的 Azure 功能的其他法律条款。
先决条件
本文中的过程假定所有特定于源的分析程序均已部署到 Microsoft Sentinel 工作区。
有关详细信息,请参阅开发 ASIM 分析程序。
管理内置的统一的分析程序
设置工作区
Microsoft Sentinel 用户无法编辑内置的统一的分析程序。 但可以使用以下机制来修改内置的统一的分析程序的行为:
为支持添加特定于源的分析程序,ASIM 使用统一的自定义的分析程序。 这些自定义的分析程序是工作区部署的,因此是可编辑的。 内置的统一的分析程序可自动获取这些自定义的分析程序(如果存在)。
你可以将初始的、空的、统一的自定义的分析程序部署到 Microsoft Sentinel 工作区,用于所有受支持的架构,也可以逐个部署,用于特定架构。 有关详细信息,请参阅 Microsoft Sentinel GitHub 存储库中的部署初始 ASIM 空自定义的统一的分析程序。
为支持排除内置的特定于源的分析程序,ASIM 使用了监视列表。 将监视列表从 Microsoft Sentinel GitHub 存储库部署到 Microsoft Sentinel 工作区。
若要为内置和自定义分析程序定义源类型,ASIM 将使用监视列表。 将监视列表从 Microsoft Sentinel GitHub 存储库部署到 Microsoft Sentinel 工作区。
将自定义的分析程序添加到内置的统一的分析程序
若要添加自定义的分析程序,请在自定义的统一的分析程序中插入一行,以引用新的自定义的分析程序。
确保同时添加筛选自定义分析程序和无参数自定义分析程序。 若要详细了解如何编辑分析程序,请参阅文档 Azure Monitor 日志查询中的函数。
对于每个架构来说,要添加的行的语法各有不同:
架构 | Parser | 要添加的行 |
---|---|---|
DNS | Im_DnsCustom |
_parser_name_ (starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype) |
NetworkSession | Im_NetworkSessionCustom |
_parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, dstipaddr_has_any_prefix, dstportnumber, hostname_has_any, dvcaction, eventresult) |
WebSession | Im_WebSessionCustom |
_parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, url_has_any, httpuseragent_has_any, eventresultdetails_in, eventresult) |
向已引用分析程序的统一的自定义的分析程序添加附加分析程序时,确保在上一行的末尾添加逗号。
例如,以下代码显示了添加 added_parser
后的自定义的统一的分析程序:
union isfuzzy=true
existing_parser(starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype),
added_parser(starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
使用内置分析程序的修改版本
若要修改现有的、内置的特定于源的分析程序,请执行以下操作:
基于初始分析程序创建自定义分析程序并将其添加到内置分析程序。
向
ASim Disabled Parsers
监视列表添加记录。将
CallerContext
值定义为Exclude<parser name>
,其中<parser name>
是你要从中排除分析程序的统一分析程序的名称。定义
SourceSpecificParser
值Exclude<parser name>
,其中<parser name>
是你要排除的分析程序的名称,不带版本说明符。
例如,若要排除 Azure 防火墙 DNS 分析程序,请将以下记录添加到监视列表:
CallerContext | SourceSpecificParser |
---|---|
Exclude_Im_Dns |
Exclude_Im_Dns_AzureFirewall |
阻止自动更新内置分析程序
按照以下流程阻止内置的、特定于源的分析程序进行自动更新:
将要使用的内置分析程序版本(例如
_Im_Dns_AzureFirewallV02
)添加到自定义的统一的分析程序。 有关详细信息,请参阅上文部分的将自定义的分析程序添加到内置的统一的分析程序。为内置分析程序添加例外。 例如,若要完全拒绝自动更新并因此排除大量内置分析程序,请添加以下内容:
- 以
Any
作为SourceSpecificParser
字段的记录,以排除CallerContext
的所有分析程序。 - CallerContext 和
SourceSpecificParser
字段中的Any
的记录,以排除所有内置分析程序。
有关详细信息,请参阅使用修改版的内置分析程序。
管理工作区部署的统一的分析程序
将自定义的分析程序添加到工作区部署的统一的分析程序
若要添加自定义的分析程序,请在工作区部署的统一的分析程序中向 union
语句插入一行,以引用新的自定义分析程序。
确保同时添加筛选自定义分析程序和无参数自定义分析程序。 对于每个架构来说,要添加的行的语法各有不同:
架构 | Parser | 要添加的行 |
---|---|---|
身份验证 | ImAuthentication |
_parser_name_ (starttime, endtime, targetusername_has) |
DNS | ImDns |
_parser_name_ (starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype) |
文件事件 | imFileEvent |
_parser_name_ |
网络会话 | imNetworkSession |
_parser_name_ (starttime, endtime, srcipaddr_has_any_prefix, dstipaddr_has_any_prefix, dstportnumber, url_has_any, httpuseragent_has_any, hostname_has_any, dvcaction, eventresult) |
进程事件 | - imProcess - imProcessCreate - imProcessTerminate |
_parser_name_ |
注册表事件 | imRegistry |
_parser_name_ |
Web 会话 | imWebSession |
_parser_name_ parser (starttime, endtime, srcipaddr_has_any, url_has_any, httpuseragent_has_any, eventresultdetails_in, eventresult) |
向统一的分析程序添加附加分析程序时,确保在上一行的末尾添加逗号。
例如,下例显示了添加自定义的 added_parser
后的 DNS 筛选统一的分析程序:
let Generic=(starttime:datetime=datetime(null), endtime:datetime=datetime(null) , srcipaddr:string='*' , domain_has_any:dynamic=dynamic([]) , responsecodename:string='*', response_has_ipv4:string='*' , response_has_any_prefix:dynamic=dynamic([]) , eventtype:string='lookup' ){
let DisabledParsers=materialize(_GetWatchlist('ASimDisabledParsers') | where SearchKey in ('Any', 'imDns') | extend SourceSpecificParser=column_ifexists('SourceSpecificParser','') | distinct SourceSpecificParser);
let imDnsBuiltInDisabled=toscalar('imDnsBuiltIn' in (DisabledParsers) or 'Any' in (DisabledParsers));
union isfuzzy=true
vimDnsEmpty
, vimDnsCiscoUmbrella ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsCiscoUmbrella' in (DisabledParsers) )))
, vimDnsInfobloxNIOS ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsInfobloxNIOS' in (DisabledParsers) )))
...
, vimDnsAzureFirewall ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsAzureFirewall' in (DisabledParsers) )))
, vimDnsMicrosoftNXlog ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsMicrosoftNXlog' in (DisabledParsers) ))),
added_parser ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
};
Generic( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
使用修改版的工作区部署的分析程序
Microsoft Sentinel 用户可以直接修改工作区部署的分析程序。 基于初始分析程序创建分析程序,注释掉初始分析程序,然后将修改后的版本添加到工作区部署的统一的分析程序。
例如,以下代码显示了 DNS 筛选统一的分析程序,并且已将 vimDnsAzureFirewall
分析程序替换为了修改后的版本:
let Generic=(starttime:datetime=datetime(null), endtime:datetime=datetime(null) , srcipaddr:string='*' , domain_has_any:dynamic=dynamic([]) , responsecodename:string='*', response_has_ipv4:string='*' , response_has_any_prefix:dynamic=dynamic([]) , eventtype:string='lookup' ){
let DisabledParsers=materialize(_GetWatchlist('ASimDisabledParsers') | where SearchKey in ('Any', 'imDns') | extend SourceSpecificParser=column_ifexists('SourceSpecificParser','') | distinct SourceSpecificParser);
let imDnsBuiltInDisabled=toscalar('imDnsBuiltIn' in (DisabledParsers) or 'Any' in (DisabledParsers));
union isfuzzy=true
vimDnsEmpty
, vimDnsCiscoUmbrella ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsCiscoUmbrella' in (DisabledParsers) )))
, vimDnsInfobloxNIOS ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsInfobloxNIOS' in (DisabledParsers) )))
...
// , vimDnsAzureFirewall ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsAzureFirewall' in (DisabledParsers) )))
, vimDnsMicrosoftNXlog ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype, (imDnsBuiltInDisabled or('vimDnsMicrosoftNXlog' in (DisabledParsers) ))),
modified_vimDnsAzureFirewall ( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
};
Generic( starttime, endtime, srcipaddr, domain_has_any, responsecodename, response_has_ipv4, response_has_any_prefix, eventtype)
配置与特定于源的分析程序相关的源
某些分析程序要求更新与分析程序相关的源的列表。 例如,使用 Syslog 数据的分析程序可能无法确定哪些 Syslog 事件与分析程序相关。 此类分析器可使用 Sources_by_SourceType
监视列表来确定哪些源会发送与分析程序相关的信息。 对于这类分析,请将每个相关源的记录添加到监视列表:
- 将
SourceType
字段设置为分析程序文档中指定的分析程序特定值。 - 将
Source
字段设置为事件中使用的源的标识符。 你可能需要查询原始表(如 Syslog)来确定正确的值。
如果系统未部署 Sources_by_SourceType
监视列表,请从 Microsoft Sentinel GitHub 存储库将监视列表部署到 Microsoft Sentinel 工作区。
后续步骤
本文介绍如何管理高级安全信息模型 (ASIM) 分析程序。
了解有关 ASIM 分析程序的更多信息:
了解有关 ASIM 的大致信息: