Compartir a través de

管理高级安全信息模型 (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)

使用内置分析程序的修改版本

若要修改现有的、内置的特定于源的分析程序,请执行以下操作:

  1. 基于初始分析程序创建自定义分析程序并将其添加到内置分析程序。

  2. ASim Disabled Parsers 监视列表添加记录。

  3. CallerContext 值定义为 Exclude<parser name>,其中 <parser name> 是你要从中排除分析程序的统一分析程序的名称。

  4. 定义 SourceSpecificParserExclude<parser name>,其中 <parser name> 是你要排除的分析程序的名称,不带版本说明符。

例如,若要排除 Azure 防火墙 DNS 分析程序,请将以下记录添加到监视列表:

CallerContext SourceSpecificParser
Exclude_Im_Dns Exclude_Im_Dns_AzureFirewall

阻止自动更新内置分析程序

按照以下流程阻止内置的、特定于源的分析程序进行自动更新:

  1. 将要使用的内置分析程序版本(例如 _Im_Dns_AzureFirewallV02)添加到自定义的统一的分析程序。 有关详细信息,请参阅上文部分的将自定义的分析程序添加到内置的统一的分析程序

  2. 为内置分析程序添加例外。 例如,若要完全拒绝自动更新并因此排除大量内置分析程序,请添加以下内容:

  • 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 的大致信息: