この記事では、セキュリティ操作 (SOC) ワークスペースの内部および外部のコンプライアンス要件など、Microsoft Sentinel ワークスペースで実行されるクエリとアクティビティの監査データを表示する方法について説明します。
Microsoft Sentinelは、次へのアクセスを提供します。
アラート ルールの編集など、Microsoft Sentinelで実行されたすべてのアクションの詳細を示す AzureActivity テーブル。 AzureActivity テーブルでは、特定のクエリ データはログに記録されません。 詳細については、「Azure アクティビティ ログを使用した監査」を参照してください。
LAQueryLogs テーブル。これは、Log Analytics で実行されるクエリに関する詳細を提供します。これには、Microsoft Sentinelから実行されるクエリも含まれます。 詳細については、「 LAQueryLogs での監査」を参照してください。
ヒント
この記事で説明されている手動クエリに加えて、SOC 環境でのアクティビティの監査に役立つ組み込みの ワークスペース監査 ブックを使用することをお勧めします。 詳細については、「Microsoft Sentinelのブックを使用してデータを視覚化および監視する」を参照してください。
前提条件
この記事のサンプル クエリを正常に実行するには、Microsoft Sentinel ワークスペースに関連するデータを使用してクエリを実行し、Microsoft Sentinelにアクセスする必要があります。
詳細については、「Microsoft Sentinelコンテンツの構成」および「Microsoft Sentinelでのロールとアクセス許可」を参照してください。
Azure アクティビティ ログを使用した監査
Microsoft Sentinelの監査ログは、Azure アクティビティ ログに保持されます。AzureActivity テーブルには、Microsoft Sentinel ワークスペースで実行されたすべてのアクションが含まれます。
Microsoft Sentinelを使用して SOC 環境のアクティビティを監査する場合は、AzureActivity テーブルを使用します。
AzureActivity テーブルに対してクエリを実行するには:
Sentinel ソリューションのAzure アクティビティ ソリューションをインストールし、Azure アクティビティ データ コネクタを接続して、監査イベントのストリーミングを開始し、
AzureActivityという新しいテーブルに接続します。他のテーブルと同様に、Kusto 照会言語 (KQL) を使用してデータにクエリを実行します。
- Azure portalで、[ログ] ページでこのテーブルに対してクエリを実行します。
- Defender ポータルの [調査] & 応答の [ハンティング>Advanced ハンティング] ページ>このテーブルに対してクエリを実行します。
AzureActivity テーブルには、Microsoft Sentinelを含む多くのサービスからのデータが含まれています。 Microsoft Sentinelからのデータのみをフィルター処理するには、次のコードを使用してクエリを開始します。
AzureActivity | where OperationNameValue startswith "MICROSOFT.SECURITYINSIGHTS"たとえば、特定の分析ルールを編集する最後のユーザーを確認するには、次のクエリを使用します (
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxを、チェックするルールのルール ID に置き換えます)。AzureActivity | where OperationNameValue startswith "MICROSOFT.SECURITYINSIGHTS/ALERTRULES/WRITE" | where Properties contains "alertRules/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" | project Caller , TimeGenerated , Properties
レポートする必要がある内容に応じて、 さらに AzureActivities テーブルを調べるパラメーターをクエリに追加します。 次のセクションでは、 AzureActivity テーブル データを監査するときに使用するその他のサンプル クエリについて説明します。
詳細については、「Azure アクティビティ ログに含まれるデータのMicrosoft Sentinel」を参照してください。
過去 24 時間以内に特定のユーザーが実行したすべてのアクションを検索する
次の AzureActivity テーブル クエリでは、過去 24 時間以内に特定のMicrosoft Entra ユーザーによって実行されたすべてのアクションが一覧表示されます。
AzureActivity
| where OperationNameValue contains "SecurityInsights"
| where Caller == "[AzureAD username]"
| where TimeGenerated > ago(1d)
すべての削除操作を検索する
次の AzureActivity テーブル クエリには、Microsoft Sentinel ワークスペースで実行されたすべての削除操作が一覧表示されます。
AzureActivity
| where OperationNameValue contains "SecurityInsights"
| where OperationName contains "Delete"
| where ActivityStatusValue contains "Succeeded"
| project TimeGenerated, Caller, OperationName
Azure アクティビティ ログに含まれるMicrosoft Sentinel データ
Microsoft Sentinelの監査ログは、Azure アクティビティ ログに保持され、次の種類の情報が含まれます。
| 操作 | 情報の種類 |
|---|---|
| Created | アラート ルール ケースコメント インシデントのコメント 保存された検索 ウォッチリスト ブック |
| Deleted | アラート ルール ブックマーク データ コネクタ インシデント 保存された検索 Settings 脅威インテリジェンス レポート ウォッチリスト ブック ワークフロー |
| Updated | アラート ルール ブックマーク 場合 データ コネクタ インシデント インシデントのコメント 脅威インテリジェンス レポート ブック ワークフロー |
また、Azure アクティビティ ログを使用して、ユーザーの承認とライセンスをチェックすることもできます。 たとえば、次の表は、ログ データの取得元の特定のリソースAzureアクティビティ ログで検出された選択された操作の一覧です。
| 操作名 | リソースの種類 |
|---|---|
| ブックを作成または更新する | Microsoft.Insights/workbooks |
| ブックを削除する | Microsoft.Insights/workbooks |
| ワークフローの設定 | Microsoft.Logic/workflows |
| ワークフローを削除する | Microsoft.Logic/workflows |
| 保存した検索を作成する | Microsoft.OperationalInsights/workspaces/savedSearches |
| 保存した検索を削除する | Microsoft.OperationalInsights/workspaces/savedSearches |
| アラート ルールを更新する | Microsoft.SecurityInsights/alertRules |
| アラート ルールを削除する | Microsoft.SecurityInsights/alertRules |
| アラート ルールの応答アクションを更新する | Microsoft.SecurityInsights/alertRules/actions |
| アラート ルールの応答アクションを削除する | Microsoft.SecurityInsights/alertRules/actions |
| ブックマークを更新する | Microsoft.SecurityInsights/bookmarks |
| ブックマークを削除する | Microsoft.SecurityInsights/bookmarks |
| ケースの更新 | Microsoft.SecurityInsights/Cases |
| ケース調査の更新 | Microsoft.SecurityInsights/Cases/investigations |
| ケース コメントを作成する | Microsoft.SecurityInsights/Cases/comments |
| データ コネクタを更新する | Microsoft.SecurityInsights/dataConnectors |
| データ コネクタを削除する | Microsoft.SecurityInsights/dataConnectors |
| 設定を更新する | Microsoft.SecurityInsights/settings |
詳細については、「アクティビティ ログ イベント スキーマのAzure」を参照してください。
LAQueryLogs を使用した監査
LAQueryLogs テーブルには、Log Analytics で実行されるログ クエリの詳細が示されています。 Log Analytics はMicrosoft Sentinelの基になるデータ ストアとして使用されるため、Microsoft Sentinel ワークスペースで LAQueryLogs データを収集するようにシステムを構成できます。
LAQueryLogs データには、次のような情報が含まれます。
- クエリが実行されたとき
- Log Analytics でクエリを実行したユーザー
- Log Analytics でクエリを実行するために使用されたツール (Microsoft Sentinelなど)
- クエリ テキスト自体
- 各クエリ実行のパフォーマンス データ
注:
LAQueryLogs テーブルには、Microsoft Sentinelの [ログ] ブレードで実行されたクエリのみが含まれます。 スケジュールされた分析ルールによって実行されるクエリ、調査グラフ、Microsoft Sentinelハンティング ページ、Defender ポータルの [高度なハンティング] ページには含まれません。
クエリが実行されてから LAQueryLogs テーブルにデータが設定されるまでに、短い遅延が発生する可能性があります。 LAQueryLogs テーブルに監査データのクエリを実行するには、約 5 分待つ必要があります。
LAQueryLogs テーブルに対してクエリを実行するには:
LAQueryLogs テーブルは、Log Analytics ワークスペースでは既定では有効になっていません。 Microsoft Sentinelで監査するときに LAQueryLogs データを使用するには、まず Log Analytics ワークスペースの [診断設定] 領域で LAQueryLogs を有効にします。
詳細については、「Azure Monitor ログでのクエリの監査」を参照してください。
次に、他のテーブルと同様に、KQL を使用してデータにクエリを実行します。
たとえば、次のクエリは、過去 1 週間に実行されたクエリの数を 1 日ごとに示しています。
LAQueryLogs | where TimeGenerated > ago(7d) | summarize events_count=count() by bin(TimeGenerated, 1d)
次のセクションでは、Microsoft Sentinelを使用して SOC 環境のアクティビティを監査するときに LAQueryLogs テーブルで実行するサンプル クエリについて説明します。
応答が "OK" ではない場合に実行されるクエリの数
次の LAQueryLogs テーブル クエリは、 200 OK の HTTP 応答以外のものが受信された、実行されるクエリの数を示しています。 たとえば、この数には、実行に失敗したクエリが含まれます。
LAQueryLogs
| where ResponseCode != 200
| count
CPU 集中型クエリのユーザーを表示する
次の LAQueryLogs テーブル クエリは、CPU 使用率とクエリ時間の長さに基づいて、最も CPU 集中型のクエリを実行したユーザーの一覧を示しています。
LAQueryLogs
|summarize arg_max(StatsCPUTimeMs, *) by AADClientId
| extend User = AADEmail, QueryRunTime = StatsCPUTimeMs
| project User, QueryRunTime, QueryText
| sort by QueryRunTime desc
過去 1 週間に最も多くのクエリを実行したユーザーを表示する
次の LAQueryLogs テーブル クエリには、過去 1 週間に最も多くのクエリを実行したユーザーが一覧表示されます。
LAQueryLogs
| where TimeGenerated > ago(7d)
| summarize events_count=count() by AADEmail
| extend UserPrincipalName = AADEmail, Queries = events_count
| join kind= leftouter (
SigninLogs)
on UserPrincipalName
| project UserDisplayName, UserPrincipalName, Queries
| summarize arg_max(Queries, *) by UserPrincipalName
| sort by Queries desc
Microsoft Sentinel アクティビティのアラートの構成
Microsoft Sentinel監査リソースを使用して、プロアクティブなアラートを作成できます。
たとえば、Microsoft Sentinel ワークスペースに機密性の高いテーブルがある場合は、次のクエリを使用して、それらのテーブルがクエリされるたびに通知します。
LAQueryLogs
| where QueryText contains "[Name of sensitive table]"
| where TimeGenerated > ago(1d)
| extend User = AADEmail, Query = QueryText
| project User, Query
ブック、ルール、プレイブックを使用してMicrosoft Sentinelを監視する
Microsoft Sentinel独自の機能を使用して、Microsoft Sentinel内で発生するイベントとアクションを監視します。
ブックを使用して監視します。 組み込みのMicrosoft Sentinelブックは、ワークスペースで作業しているユーザーに関する情報、使用されている分析ルール、最もカバーされている MITRE 戦術、ストールまたは停止されたインジェスト、SOC チームのパフォーマンスなど、ワークスペース アクティビティを監視するのに役立ちます。
詳細については、「Microsoft Sentinelのブックと一般的に使用されるブックを使用してデータを視覚化および監視する」Microsoft Sentinel参照してください。
インジェストの遅延を監視します。 インジェストの遅延に関する懸念がある場合は、 分析ルールで遅延を表す変数を設定します 。
たとえば、次の分析ルールは、結果に重複が含まれていないことを確認し、ルールの実行時にログを見逃さないようにするのに役立ちます。
let ingestion_delay= 2min;let rule_look_back = 5min;CommonSecurityLog| where TimeGenerated >= ago(ingestion_delay + rule_look_back)| where ingestion_time() > (rule_look_back) - Calculating ingestion delay CommonSecurityLog| extend delay = ingestion_time() - TimeGenerated| summarize percentiles(delay,95,99) by DeviceVendor, DeviceProduct詳細については、「自動化ルールを使用したMicrosoft Sentinelでのインシデント処理の自動化」を参照してください。
コネクタ正常性プッシュ通知ソリューションプレイブックを使用してデータ コネクタの正常性を監視し、ストールまたは停止したインジェストを監視し、コネクタがデータの収集を停止したか、コンピューターがレポートを停止したときに通知を送信します。
前の例で使用した次の項目の詳細については、Kusto のドキュメントを参照してください。
- let ステートメント
- where 演算子
- project 演算子
- count 演算子
- sort 演算子
- extend 演算子
- join 演算子
- summarize 演算子
- ago() 関数
- ingestion_time() 関数
- count() 集計関数
- arg_max() 集計関数
KQL の詳細については、「Kusto 照会言語 (KQL) の概要」を参照してください。
その他のリソース:
次の手順
Microsoft Sentinelで、ワークスペース監査ブックを使用して、SOC 環境のアクティビティを監査します。 詳細については、「 データの視覚化と監視」を参照してください。