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 |
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 つのタグを割り当てることができます。
SAP_User_Config ウォッチリストのユーザーに次のようにタグ付けします。
さまざまなシナリオに対応するために必要に応じて、SAP_User_Configウォッチリストの各ユーザーに複数のタグを追加します。 各アラート ルールには、関連する独自のタグ (存在する場合) があり、必要に応じてカスタム タグを追加できます。
特定の名前付け構文テンプレートを持つユーザーを含めるには、ワイルドカードとしてアスタリスク (*) を使用します。
分析ルールに 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 | ユーザーのマスター データから取得 | 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 |
関連するコンテンツ
詳細については、以下を参照してください: