你当前正在访问 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 的旧系统,并且按名称检索系统监视元素的 ID,则 BAPI_SYSTEM_MTE_GETTIDBYNAME 函数是相关的。

仅 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 的旧系统,并且检索过去的 XAL 审核日志条目时, BAPI_XMI_GET_LOGHISTORY 函数是相关的。

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

SAPUsersAssignments

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

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

字段 说明 数据源/备注
用户 SAP 用户 ID 仅限 SAL
电子邮件 SMTP 地址 USR21 (SMTP_ADDR)
UserType 用户类型 USR02 (USTYP)
时区 时区 USR02 (TZONE)
LockedStatus 锁定状态 USR02 (UFLAG)
LastSeenDate 上次查看日期 USR02 (TRDAT)
LastSeenTime 上次查看时间 USR02 (LTIME)
UserGroupAuth 用户主维护中的用户组 USR02 (类)
配置文件 配置文件集 (默认最大集大小 = 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 最新活动的时间戳
StatusCode 反映系统状态的代码

SAPConnectorOverview

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

参数:

名称 可选/必需 默认值 说明
TimeAgo 可选 七天 确定函数从值定义的 TimeAgo 时间到值定义的 now() 时间查找用户主数据。

SAPConnectorOverview 函数返回以下数据:

字段 说明
TimeGenerated 记录生成时间戳的日期/时间值
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 - 系统监视列表进行的每个系统配置。

参数:

名称 可选/必需 默认值 说明
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 可选 [High, Medium] 用于确定要根据其严重性查看的事件。 每个 SAP 审核日志消息 ID 和系统角色的严重性在 SAP_Dynamic_Audit_Log_Monitor_Configuration 监视列表中定义。
SelectedRuleTypes 可选 All RuleTypes 确定哪些事件与检测异常相关。 每个 SAP 审核日志消息 ID 和系统角色的规则类型在 SAP_Dynamic_Audit_Log_Monitor_Configuration 监视列表中定义。

SAPAuditLogConfiguration 函数返回以下数据:

字段 说明 数据源/备注
CategoryName SAP 给定事件类别 SAP 动态审核日志监视器配置 监视列表
DestinationEmail 已分配团队的Email地址 SAP 动态审核日志监视器配置 监视列表
DetailedDescription 要显示在警报上的 Markdown 格式文本 SAP 动态审核日志监视器配置 监视列表
MessageID SAP 审核日志消息 ID SAP 动态审核日志监视器配置 监视列表
MessageText 示例消息文本 SAP 动态审核日志监视器配置 监视列表
RolesTagsToExclude ABAP 角色、配置文件或自由文本标记 SAP 动态审核日志监视器配置 监视列表
RuleType 异常或确定性 SAP 动态审核日志监视器配置 监视列表
策略 MITRE ATTA&CK 战术 SAP 动态审核日志监视器配置 监视列表
TeamsChannelID Teams 频道 SAP 动态审核日志监视器配置 监视列表
SystemID SAP 系统 ID SAP - 系统 监视列表
SystemRole SAP 系统的角色 SAP - 系统 监视列表
SystemUsage SAP 系统的主要用途 SAP - 系统 监视列表
IsProd 生产系统标志 SAP - 系统 监视列表
Severity 派生的严重性 每个系统使用情况的严重性
阈值 派生阈值 每个系统使用情况的事件计数
BagOfDetails 详细信息包 详细说明事件定义的字典

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

SAPAuditLogAnomalies

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

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

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

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

然后,SAPAuditLogAnomalies 函数根据所学知识判断在上一DetectingTime时间范围内发生的事件,并应用从 SAP 审核日志配置监视列表中获取的阈值和其他可配置的排除条件。

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

参数:

名称 可选/必需 默认值 说明
LearningTime 可选 14 天 确定用于模型学习的时间跨度。
检测时间 可选 一小时 确定要查看以检测异常的时间跨度。 使用 DetectingTime = 0h 调用此函数会突出显示整个 LearningTime 时间跨度中的异常。
SelectedSystems 可选 All Systems 用于筛选要查看的特定 SAP 系统。
SelectedSystemRoles 可选 All System Roles 确定要查看的 SAP 系统的角色,如 SAP - 系统 监视列表中定义
SelectedSeverities 可选 [High, Medium] 用于确定要根据其严重性查看的事件。 每个 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 分析规则和使用 SAP解决方案Microsoft Sentinel对 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 用户、角色和配置文件要包含在 SAP_User_Config 监视列表中。

参数:

名称 可选/必需 默认值 说明
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目录用户标识符
SAP_User_Config监视列表 本地用户 SID
SAP_User_Config监视列表 用户主体名称
SAP_User_Config监视列表 TagsList 分配给用户的标记列表 ChangeUserMasterDataOK;RunObsoleteProgOK
逻辑 TagsIntersect 一组匹配的标记 SearchForTags ["ChangeUserMasterDataOK","RunObsoleteProgOK"]
逻辑 SpecialFocusTagged 特殊焦点指示 True, False
逻辑 IntersectionSize 相交标记的数目

SAPUsersHeader

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

参数:

名称 可选/必需 默认值 说明
SelectedSystems 可选 All Systems 用于筛选要查看的特定 SAP 系统
SelectedSystemRoles 可选 All System Roles 确定要查看的 SAP 系统的角色,如 SAP - 系统 监视列表中定义。
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 UserType 分配给用户的标记字符串 RunObsoleteProgOK
SAP 表 USR02 时区 Microsoft Entra对象 ID
SAP 表 USR02 LockedStatus Azure目录用户标识符
SAP 审核日志 LastSeen 时间戳 为用户观察到的最后一个审核事件
SAP 审核日志 LastSeenDaysAgo 自那以后经过的天数 LastSeen
SAP 审核日志 PrimaryIP 最常用的 IP 地址 ChangeUserMasterDataOK;RunObsoleteProgOK
SAP 审核日志 LastKnownIP 最近使用的 IP 地址 ["ChangeUserMasterDataOK","RunObsoleteProgOK"]
SAP 审核日志 PrimaryEmail 最常用的电子邮件地址 True, False
SAP 审核日志 已知 IP 已知 IP 地址列表 按最频繁的优先顺序排序
SAP 审核日志 KnownEmails 已知电子邮件地址列表 按最频繁的优先顺序排序
客户端 SAP 客户端 ID
SystemID SAP 系统 ID
SystemRole SAP 系统的角色 生产、UAT
SystemUsage SAP 系统的主要用途 ERP、CRM

TH_SERVER_LIST (预览版)

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

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

有关更多信息,请参阅: