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

从头开始创建自定义分析规则

你已经设置了连接器和其他方式来收集整个数字资产的活动数据。 现在,你需要深入了解所有数据以检测活动模式并发现不符合这些模式且可能代表安全威胁的活动。

Microsoft Sentinel 及其在内容中心提供的许多解决方案为最常用的分析规则类型提供了模板,强烈建议你使用这些模板,并针对你的特定场景对其进行自定义。 但是,你可能需要完全不同的内容,在这种情况下,可以使用分析规则向导从头开始创建规则。

本文将指导你完成 Analytics 规则向导 并介绍所有可用选项。 它附有屏幕截图和说明,用于访问 Azure 门户(适用于非 Microsoft Defender 订阅者的 Microsoft Sentinel 用户)和 Defender 门户(适用于 Microsoft Defender 统一安全操作平台的用户)中的向导。

重要

Microsoft Sentinel 作为 Microsoft Defender 门户中统一安全运营平台的一部分提供。 现支持在 Defender 门户中将 Microsoft Sentinel 用于生产。 有关详细信息,请参阅 Microsoft Defender 门户中的 Microsoft Sentinel

先决条件

  • 必须具有 Microsoft Sentinel Contributor 角色,或者任何其他角色或权限集,其中包括 Log Analytics 工作区及其资源组的写入权限。

设计和生成查询

在执行任何其他操作之前,应先使用 Kusto 查询语言 (KQL) 设计并构建一个查询,规则将使用该查询来查询 Log Analytics 工作区中的一个或多个表。

  1. 确定要搜索以检测异常或可疑活动的数据源。 查找从该数据源提取数据的 Log Analytics 表的名称。 可以在该数据源的数据连接器页面上找到表名称。 使用此表名称(或基于它的函数)作为查询的基础。

  2. 决定希望此查询对表执行的分析类型。 此决定将确定应该在查询中使用哪些命令和函数。

  3. 决定想要从查询结果中获取的数据元素(字段、列)。 此决定将确定如何构造查询的输出。

分析规则查询的最佳做法

  • 建议使用高级安全信息模型 (ASIM) 分析程序作为查询源,而不是使用本机表。 这将确保查询支持任何当前或未来的相关数据源或数据源系列,而不是依赖于单个数据源。

  • 查询长度应介于 1 到 10,000 个字符之间,并且不得包含“search *”或“union *”。 你可以使用用户定义的函数来克服查询长度限制。

  • 不支持在 Log Analytics 查询窗口中使用 ADX 函数创建 Azure 数据资源管理器查询。

  • 在查询中使用 bag_unpack 函数时,如果使用“project field1将列投影为字段而列不存在,此时查询将失败。 为了防止这种情况发生,必须按以下方式对列进行投影

    project field1 = column_ifexists("field1","")

有关构建 Kusto 查询的更多帮助,请参阅 Microsoft Sentinel 中的 Kusto 查询语言Kusto 查询语言查询的最佳做法

在“日志”屏幕中构建并测试查询。 如果感到满意,请保存查询以在规则中使用。

创建分析规则

本部分介绍如何使用 Azure 或 Defender 门户创建规则。

启动 Analytics 规则向导

  1. 从 Microsoft Sentinel 导航菜单的“配置”部分选择“Analytics”。

  2. 在顶部的操作栏中,选择“+创建”,然后选择“计划查询规则”。 这样会打开“分析规则向导”。

    Azure 门户中 Analytics 屏幕的屏幕截图。

命名规则并定义常规信息

在 Azure 门户中,阶段以选项卡的形式直观表示。 在 Defender 门户中,它们直观表示为时间线上的里程碑。 有关示例,请参阅下面的屏幕截图。

  1. 提供一个唯一的“名称”和“说明”。

  2. 根据需要设置警报严重性,如果规则的状态为“真正”,则匹配触发该规则的活动可能对目标环境的影响。

    严重性 说明
    信息 对系统没有影响,但信息可能表明威胁行动者计划了未来步骤。
    直接影响将是微乎其微的。 威胁行动者可能需要执行多个步骤,才能对环境产生影响。
    中等 威胁行动者可能通过此活动对环境产生一些影响,但影响范围有限或需要其他活动。
    确定的活动为威胁行动者提供了广泛的访问权限来对环境执行操作,或者由对环境的影响触发。

    严重性级别默认值不能保证当前或环境影响级别。 自定义警报详细信息,从而使用查询输出中任何相关字段的值自定义给定警报实例的严重性、策略和其他属性。

    Microsoft Sentinel 分析规则模板的严重性定义仅与分析规则创建的警报相关。 对于从其他服务引入的警报,严重性由源安全服务定义。

  3. 在“策略和技术”字段中,可以从威胁活动类别中进行选择,对规则进行分类。 这些类别基于 MITRE ATT&CK 框架的策略和技术生成。

    根据映射到 MITRE ATT&CK 策略和技术的规则检测到的警报创建的事件会自动继承该规则的映射。

    有关最大限度地扩大 MITRE ATT&CK 威胁形势覆盖范围的更多信息,请参阅了解 MITRE ATT&CK® 框架的安全覆盖范围

  4. 在你创建规则时,默认情况下规则的“状态”为“已启用”,这表示当你完成创建后,它将立即运行。 如果你不需要让此规则立即运行,请选择“已禁用”,这样就会将它添加到“可用规则”选项卡中,当你需要运行此规则时,可从该选项卡中启用它。

    注意

    还有另一种方法(当前处于预览状态)可以创建规则而不立即运行。 可以计划规则在特定日期和时间首次运行。 请参阅下面的计划查询并确定查询范围

  5. 选择“下一步:设置规则逻辑”。


定义规则逻辑

  1. 输入规则的查询。

    将设计、构建和测试的查询粘贴到“规则查询”窗口中。 在此窗口中所做的每项更改都会立即得到验证,因此,如果有任何错误,则会在窗口下方看到指示。

  2. 映射实体。

    实体对于检测和调查威胁至关重要。 将 Microsoft Sentinel 识别的实体类型映射到查询结果中的字段。 此映射会将发现的实体集成到警报架构中的“实体”字段中。

    有关映射实体的完整说明,请参阅将数据字段映射到 Microsoft Sentinel 中的实体

  3. 在警报中呈现自定义详细信息。

    默认情况下,事件中只会显示警报实体和元数据,而不会详细钻取到查询结果中的原始事件。 此步骤采用查询结果中的其他字段,并将它们集成到警报中的 ExtendedProperties 字段中,使它们显示在警报前面以及从这些警报创建的任何事件中。

    有关呈现自定义详细信息的完整说明,请参阅在 Microsoft Sentinel 中的警报中呈现自定义事件详细信息

  4. 自定义警报详细信息。

    此设置允许根据每个单独警报中各个字段的内容自定义其他标准警报属性。 这些自定义设置已集成到警报的 ExtendedProperties 字段中。 例如,可以自定义警报名称或描述以包含警报中包含的用户名或 IP 地址。

    有关自定义警报详细信息的完整说明,请参阅 Microsoft Sentinel 中的自定义警报详细信息

  5. 计划查询并确定查询范围。

    1. 在“查询计划”部分设置以下参数:

      设置 行为
      查询运行间隔 控制查询间隔:运行查询的频率。
      查找上次的数据 确定回溯期:查询涵盖的时间段。
      • 这两个参数的允许范围是 5 分钟14 天

      • 查询间隔必须小于或等于回溯期。 如果较短,查询时间段将重叠,这可能会导致结果重复。 不过,规则验证不允许设置比回溯期更长的间隔,因为这会导致覆盖范围出现空白。

    2. 设置“开始运行”:

      设置 行为
      自动 该规则将在创建后立即开始首次运行,之后将按“查询运行间隔”设置中所设置的间隔运行。
      在特定时间(预览) 设置规则首次运行的日期和时间,之后它将按照“查询运行间隔”设置中设置的时间间隔运行。
      • 开始运行”时间必须在规则创建(或启用)时间后 10 分钟到 30 天之间。

      • 开始运行”设置下的文本行(其左侧带有信息图标)汇总了当前查询计划和回溯设置。

        高级计划切换和设置的屏幕截图。

    注意

    引入延迟

    为了考虑在源中生成事件与将事件引入 Microsoft Sentinel 之间可能出现的延迟,并确保实现完全覆盖且数据不会重复,Microsoft Sentinel 从计划的时间起延迟五分钟运行计划的分析规则 。

    有关详细信息,请参阅处理计划分析规则中的引入延迟

  6. 设置用于创建警报的阈值。

    使用“警报阈值”部分定义规则的敏感度级别。

    • 将“在以下情况下生成警报: 查询结果数”设置为“大于”,并输入规则在查询时间段内需要找到以生成警报的最小事件数。
    • 这是必填字段,因此如果不想设置阈值(也就是说,如果想在给定时间段内为单个事件触发警报),请在数字字段中输入 0
  7. 设置事件分组设置。

    在“事件分组”下,选择以下两种方式之一来处理将事件分组到警报的操作:

    设置 行为
    将所有事件分组到一个警报中
    (默认值)
    只要查询返回的结果数超过上面指定的警报阈值,此规则每次运行时就生成一个警报。 此单个警报汇总了查询结果中返回的所有事件。
    为每个事件触发警报 此规则将针对查询返回的每一个事件生成一个独一无二的警报。 如果你希望单独显示各个事件,或者希望按特定参数(按用户、主机名或其他内容)将事件分组,此规则会很有用。 你可以在查询中定义这些参数。

    分析规则最多可以生成 150 个警报。 如果“事件分组”设置为“为每个事件触发警报”,并且该规则的查询返回 150 个以上的事件,则前 149 个事件中,每个都会生成独一无二的警报(针对 149 个警报),第 150 个警报将汇总返回的所有事件。 换句话说,如果“事件分组”已设置为“将所有事件分组到一个警报中”,则会生成第 150 个警报。

  8. 生成警报后暂时禁止显示规则。

    如果需要让规则在生成警报后于一个时段内(长于查询间隔)暂停运行,则可以在“抑制”部分中将“生成警报后停止运行查询”设置为“启用” 。 如果启用此设置,则必须将“停止运行查询的时长”设置为查询应停止运行的时长,最多为 24 小时。

  9. 模拟查询和逻辑设置的结果。

    在“结果模拟”区域中,选择“使用当前数据进行测试”,Microsoft Sentinel 将提供一个图表,其中是按照当前定义的计划查询将在最近 50 次运行过程中生成的结果(日志事件)。 如果要修改查询,请再次选择“使用当前数据进行测试”,以更新此图表。 此图表展示了定义的时段内的结果数,该时段由“查询计划”部分中的设置确定。

    上面的屏幕截图中的查询的结果模拟如下所示。 左侧是默认视图,右侧是将鼠标指针悬停在图表上的某个时间点上时所显示的内容。

    结果模拟屏幕截图

    如果你发现查询将触发的警报过多或过于频繁,可以利用“查询计划”和“警报阈值”部分中的设置进行试验,然后再次选择“使用当前数据进行测试”。

  10. 选择“下一步: 事件设置”。

配置故障事件生成设置

在“事件设置”选项卡中,选择 Microsoft Sentinel 是否将警报转化为可操作的事件,以及是否以及如何将警报分组到事件中。

  1. 启用事件创建。

    在“故障事件设置”部分中,默认情况下,将“通过此分析规则触发的警报创建故障事件”设置为“已启用”,这意味着 Microsoft Sentinel 将通过该规则触发的每一个警报单独创建一个故障事件 。

    • 如果你不需要让此规则生成任何故障事件(例如,在此规则只用于收集信息以供以后进行分析的情况下),则将此设置设为“已禁用”。

      重要

      如果将 Microsoft Sentinel 载入 Microsoft Defender 门户中的统一安全操作平台,并且此规则正在从 Microsoft 365 或 Microsoft Defender 源查询和创建警报,则必须将此设置设置为“禁用”。

    • 如果想要通过一组警报创建单个故障事件,而不是为每一个警报生成一个故障事件,请参阅下一节内容。

  2. 设置事件分组设置。

    如果需要通过一组(最多 150 个)相似警报或重复警报(请参阅注释)生成一个故障事件,则在“警报分组”部分中则将“将此分析规则触发的相关警报分组到故障事件”设置为“已启用”,并设置以下参数。

    1. 将组范围限制为所选时段内创建的警报:确定将哪个时段内的相似警报或重复警报组合在一起。 此时段内对应的所有警报将共同生成一个或一组故障事件(具体取决于下面的分组设置)。 此时段之外的警报将单独生成一个或一组故障事件。

    2. 将此分析规则触发的警报分组到一个故障事件的依据:选择组合警报的依据:

      选项 说明
      如果所有实体都匹配,则将警报分组为单个事件 如果警报映射的每个实体(定义参见上面的设置规则逻辑选项卡)值都相同,则将警报组合在一起。 建议使用此设置。
      将此规则触发的所有警报分组到单个事件中 将此规则生成的所有警报都组合在一起,即使这些警报没有相同的值也是如此。
      如果所选实体和详细信息匹配,则将警报分组到单个事件中 如果警报的值与各自下拉列表中选择的所有映射实体、警报详细信息和自定义详细信息完全相同,则将警报组合在一起。

      例如,如果你想要基于源或目标 IP 地址创建单独的事件,或者想要对匹配特定实体和严重性的警报进行分组,则可能需要使用此设置。

      注意:如果选择此选项,则必须至少为该规则选择一个实体类型或字段。 否则,规则验证将失败,并且不会创建规则。
    3. 重新打开已关闭的匹配故障事件:如果某个故障事件已解决并已关闭,而稍后系统生成了应属于该故障事件的另一个警报,在这种情况下,如果要重新打开这个已关闭的故障事件,则将此设置设为“已启用”,如果要该警报创建一个新的故障事件,则将此设置保留为“已禁用”。

    注意

    最多可将 150 个警报分组到一个故障事件。

    • 只有在生成所有警报后才会创建事件。 所有警报将在事件创建后立即添加到事件中。

    • 如果将警报分组到一个故障事件的规则生成了 150 个以上的警报,该规则将使用与初始故障事件详细信息同样的内容生成一个新故障事件,并将超出数目的警报分组到这个新的故障事件。

  3. 选择“下一步: 自动响应”。

设置自动响应并创建规则

在“自动化响应”选项卡中,可以使用自动化规则将自动化响应设为在以下三种情形之一出现时触发:

  • 当此分析规则生成警报时。
  • 从此分析规则生成的警报创建事件时。
  • 当更新了包含由此分析规则生成的警报的事件时。

自动化规则”下显示的网格将显示已应用于此分析规则的自动化规则(因为它满足这些规则中定义的条件)。 可以通过选择规则名称或每行末尾的省略号来编辑其中的任一规则。 或者,可以选择“添加新项”以创建新的自动化规则

使用自动化规则执行基本会审、分配、工作流和事件关闭。

通过从这些自动化规则调用 playbook 来自动执行更复杂的任务并调用来自远程系统的响应以修正威胁。 可以针对事件和单个警报调用 playbook。

  • 在屏幕底部的“警报自动化(经典)”下,你将看到已配置为在使用旧方法生成警报时自动运行的任何 playbook。
    • 自 2023 年 6 月起,你无法再向此列表添加 playbook。 此处已列出的 playbook 将继续运行,直到此方法在 2026 年 3 月被弃用。

    • 如果你仍有此处列出的任何 playbook,则应改为基于“警报创建的触发器”创建自动化规则,并从该自动化规则调用 playbook。 完成此操作后,选择此处列出的 playbook 行尾的省略号,然后选择“删除”。 有关完整说明,请参阅将 Microsoft Sentinel 警报触发器 playbook 迁移到自动化规则

选择“下一步: 查看和创建”,以查看新分析规则的所有设置。 在出现“已通过验证”消息时,选择“创建”。

查看规则及其输出

查看规则定义:

  • 可在主“分析”屏幕上的“可用规则”选项卡下的表格中找到新创建的自定义规则(类型为“已计划”)。 你可以从此列表启用、禁用或删除每个规则。

查看规则的结果:

  • 若要查看在 Azure 门户中创建的分析规则的结果,请转到“事件”页面,可以在此处对事件进行会审、调查事件,并修正威胁

优化规则:

注意

可通过 Microsoft Graph 安全性访问 Microsoft Sentinel 中生成的警报。 有关详细信息,请参阅 Microsoft Graph 安全性警报文档

将规则导出到 ARM 模板

如果要将你的规则打包作为代码进行管理和部署,你可以轻松地将规则导出到 Azure 资源管理器 (ARM) 模板。 你还可以从模板文件导入规则,以便在用户界面中进行查看和编辑。

后续步骤

使用分析规则检测来自 Microsoft Sentinel 的威胁时,请务必启用与连接的数据源关联的所有规则,以确保环境的全方位安全性。

若要自动启用规则,可以通过 APIPowerShell 将规则推送到 Microsoft Sentinel,但这样做需要付出额外的工作。 使用 API 或 PowerShell 时,必须先将规则导出到 JSON,然后才能启用规则。 在 Microsoft Sentinel 的多个实例(每个实例的设置都相同)中启用规则时,API 或 PowerShell 可能会有所帮助。

有关详细信息,请参阅:

此外,学习此示例:通过自定义连接器监视 Zoom 时使用自定义分析规则。