SAP アプリケーション用の Microsoft Sentinel ソリューション - 関数リファレンス

この記事では、SAP アプリケーション用の Microsoft Sentinel ソリューションをインストールした後にワークスペースで使用できる関数の選択について説明します。 Microsoft Sentinel で参照し、関数コードを読み込むことで、その他の関数を検出します。

次のように関数を検索します。

  • Azure portal の [全般ログ] ページの [関数] タブで、[ワークスペース関数] の下に一覧表示されます。>
  • Defender ポータルの [調査と応答>の高度なハンティング] ページの [関数] タブで、[Sentinel ワークスペース関数] の下に一覧表示されます。

この記事の内容は、セキュリティ チームを対象としています。

基になるログやテーブルの代わりにクエリで関数を使用する

この記事に記載されている関数は、基になるログまたはテーブルではなく、可能な限り分析の対象として使用することを強くお勧めします

これらの関数は、データのプリンシパル ユーザー インターフェイスとして機能することを意図しています。 これらは、既定で使用できるすべての組み込みの分析ルールとブックの基礎を形成しています。 関数を使用すると、ユーザーが作成したコンテンツを中断することなく、関数の下のデータ インフラストラクチャに変更を加えることができます。

SAPUsersAssignments

SAPUsersAssignments 関数は、複数の SAP データ ソースからデータを収集し、現在割り当てられているロールとプロファイルを含む、現在のユーザー マスター データのユーザー中心のビューを作成します。

この関数は、ロールとプロファイルへのユーザーの割り当てをまとめて、次のデータを返します。

フィールド 説明 データ ソース/メモ
User SAP ユーザー ID SAL のみ
電子メール SMTP アドレス USR21 (SMTP_ADDR)
UserType ユーザー タイプ USR02 (USTYP)
タイム ゾーン タイム ゾーン USR02 (TZONE)
LockedStatus ロックの状態 USR02 (UFLAG)
LastSeenDate 最終表示日 USR02 (TRDAT)
LastSeenTime 最終表示時刻 USR02 (LTIME)
UserGroupAuth ユーザー マスター メンテナンスのユーザー グループ USR02 (CLASS)
Profiles プロファイルのセット (既定の最大セット サイズ = 50) ["Profile 1", "Profile 2",...,"profile 50"]
DirectRoles 直接割り当てられるロールのセット (既定の最大セット サイズ = 50) ["Role 1", "Role 2",...,"”"Role 50"]
ChildRoles 間接的に割り当てられるロールのセット (既定の最大セット サイズ = 50) ["Role 1", "Role 2",...,"”"Role 50"]
Client クライアント ID
SystemID システム ID コネクタに定義されているとおり

SAPUsersGetPrivileged

SAPUsersGetPrivileged 関数は、クライアントおよびシステム ID ごとの特権ユーザーの一覧を返します。

ユーザーは、次の説明のいずれかに一致すると特権を持つと見なされます。

  • これらは SAP - Privileged Users ウォッチリストに一覧表示されます
  • SAP - 機密プロファイルウォッチリストに一覧表示されているプロファイルに割り当てられます
  • SAP - 機密ロールウォッチリストに一覧表示されているロールに追加されます

パラメーター:

Name 省略可/必須 既定値 説明
TimeAgo 省略可能 7 日 値によって定義された時刻から値によって TimeAgo 定義された時刻まで、関数がユーザーマスター データを now() シークすることを決定します。

SAPUsersGetPrivileged 関数は、次のデータを返します。

フィールド 説明
User SAP ユーザー ID
Client クライアント ID
SystemID システム ID

SAPUsersAuthorizations

SAPUsersAuthorizations 関数は、複数のテーブルのデータをまとめて、割り当てられている現在のロールと認可のユーザー中心のビューを生成します。 アクティブなロールと認可の割り当てを持つユーザーのみが返されます。

パラメーター:

Name 省略可/必須 既定値 説明
TimeAgo 省略可能 7 日 値によって定義された時刻から値によって TimeAgo 定義された時刻まで、関数がユーザーマスター データを now() シークすることを決定します。

SAPUsersAuthorizations 関数は、次のデータを返します。

フィールド 説明 Notes
User SAP ユーザー ID
ロール ロールのセット (既定の最大セット サイズ = 50) ["Role 1", "Role 2",...,"Role 50"]
AuthorizationsDetails 認可のセット (既定の最大セット サイズ = 100) {{AuthorizationsDeatils1},
{AuthorizationsDeatils2},
...,
{AuthorizationsDeatils100}}
Client クライアント ID
SystemID システム ID

SAPConnectorHealth

SAPConnectorHealth 関数には、エージェントと、基になる SAP システムの接続の状態が反映されます。 ハートビート ログ SAP_HeartBeat_CL と他の正常性インジケーターに基づいて、次のデータが返されます。

フィールド 説明
エージェント エージェントの構成内のエージェント ID (自動的に生成)
SystemID SAP システム ID
Status 全体的な接続状態
詳細 接続に関する詳細
ExtendedDetails 接続の拡張詳細
LastSeen 最新のアクティビティのタイムスタンプ
StatusCode システムの状態を反映するコード

SAPConnectorOverview

SAPConnectorOverview 関数は、各 SAP テーブルのシステム ID ごとの行数を表示します。 システム ID ごとのデータ レコードと、その生成時間の一覧を返します。

パラメーター:

Name 省略可/必須 既定値 説明
TimeAgo 省略可能 7 日 値によって定義された時刻から値によって TimeAgo 定義された時刻まで、関数がユーザーマスター データを now() シークすることを決定します。

SAPConnectorOverview 関数は、次のデータを返します。

フィールド 説明
TimeGenerated レコードが生成されたタイムスタンプの datetime 値
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 が返されます。

この動作により、DDIC などの SAP サービス アカウント (多くの場合、電子メール アドレスに関連付けられていない) が擬似 AD アカウントとしてログに記録されます。 これにより、一部の UEBA 機能も開かれ、インシデントや狩猟アクティビティの調査に役立ちます。

SAPUsersEmail 関数は、次のデータを返します。

フィールド Description
ClientID SAP クライアント ID
SystemID SAP システム ID
User SAP ユーザー ID
Email SAP ユーザーの電子メール アドレス

SAPSystems

SAPSystems 関数は、SAP - Systems ウォッチリストを使用して行われたシステムごとの構成を一元的に表示するために使用されます。

パラメーター:

Name 省略可/必須 既定値 説明
SelectedSystems 省略可能 All Systems 特定の SAP システムをフィルター処理するために使用されます
SelectedSystemRoles 省略可能 All System Roles SAP - Systems ウォッチリストで定義されているように、参照する SAP システムのロールを決定します

SAPSystems 関数は、次のデータを返します。

フィールド 説明 データ ソース/メモ
SearchKey 検索キー SAP システム ID のインデックス付きフィールド
SystemRole SAP システムの役割 運用、UAT
SystemUsage SAP システムの主な使用 ERP、CRM
SystemID SAP システム ID

SAPAuditLogConfiguration

SAPAuditLogConfiguration 関数は、Microsoft Sentinel で有効になっている Log Analytics ワークスペースに SAP 監査ログ アラートのローカル構成を返します。 この構成は、SAP 監査ログ関連のアラートに使用されます。

SAPAuditLogConfiguration 関数は、SAP 動的監査ログ モニター構成SAP - システム ウォッチリストのデータを結合して、システムロールごとの作業でシステムごとの構成を提供します。

パラメーター:

Name 省略可/必須 既定値 説明
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 割り当てられたチームのメール アドレス SAP 動的監査ログ モニター構成 ウォッチリスト
DetailedDescription アラートに表示されるマークダウン形式のテキスト メッセージ SAP 動的監査ログ モニター構成 ウォッチリスト
MessageID SAP 監査ログ メッセージ ID SAP 動的監査ログ モニター構成 ウォッチリスト
[MessageText] サンプル メッセージ テキスト SAP 動的監査ログ モニター構成 ウォッチリスト
RolesTagsToExclude ABAP ロール、プロファイル、またはフリー テキスト タグ SAP 動的監査ログ モニター構成 ウォッチリスト
RuleType 異常または決定論的 SAP 動的監査ログ モニター構成 ウォッチリスト
方針 MITRE ATTA>CK 戦術 SAP 動的監査ログ モニター構成 ウォッチリスト
TeamsChannelID Teams チャンネル SAP 動的監査ログ モニター構成 ウォッチリスト
SystemID SAP システム ID SAP - Systems ウォッチリスト
SystemRole SAP システムのロール SAP - Systems ウォッチリスト
SystemUsage SAP システムの主な使用 SAP - Systems ウォッチリスト
IsProd 運用システム フラグ SAP - Systems ウォッチリスト
重要度 派生重大度 システム使用量あたりの重大度
しきい値 派生しきい値 システム使用状況ごとのイベント数
BagOfDetails BagOfDetails イベント定義の詳細を示すディクショナリ

詳細については、「使用可能なウォッチリスト」を参照してください

SAPAuditLogAnomalies

SAPAuditLogAnomalies 関数は、Microsoft Sentinel の基になる Kusto データベースの組み込みの機械学習機能を使用して、SAP 監査ログで観察された異常なイベントを検出するのに役立ちます。

SAPAuditLogAnomalies 関数は、SAP - (試験段階) 動的異常ベースの監査ログ モニター アラート分析ルール用に開発されました。 元の設計は最近の異常に関するアラートですが、過去の異常を強調するのにも役立ちます。 詳細については、「サンプルの使用」を参照してください

SAPAuditLogAnomalies 関数は、さまざまな入力パラメーターによって定義された履歴のスライスを次のレベルで学習します。

  • User
  • ネットワーク属性
  • System
  • 季節性
  • アクティビティ レベル

次に、SAPAuditLogAnomalies 関数は、学習した内容に従って最後DetectingTimeの期間に発生したイベントを判断し、SAP 監査ログ構成ウォッチリストから取得されたしきい値とその他の構成可能な除外基準を適用します。

ユーザー アクティビティのスライディング ウィンドウが異常と見なされると、2 番目のクエリは、決定をサポートする証拠としてユーザー アクティビティ全体を返します。

パラメーター:

Name 省略可/必須 既定値 説明
LearningTime 省略可能 14 日 モデル学習に使用される期間を決定します。
DetectingTime 省略可能 1 時間 異常を検出するために確認する期間を決定します。 この関数を DetectingTime = 0h 呼び出すと、期間全体 LearningTime の異常が強調表示されます。
SelectedSystems 省略可能 All Systems 特定の SAP システムをフィルター処理するために使用され参照します。
SelectedSystemRoles 省略可能 All System Roles SAP - Systems ウォッチリストで定義されているように、参照する 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 からの複数のフィールド Microsoft Sentinel for SAP 監査ログ構成のキー フィールド
DiscoveredOn 異常が観察された丸められた時間
EventCount 返された行ごとにカウントされるイベントの数
AnomalCount 関連するスライディング ウィンドウ内で観察されたイベントの数
MinTime 観察された最初のイベントの時刻
MaxTime 最後に観察されたイベントの時刻
スコア 異常モデルによって生成される異常スコア

レコメンデーション:

他の機械学習ソリューションと同様に 、SAPAuditLogAnomalies 関数は時間と共にパフォーマンスが向上し、時間が経つにつれて必要に応じて調整できます。

使用可能な多くの入力パラメーターを使用して、学習したデータベースのサイズを 1 億レコード以下に制限することをお勧めします。

サンプルの用途は次のとおりです

  • SAP_Dynamic_Audit_Log_Monitor_Configuration ウォッチリストで AnomaliesOnly としてマークされているイベントの種類について、実稼働システムで過去 1 時間以内に発生した重大度の高いイベントの異常を検索するには、次を実行します。

    SAPAuditLogAnomalies(LearningTime = 14d, DetectingTime=1h, SelectedSystemRoles= dynamic(["Production"]), 
    SelectedSeverities= dynamic(["High"]), SelectedRuleTypes= dynamic(["AnomaliesOnly"]))
    
  • BIP システムで過去 14 日間のすべての異常を検索するには、次のコマンドを実行します。

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

詳細については、Microsoft Sentinel for SAP ソリューション (ブログ) を使用して SAP 監査ログと SAP 監査ログの異常検出を監視するための組み込みの SAP 分析ルールを参照してください。

SAPAuditLogConfigRecommend

SAPAuditLogConfigRecommend は、SAP - 動的異常ベースの監査ログ モニター アラート (プレビュー) 分析ルールの構成に関する推奨事項を提供するように設計されたヘルパー関数です。

詳細については、SAP 監査ログの監視を参照してください

SAPUsersGetVIP

SAP アプリケーション用の Microsoft Sentinel ソリューションでは、集中ユーザーのタグ付けと明示的な除外の概念を使用します。これは、最小限の労力で誤検知を減らすのに役立ちます。

SAPUsersGetVIP 関数を使用して、SAP ユーザー ロール、SAP ユーザー関数、またはそれらのユーザーを表すタグを指定して、ユーザーをアラートのトリガーから除外します。 詳細については、「Microsoft Sentinel での擬陽性の処理」を参照してください。

SAPUsersGetVIP 関数の入力として指定されたタグは、SAP_User_Configウォッチリストにリストされているタグを持つすべてのユーザーを除外します。 同じ機能がワイルドカードを使用するように拡張されているため、同じ名前付け構文を持つユーザーのグループに 1 つのタグを割り当てることができます。

  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_User_Configウォッチリストに含める SAP ユーザー、ロール、プロファイルについては、SAP システム管理者に問い合わせてください。

パラメーター:

Name 省略可/必須 既定値 説明
SearchForTags 省略可能 dynamic('All Tags') 等しいAll Tags場合SearchForTags、すべてのユーザーがタグと共に返されます。

それ以外の場合は、指定されたタグ、SAP ロール、または SAP プロファイルを SearchForTags 持つユーザーのみが返されます。 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ウォッチリスト ユーザー ID Azure Directory ユーザー識別子
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 アドレスが返されます。

パラメーター:

Name 省略可/必須 既定値 説明
SelectedSystems 省略可能 All Systems 特定の SAP システムをフィルター処理して確認するために使用されます。
SelectedSystemRoles 省略可能 All System Roles SAP - Systems ウォッチリストで定義されているように、参照する SAP システムのロールを決定します。
SelectedUsers 省略可能 All Users ユーザーのリストを入力できます。
SelectedUser 省略可能 All Users 1 人のユーザーのみを受け入れます。

次に例を示します。

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

ヒント

パフォーマンスに関する考慮事項として、数日間の監査アクティビティのみが考慮されます。 ユーザー アクティビティの完全な履歴については、SAPAuditLog 関数に対してカスタム KQL クエリを実行します。

SAPUsersHeader 関数は、次の出力を返します。

ソース フィールド 説明 Notes
User SAP ユーザー
SAP テーブル ADR6 と USR21 Email ユーザーのマスター データから取得 OSS、DDIC
SAP テーブル USR02 UserType ユーザーに割り当てられたタグの文字列 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 最も頻繁に使用されるメール アドレス True, False
SAP 監査ログ KnownIPs 既知の IP アドレスの一覧 最も頻繁に最初に並べ替えられる
SAP 監査ログ KnownEmails 既知のメール アドレスの一覧 最も頻繁に最初に並べ替えられる
Client SAP クライアント ID
SystemID SAP システム ID
SystemRole SAP システムの役割 運用、UAT
SystemUsage SAP システムの主な使用 ERP、CRM

詳細については、以下を参照してください: