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

适用于 SAP 应用程序的 Microsoft Sentinel 解决方案 - 函数参考

本文介绍在为 SAP 应用程序安装 Microsoft Sentinel 解决方案后,工作区中提供的一系列函数。 通过在 Microsoft Sentinel 中浏览并加载函数代码来发现更多函数。

按如下所示查找函数:

  • 在 Azure 门户中的“ 常规 > 日志 ”页上的“ 函数 ”选项卡上,并列在 “工作区”函数下。
  • 在 Defender 门户中的 “调查和响应 > 高级搜寻 ”页上的 “函数 ”选项卡上,并在 Sentinel 工作区函数下列出。

本文中的内容适用于 安全 团队。

在查询中使用函数,而不是基础日志或表

强烈建议尽可能使用本文中列出的函数作为其分析的主题,而不是基础日志或表

这些函数旨在用作数据的主要用户接口。 它们构成了所有现成的内置分析规则和工作簿的基础。 使用函数可以对函数下的数据基础结构进行更改,而不会破坏用户创建的内容。

BAPI_XMI_LOGON(预览版)

当 SAP 系统是使用 XAL 的较旧系统并进行身份验证以收集 SAP XAL 审核日志时, BAPI_XMI_LOGON 函数是相关的。

仅 SAP 无代理数据连接器(有限预览版)支持 BAPI_XMI_LOGON 函数。 有关详细信息,请参阅 安装适用于 SAP 应用程序的 Microsoft Sentinel 解决方案

BAPI_SYSTEM_MTE_GETTIDBYNAME(预览版)

当 SAP 系统是使用 XAL 的较旧系统时, BAPI_SYSTEM_MTE_GETTIDBYNAME 函数相关,并按名称检索系统监视元素的 ID。

仅 SAP 无代理数据连接器(有限预览版)支持 BAPI_SYSTEM_MTE_GETTIDBYNAME 函数。 有关详细信息,请参阅 安装适用于 SAP 应用程序的 Microsoft Sentinel 解决方案

BAPI_SYSTEM_MTE_GETTREE(预览版)

当 SAP 系统是使用 XAL 的较旧系统时, BAPI_SYSTEM_MTE_GETTREE 函数相关,并检索系统监视元素的结构。

仅 SAP 无代理数据连接器(受限预览版)支持 BAPI_SYSTEM_MTE_GETTREE 函数。 有关详细信息,请参阅 安装适用于 SAP 应用程序的 Microsoft Sentinel 解决方案

BAPI_SYSTEM_MTE_GETMLHIS(预览版)

当 SAP 系统是使用 XAL 的较旧系统时, BAPI_SYSTEM_MTE_GETMLHIS 函数相关,并提取历史性能和状态数据。

只有 SAP 无代理数据连接器(有限预览版)才支持 BAPI_SYSTEM_MTE_GETMLHIS 函数。 有关详细信息,请参阅 安装适用于 SAP 应用程序的 Microsoft Sentinel 解决方案

BAPI_XMI_SET_AUDITLEVEL(预览版)

当 SAP 系统是使用 XAL 的较旧系统,并配置 XAL 审核日志记录级别时, BAPI_XMI_SET_AUDITLEVEL 函数是相关的。

仅 SAP 无代理数据连接器(受限预览版)支持 BAPI_XMI_SET_AUDITLEVEL 函数。 有关详细信息,请参阅 安装适用于 SAP 应用程序的 Microsoft Sentinel 解决方案

BAPI_XMI_GET_LOGHISTORY(预览版)

当 SAP 系统是使用 XAL 的较旧系统时, BAPI_XMI_GET_LOGHISTORY 函数相关,并检索过去的 XAL 审核日志条目。

仅 SAP 无代理数据连接器(有限预览版)支持 BAPI_XMI_GET_LOGHISTORY 函数。 有关详细信息,请参阅 安装适用于 SAP 应用程序的 Microsoft Sentinel 解决方案

SAPUsersAssignments

SAPUsersAssignments 函数从多个 SAP 数据源收集数据,并为当前用户主数据(包括当前分配的角色和配置文件)创建以用户为中心的视图。

此函数汇总用户的角色分配和配置文件,并返回以下数据:

字段 说明 数据源/备注
用户 SAP 用户 ID 仅限 SAL
电子邮件 SMTP 地址 USR21 (SMTP_ADDR)
用户类型 用户类型 USR02 (USTYP)
时区 时区 USR02 (TZONE)
LockedStatus 锁定状态 USR02 (UFLAG)
上次见到日期 上次查看日期 USR02 (TRDAT)
LastSeenTime 上次查看时间 USR02 (LTIME)
UserGroupAuth 用户主数据维护中的用户组 USR02 (CLASS)
配置文件 配置文件集(默认最大集大小 = 50) ["Profile 1", "Profile 2",...,"profile 50"]
DirectRoles 直接分配的角色集(默认最大集大小 = 50) ["Role 1", "Role 2",...,"”"Role 50"]
ChildRoles 间接分配的角色集(默认最大集大小 = 50) ["Role 1", "Role 2",...,"”"Role 50"]
客户端 客户端 ID
SystemID 系统 ID 在连接器中定义

SAPUsersGetPrivileged

SAPUsersGetPrivileged 函数返回每个客户端和系统 ID 的特权用户列表。

当用户符合以下任何描述时,即被视为具有特权:

  • 它们列在 SAP - 特权用户 监视列表中
  • 它们被分配到 SAP - 敏感配置文件 监视列表中列出的配置文件
  • 它们已添加到 SAP - 敏感角色 监视列表中列出的角色

参数:

名称 可选/必需 默认值 说明
TimeAgo 可选 七天 确定函数是否搜寻从 TimeAgo 值定义的时间到 now() 值定义的时间范围内的用户主数据。

SAPUsersGetPrivileged 函数返回以下数据:

字段 说明
用户 SAP 用户 ID
客户端 客户端 ID
SystemID 系统 ID

SAPUsersAuthorizations

SAPUsersAuthorizations 函数将多个表中的数据汇集在一起,以生成当前的所分配角色和授权的以用户为中心的视图。 仅返回具有活动角色和授权分配的用户。

参数:

名称 可选/必需 默认值 说明
TimeAgo 可选 七天 确定函数是否搜寻从 TimeAgo 值定义的时间到 now() 值定义的时间范围内的用户主数据。

SAPUsersAuthorizations 函数返回以下数据:

字段 说明 说明
用户 SAP 用户 ID
角色 角色集(默认最大集大小 = 50) ["Role 1", "Role 2",...,"Role 50"]
AuthorizationsDetails 授权集(默认最大集大小 = 100) {{AuthorizationsDetails1},
{AuthorizationsDetails2}
...,
{AuthorizationsDetails100}}
客户端 客户端 ID
SystemID 系统 ID

SAPConnectorHealth

SAPConnectorHealth 函数反映代理的和基础 SAP 系统的连接的状态。 它根据检测信号日志 SAP_HeartBeat_CL 和其他运行状况指示器返回以下数据:

字段 说明
代理人 代理配置中的代理 ID(自动生成)
SystemID SAP 系统 ID
状态 总体连接状态
详细信息 连接性详细信息
ExtendedDetails 连接性扩展详细信息
LastSeen 最新活动的时间戳
状态码 反映系统状态的代码

SAPConnectorOverview

SAPConnectorOverview 函数显示每个系统 ID 的每个 SAP 表的行计数。 它返回每个系统 ID 的数据记录及其生成时间的列表。

参数:

名称 可选/必需 默认值 说明
TimeAgo 可选 七天 确定函数是否搜寻从 TimeAgo 值定义的时间到 now() 值定义的时间范围内的用户主数据。

SAPConnectorOverview 函数返回以下数据:

字段 说明
生成时间 记录生成时间戳的日期/时间值
SystemID_s 一个表示 SAP 系统 ID 的字符串

使用以下 Kusto 查询执行每日趋势分析:

SAPConnectorOverview(7d)
| summarize count() by bin(TimeGenerated, 1d), SystemID_s

SAPUsersEmail

SAPUsersEmail 函数允许针对每个 SAP 系统和客户端的 SAP 用户电子邮件地址进行面向性能的查找,通常用于将其与 Active Directory 帐户相关联。

SAPUsersEmail 函数使用从 SAP 表 USR21(用户名/地址密钥分配)和 ADR6(电子邮件地址)中提取的数据来查找电子邮件地址。 如果找不到电子邮件地址,则返回用户 ID。

此行为可确保 SAP 服务帐户(例如 DDIC,这些帐户通常与电子邮件地址不关联)被记录为伪 AD 帐户。 这也开辟了一些 UEBA 功能,有助于调查事件和搜寻活动。

SAPUsersEmail 函数返回以下数据:

字段 说明
ClientID SAP 客户端 ID
SystemID SAP 系统 ID
用户 SAP 用户 ID
电子邮件 SAP 用户的电子邮件地址

SAPSystems

SAPSystems 函数用于集中呈现使用 SAP - Systems 监视列表创建的按系统配置。

参数:

名称 可选/必需 默认值 说明
SelectedSystems 可选 All Systems 用于筛选特定 SAP 系统
SelectedSystemRoles 可选 All System Roles 确定要查看的 SAP 系统的角色,如 SAP - 系统 监视列表中定义

SAPSystems 函数返回以下数据:

字段 说明 数据源/备注
SearchKey 搜索键 SAP 系统 ID 的索引字段
SystemRole SAP 系统的角色 生产、UAT
SystemUsage SAP 系统的主要用法 ERP、CRM
SystemID SAP 系统 ID

SAPAuditLogConfiguration

SAPAuditLogConfiguration 函数将 SAP 审核日志警报的本地配置返回到为 Microsoft Sentinel 启用的 Log Analytics 工作区。 此配置用于 SAP 审核日志相关的警报。

SAPAuditLogConfiguration 函数联接 SAP 动态审核日志监视器配置SAP - 系统监视列表中的数据,以按系统角色的工作提供按系统配置。

参数:

名称 可选/必需 默认值 说明
SelectedSystems 可选 All Systems 用于筛选要查看的特定 SAP 系统。
SelectedSystemRoles 可选 All System Roles 确定要查看的 SAP 系统的角色(如 SAP - 系统 监视列表中定义)。
SelectedSeverities 可选 [HighMedium] 用于根据严重性确定要查看的事件。 每个 SAP 审核日志消息 ID 和系统角色的严重性在 SAP_Dynamic_Audit_Log_Monitor_Configuration 监视列表中定义。
SelectedRuleTypes 可选 All RuleTypes 确定哪些事件与检测异常相关。 每个 SAP 审核日志消息 ID 和系统角色的规则类型在 SAP_Dynamic_Audit_Log_Monitor_Configuration 监视列表中定义。

SAPAuditLogConfiguration 函数返回以下数据:

字段 说明 数据源/备注
类别名称 SAP 给定事件类别 SAP 动态审核日志监视器配置 监视列表
DestinationEmail 指派团队的电子邮件地址 SAP 动态审核日志监视器配置 监视列表
DetailedDescription 要在警报上显示的 Markdown 格式文本 SAP 动态审核日志监视器配置 监视列表
消息 ID SAP 审核日志消息 ID SAP 动态审核日志监视器配置 监视列表
消息文本 消息文本示例 SAP 动态审核日志监视器配置 监视列表
RolesTagsToExclude ABAP 角色、配置文件或自定义文本标记 SAP 动态审核日志监视器配置 监视列表
规则类型 异常或确定性 SAP 动态审核日志监视器配置 监视列表
策略 MITRE ATTA&CK 策略 SAP 动态审核日志监视器配置 监视列表
TeamsChannelID Teams 通道 SAP 动态审核日志监视器配置 监视列表
SystemID SAP 系统 ID SAP - 系统 监视列表
SystemRole SAP 系统的角色 SAP - 系统 监视列表
SystemUsage SAP 系统的主要用法 SAP - 系统 监视列表
IsProd 生产系统标志 SAP - 系统 监视列表
严重性 推导出的严重性 按系统使用情况的严重性
阈值 推导出的阈值 每个系统使用情况的事件计数
BagOfDetails 详细信息包 详细描述事件定义的字典

有关详细信息,请参阅 “可用监视列表”。

SAPAuditLogAnomalies

SAPAuditLogAnomalies 函数使用 Microsoft Sentinel 的基础 Kusto 数据库的内置机器学习功能来帮助检测 SAP 审核日志上观察到的异常事件。

SAPAuditLogAnomalies 函数是为 SAP - (实验) 基于动态异常的审核日志监视器警报分析规则开发的。 虽然其原始设计是为了对最近的异常发出警报,但它也可以帮助突出显示历史异常。 有关详细信息,请参阅 示例用法

SAPAuditLogAnomalies 函数在以下级别了解由不同输入参数定义的历史记录切片:

  • 用户
  • 网络属性
  • 系统
  • 季节性
  • 活动级别

然后 ,SAPAuditLogAnomalies 函数根据所了解的内容、应用阈值和其他从 SAP 审核日志配置监视列表获取的可配置排除条件来判断上次 DetectingTime 时间跨度内发生的事件。

一旦用户活动的滑动窗口被视为异常,第二个查询将返回整个用户活动作为支持该决策的证据。

参数:

名称 可选/必需 默认值 说明
LearningTime 可选 14 天 确定用于模型学习的时间跨度。
DetectingTime 可选 一小时 确定要查看的检测异常的时间跨度。 使用 DetectingTime = 0h 调用此函数将突出显示整个 LearningTime 时间跨度中的异常。
SelectedSystems 可选 All Systems 用于筛选要查看的特定 SAP 系统。
SelectedSystemRoles 可选 All System Roles 确定要查看的 SAP 系统的角色,如 SAP - 系统 监视列表中定义
SelectedSeverities 可选 [HighMedium] 用于根据严重性确定要查看的事件。 每个 SAP 审核日志消息 ID 和系统角色的严重性在 SAP_Dynamic_Audit_Log_Monitor_Configuration 监视列表中定义。
SelectedPrefixMask 可选 24 用于确定学习和检测所用的子网掩码级别。
SelectedRuleTypes 可选 AnomaliesOnly 确定哪些事件与检测异常相关。 每个 SAP 审核日志消息 ID 和系统角色的规则类型在 SAP_Dynamic_Audit_Log_Monitor_Configuration 监视列表中定义。

SAPAuditLogAnomalies 函数返回以下数据:

字段 说明
SAPAuditLog 中的多个字段 SAP 审核日志中的关键字段
SAPAuditLogConfiguration 中的多个字段 适用于 SAP 的 Microsoft Sentinel 审核日志配置中的关键字段
DiscoveredOn 观察到异常的整点时间
EventCount 按返回的行计数的事件数
AnomalCount 相关滑动窗口中观察到的事件数
MinTime 观察到的第一个事件的时间
MaxTime 观察到的最后一个事件的时间
分数 异常模型生成的异常分数

建议

与任何机器学习解决方案一样, SAPAuditLogAnomalies 函数可以随着时间的流逝而更好地执行,并且可以根据需要进行调整。

建议使用许多可用的输入参数将学习的数据库的大小限制在 1 亿条记录以下。

示例用法包括

  • 若要搜索生产系统上过去一小时内发生的高严重性事件的异常,请在SAP_Dynamic_Audit_Log_Monitor_Configuration监视列表中将事件类型标记为 AnomaliesOnly,请运行:

    SAPAuditLogAnomalies(LearningTime = 14d, DetectingTime=1h, SelectedSystemRoles= dynamic(["Production"]), 
    SelectedSeverities= dynamic(["High"]), SelectedRuleTypes= dynamic(["AnomaliesOnly"]))
    
  • 若要在 BIP 系统中搜索过去 14 天内的所有异常,请运行:

    SAPAuditLogAnomalies(LearningTime = 14d, DetectingTime=0h, SelectedSystems= dynamic(["BIP"]))
    

有关详细信息,请参阅内置的 SAP 分析规则,以使用适用于 SAP 解决方案的 Microsoft Sentinel 监视 SAP 审核日志和 SAP 审核日志上的异常情况检测(博客)。

SAPAuditLogConfigRecommend

SAPAuditLogConfigRecommend 是一个帮助程序函数,旨在提供针对 SAP - 基于动态异常的审核日志监视器警报(预览)分析规则的配置建议。

有关详细信息,请参阅 监视 SAP 审核日志

SAPUsersGetVIP

SAP 应用程序的 Microsoft Sentinel 解决方案使用中心用户标记和显式排除的概念,旨在帮助你尽量降低误报。

使用 SAPUsersGetVIP 函数通过指定 SAP 用户角色、SAP 用户功能或代表用户的标记将这些用户从触发警报的操作中排除。 有关详细信息,请参阅 在 Microsoft Sentinel 中处理误报

如果已将标记指定为 SAPUsersGetVIP 函数的输入,则这些标记会排除其标记已在 SAP_User_Config 监视列表中列出的所有用户。 相同的功能已扩展为使用通配符,允许你将单个标记分配给命名语法相同的一组用户。

  1. 将 SAP_User_Config 监视列表中的用户标记如下:

    • 根据需要向 SAP_User_Config 监视列表中的每个用户添加多个标记,以涵盖各种情况。 每个预警规则都有自己的相关标记(如果有),你可以根据需要添加自定义标记。

    • 使用星号 (*) 作为通配符来包含使用特定命名语法模板的用户。

  2. 在分析规则中添加 SAPUsersGetVIP 函数,以请求你已定义的要从警报中排除的用户列表。 在函数调用中添加一个数组,其中包含要排除的标记、SAP 角色和 SAP 配置文件。

例如,在分析规则中使用以下 KQL 查询来排除 SAP_User_Config 监视列表中配置有 RunObsoleteProgOK 标记的任何用户,或排除具有示例 SAP_BASIS_ADMIN_ROLE 角色或示例 SAP_ADMIN_PROFILE 配置文件的任何用户。

复制此示例函数调用时,请根据需要将 SAP_BASIS_ADMIN_ROLE 角色和 SAP_ADMIN_PROFILE 配置文件替换为你自己的 SAP 角色或配置文件。

例如:

// Execution of Obsolete/Insecure Program
let ObsoletePrograms = _GetWatchlist("SAP - Obsolete Programs");
// here you can exclude system users which are OK to run obsolete/ sensitive programs
// by adding those users in the SAP_User_Config watchlist with a tag of 'RunObsoleteProgOK'
// can also specify SAP roles or SAP profiles that group the users you would like to exclude
let excludeUsersTagsRolesProfiles= dynamic(["RunObsoleteProgOK","SAP_BASIS_ADMIN_ROLE", "SAP_ADMIN_PROFILE"]);
let excludedUsers= SAPUsersGetVIP(SearchForTags= excludeUsersTagsRolesProfiles)| summarize by User2Exclude=SAPUser;
// Query logic
SAPAuditLog
| where MessageID == 'AUW'
| where ABAPProgramName in (ObsoletePrograms) // The program is obsolete
| join kind=leftantisemi excludedUsers on $left.User == $right.User2Exclude

SAPUsersGetVIP 函数通常用在确定性和异常审核日志监视器警报中。 将标记与 SAP 审核日志消息 ID 相关联,或将规则模板扩展为符合组织需求的自定义规则。

提示

建议联系 SAP 系统管理员,了解要在 SAP_User_Config 监视列表中包含哪些 SAP 用户、角色和配置文件。

参数:

名称 可选/必需 默认值 说明
SearchForTags 可选 dynamic('All Tags') SearchForTags 等于 All Tags 时,将返回所有用户及其标记。

否则仅返回具有 SearchForTags 中指定的标记、SAP 角色或 SAP 配置文件的用户。 TagsIntersect 显示找到的标记,IntersectionSize 保存找到的标记的数量。
SpecialFocusTags 可选 Do not return any in-focus users 返回带有 SpecialFocusTags 中指定的标记的所有用户,用 specialFocusTagged = true 标记这些用户。

SAPUsersGetVIP 函数返回以下输出:

来源 字段 说明 说明
SAP_User_Config 监视列表 SearchKey 搜索键
SAP_User_Config 监视列表 SAPUser SAP 用户 OSS、DDIC
SAP_User_Config 监视列表 Tags 分配给用户的标记字符串 RunObsoleteProgOK
SAP_User_Config 监视列表 用户的 Microsoft Entra 对象 ID Microsoft Entra 对象 ID
SAP_User_Config 监视列表 用户标识符 Azure Directory 用户标识符
SAP_User_Config 监视列表 用户本地 SID
SAP_User_Config 监视列表 用户主体名称
SAP_User_Config 监视列表 TagsList 分配给用户的标记列表 ChangeUserMasterDataOK;RunObsoleteProgOK
逻辑 TagsIntersect 匹配 SearchForTags 的一组标记 ["ChangeUserMasterDataOK","RunObsoleteProgOK"]
逻辑 SpecialFocusTagged 特殊焦点指示 TrueFalse
逻辑 IntersectionSize 相交标记的数目

SAPUsersHeader

SAPUsersHeader 函数旨在提供 SAP 用户的概要视图。 它使用从 SAP 用户主数据表和 SAP 审核日志中的最近活动中提取的数据来收集电子邮件和 IP 地址。 然后返回最后已知的电子邮件和 IP 地址以及主要电子邮件和 IP 地址。

参数:

名称 可选/必需 默认值 说明
SelectedSystems 可选 All Systems 用于筛选要查看的特定 SAP 系统
SelectedSystemRoles 可选 All System Roles 确定要查看的 SAP 系统的角色,如 SAP - Systems 监视列表中定义的那样。
SelectedUsers 可选 All Users 可以输入用户列表。
SelectedUser 可选 All Users 仅接受单个用户。

例如:

SelectedSystemRoles:dynamic = dynamic(["All System Roles"]) SelectedSystems:dynamic = dynamic(["All Systems"]) SelectedUsers:dynamic = dynamic(["All Users"]) SelectedUser:string = "All Users"

提示

出于性能考虑,仅考虑几天的审核活动。 对于用户活动的完整历史记录,请针对 SAPAuditLog 函数运行自定义 KQL 查询。

SAPUsersHeader 函数返回以下输出:

来源 字段 说明 说明
用户 SAP 用户
SAP 表 ADR6 和 USR21 电子邮件 从用户的主数据中获取 OSS、DDIC
SAP 表 USR02 用户类型 分配给用户的标记字符串 RunObsoleteProgOK
SAP 表 USR02 时区 Microsoft Entra 对象 ID
SAP 表 USR02 LockedStatus Azure Directory 用户标识符
SAP 审核日志 LastSeen 时间戳 为用户观察到的最后一个审核事件
SAP 审核日志 LastSeenDaysAgo LastSeen 以来已过去的天数
SAP 审核日志 PrimaryIP 最常用的 IP 地址 ChangeUserMasterDataOK;RunObsoleteProgOK
SAP 审核日志 LastKnownIP 最近使用的 IP 地址 ["ChangeUserMasterDataOK","RunObsoleteProgOK"]
SAP 审核日志 PrimaryEmail 最常用的电子邮件地址 TrueFalse
SAP 审核日志 KnownIPs 已知 IP 地址列表 按最频繁的优先排序
SAP 审核日志 KnownEmails 已知电子邮件地址列表 按最频繁的优先排序
客户端 SAP 客户端 ID
SystemID SAP 系统 ID
SystemRole SAP 系统的角色 生产、UAT
SystemUsage SAP 系统的主要用法 ERP、CRM

TH_SERVER_LIST(预览版)

当 SAP 系统是使用 XAL 的较旧系统,并列出活动的 SAP 应用程序服务器时, TH_SERVER_LIST 函数是相关的。

只有 SAP 无代理数据连接器(有限预览版)才支持 TH_SERVER_LIST 函数。 有关详细信息,请参阅 安装适用于 SAP 应用程序的 Microsoft Sentinel 解决方案

有关详细信息,请参阅: