|
1 | 1 | ---
|
2 | 2 | title: Microsoft Sentinel solution for SAP® applications - data reference
|
3 | 3 | description: Learn about the SAP logs, tables, and functions available from the Microsoft Sentinel solution for SAP® applications.
|
4 |
| -author: yelevin |
5 |
| -ms.author: yelevin |
| 4 | +author: batamig |
| 5 | +ms.author: bagol |
6 | 6 | ms.topic: reference
|
7 | 7 | ms.custom: mvc, ignite-fall-2021
|
8 |
| -ms.date: 05/24/2023 |
| 8 | +ms.date: 01/15/2024 |
9 | 9 | ---
|
10 | 10 |
|
11 | 11 | # Microsoft Sentinel solution for SAP® applications data reference
|
@@ -291,54 +291,67 @@ SAPAuditLogAnomalies(LearningTime = 14d, DetectingTime=0h, SelectedSystems= dyna
|
291 | 291 | See [Built-in SAP analytics rules for monitoring the SAP audit log](sap-solution-security-content.md#monitoring-the-sap-audit-log) for more information.
|
292 | 292 |
|
293 | 293 | ### SAPAuditLogConfigRecommend
|
| 294 | + |
294 | 295 | The **SAPAuditLogConfigRecommend** is a helper function designed to offer recommendations for the configuration of the [SAP - Dynamic Anomaly based Audit Log Monitor Alerts (PREVIEW)](sap-solution-security-content.md#sap---dynamic-anomaly-based-audit-log-monitor-alerts-preview) analytics rule. Learn how to [configure the rules](configure-audit-log-rules.md).
|
295 | 296 |
|
296 | 297 | ### SAPUsersGetVIP
|
297 | 298 |
|
298 |
| -The Sentinel for SAP solution uses a concept of central user tagging, designed to allow for lower false positive rate with minimal effort on the customer end: |
| 299 | +The [Microsoft Sentinel solution for SAP® applications](solution-overview.md) uses a concept of central user tagging and explicit exclusions, designed to help you lower false positives with minimal effort. Use the *SAPUsersGetVIP* function to exclude users from triggering alerts by specifying SAP user roles, SAP user functions, or tags that represent those users. |
| 300 | + |
| 301 | +Tags specified as input for the *SAPUsersGetVIP* function exclude all users with a tag listed in the *SAP_User_Config* watchlist. The same functionality is extended to work with wildcards, allowing you to assign a single tag to a group of users with the same naming syntax. |
| 302 | + |
| 303 | +1. Tag users in the *SAP_User_Config* watchlist as follows: |
| 304 | + |
| 305 | + - Add multiple tags to each user in the *SAP_User_Config* watchlist, as needed to cover various scenarios. Each alert rule has its own relevant tags, if any, and you can add custom tags as needed. |
299 | 306 |
|
300 |
| -- Users can be tagged using the "SAP User Config" watchlist (for example DDIC is assigned with “RunObsoleteProgOK”). Multiple users can have multiple tags. |
301 |
| -- An alert rule sends the relevant tags to the **SAPUsersGetVIP** function asking for a list of users to be excluded. The alert rule “SAP - Execution of an Obsolete or an Insecure Program” can ask for users bearing the tag “RunObsoleteProgOK”. |
| 307 | + - Use an asterisk (*) as a wildcard to include users with a specific naming syntax template. |
302 | 308 |
|
303 |
| -Here is a KQL query demonstrating the use case described below: |
| 309 | +1. Add the **SAPUsersGetVIP** function in your analytics rules to request the lists of users you've defined to be excluded from alerts. In the function call, add an array with the tags, SAP roles, and SAP profiles that you'd like to exclude. |
| 310 | + |
| 311 | +For example, use the following KQL query in your analytics rule to exclude any users configured with the *RunObsoleteProgOK* tag in the *SAP_User_Config* watchlist, or any users with the sample *SAP_BASIS_ADMIN_ROLE* role or the sample *SAP_ADMIN_PROFILE* profile. |
| 312 | + |
| 313 | +When copying this sample function call, replace *SAP_BASIS_ADMIN_ROLE* role and *SAP_ADMIN_PROFILE* profile with your own SAP roles or profiles as needed. |
304 | 314 |
|
305 | 315 | ```kusto
|
306 | 316 | // Execution of Obsolete/Insecure Program
|
307 | 317 | let ObsoletePrograms = _GetWatchlist("SAP - Obsolete Programs");
|
308 | 318 | // here you can exclude system users which are OK to run obsolete/ sensitive programs
|
309 | 319 | // by adding those users in the SAP_User_Config watchlist with a tag of 'RunObsoleteProgOK'
|
310 |
| -let excludeUsersTags= dynamic(['RunObsoleteProgOK']); |
311 |
| -let excludedUsers= SAPUsersGetVIP(SearchForTags= dynamic(["RunObsoleteProgOK"]))| summarize by User2Exclude=SAPUser; |
| 320 | +// can also specify SAP roles or SAP profiles that group the users you would like to exclude |
| 321 | +let excludeUsersTagsRolesProfiles= dynamic(["RunObsoleteProgOK","SAP_BASIS_ADMIN_ROLE", "SAP_ADMIN_PROFILE"]); |
| 322 | +let excludedUsers= SAPUsersGetVIP(SearchForTags= excludeUsersTagsRolesProfiles)| summarize by User2Exclude=SAPUser; |
312 | 323 | // Query logic
|
313 |
| -SAPAuditLog |
| 324 | +SAPAuditLog |
314 | 325 | | where MessageID == 'AUW'
|
315 | 326 | | where ABAPProgramName in (ObsoletePrograms) // The program is obsolete
|
316 | 327 | | join kind=leftantisemi excludedUsers on $left.User == $right.User2Exclude
|
317 | 328 | ```
|
318 | 329 |
|
319 |
| -This functionality is heavily used in the Deterministic and Anomalous Audit Log Monitor Alerts, 'where tags can be associated with SAP audit log message ID, and can also be easily extended to custom alert rules. |
| 330 | +The **SAPUsersGetVIP** function is commonly used in *Deterministic and Anomalous Audit Log Monitor* alerts. Associate a tag with an SAP audit log message ID, or extend the rule template to a custom rule that matches your organization's needs. |
| 331 | + |
| 332 | +> [!TIP] |
| 333 | +> We recommend that contacting your SAP system admin to understand which SAP users, roles, and profiles to include in your *SAP_User_Config* watchlist. |
| 334 | +> |
| 335 | +
|
320 | 336 | **Parameters:**
|
321 | 337 |
|
322 |
| -- SearchForTags |
323 |
| - - Optional |
324 |
| - - Default value: dynamic('All Tags') |
325 |
| - - When SearchForTags equals 'All Tags', all users are returned along with their tags, else, only users bearing the tags specified in SearchForTags are returned. TagsIntersect will show which tags were found, and IntersectionSize will hold the count of those. |
326 |
| -- SpecialFocusTags |
327 |
| - - Optional |
328 |
| - - Default value: "Do not return any in-focus users" |
329 |
| - - The function returns all users bearing the tags specified in SpecialFocusTags, and marked those with specialFocusTagged = true. |
| 338 | +|Name |Description |Default value | |
| 339 | +|---------|---------|---------| |
| 340 | +|**SearchForTags** (Optional) | When `SearchForTags` equals `All Tags`, all users are returned along with their tags. <br><br>Otherwise, only users bearing the tags, SAP roles, or SAP profiles specified in `SearchForTags` are returned. `TagsIntersect` shows the tags that are found, and `IntersectionSize` holds the number of tags that are found. | `dynamic('All Tags')` | |
| 341 | +|**SpecialFocusTags** (Optional) | Returns all users bearing the tags specified in `SpecialFocusTags`, and marked those with `specialFocusTagged = true`. | `Do not return any in-focus users` | |
| 342 | + |
330 | 343 |
|
331 | 344 | | Source | Field | Description | Notes
|
332 | 345 | | ------------- | ------------- | ------------- | -------------
|
333 |
| -| The "SAP User Config" watchlist | SearchKey | Search Key | |
334 |
| -| The "SAP User Config" watchlist | SAPUser | The SAP User | OSS, DDIC |
335 |
| -| The "SAP User Config" watchlist | Tags | string of tags assigned to user | RunObsoleteProgOK |
336 |
| -| The "SAP User Config" watchlist | User's Microsoft Entra Object ID | Microsoft Entra Object ID | |
337 |
| -| The "SAP User Config" watchlist | User Identifier | AD User Identifier | |
338 |
| -| The "SAP User Config" watchlist | User on-premises Sid | | |
339 |
| -| The "SAP User Config" watchlist | User Principal Name | | |
340 |
| -| The "SAP User Config" watchlist | TagsList | A list of tags assigned to user | ChangeUserMasterDataOK;RunObsoleteProgOK |
341 |
| -| Logic | TagsIntersect | A set of tags that matched SearchForTags | ["ChangeUserMasterDataOK","RunObsoleteProgOK"] |
| 346 | +| The *SAP_User_Config* watchlist | SearchKey | Search Key | |
| 347 | +| The *SAP_User_Config* watchlist | SAPUser | The SAP User | OSS, DDIC |
| 348 | +| The *SAP_User_Config* watchlist | Tags | String of tags assigned to user | RunObsoleteProgOK | |
| 349 | +| The *SAP_User_Config* watchlist | User's Microsoft Entra Object ID | Microsoft Entra Object ID | |
| 350 | +| The *SAP_User_Config* watchlist | User Identifier | AD User Identifier | |
| 351 | +| The *SAP_User_Config* watchlist | User on-premises Sid | | |
| 352 | +| The *SAP_User_Config* watchlist | User Principal Name | | |
| 353 | +| The *SAP_User_Config* watchlist | TagsList | A list of tags assigned to user | ChangeUserMasterDataOK;RunObsoleteProgOK | |
| 354 | +| Logic | TagsIntersect | A set of tags that matched SearchForTags | ["ChangeUserMasterDataOK","RunObsoleteProgOK"] | |
342 | 355 | | Logic | SpecialFocusTagged | Special focus indication | True, False
|
343 | 356 | | Logic | IntersectionSize | The number of intersected Tags |
|
344 | 357 |
|
@@ -366,6 +379,7 @@ SelectedSystemRoles:dynamic = dynamic(["All System Roles"]) SelectedSystems:dyna
|
366 | 379 | - Accepts a single user only
|
367 | 380 |
|
368 | 381 | #### Additional notes
|
| 382 | + |
369 | 383 | For performance considerations, only a few days of audit activity are considered.
|
370 | 384 | For a full history of user activity, run a custom KQL query against the SAPAuditLog function.
|
371 | 385 |
|
|
0 commit comments