Microsoft Sentinel のクエリとアクティビティを監査する
この記事では、Microsoft Sentinel ワークスペースで実行されるクエリとアクティビティの監査データを表示する方法について説明します。たとえば、セキュリティ運用 (SOC) ワークスペースでの内部および外部のコンプライアンス要件に対応します。
Microsoft Sentinel では次のアクセスが提供されます。
AzureActivity テーブル。警告ルールの編集など、Microsoft Sentinel で実行されるすべてのアクションに関する詳細を示します。 AzureActivity テーブルでは、特定のクエリ データは記録されません。 詳細については、「Azure アクティビティ ログを使用した監査」を参照してください。
LAQueryLogs テーブル。Microsoft Sentinel から実行されるクエリを含め、Log Analytics で実行されるクエリに関する詳細を示します。 詳細については、「LAQueryLogs を使用した監査」を参照してください。
ヒント
この記事で説明する手動クエリに加えて、組み込みのワークスペース監査ブックを使用して SOC 環境のアクティビティを監査することをお勧めします。 詳細については、「Microsoft Sentinel でブックを使用してデータを視覚化および監視する」を参照してください。
前提条件
この記事のサンプル クエリを正常に実行するには、事前に関連するデータを Microsoft Sentinel ワークスペースに用意して、クエリを実行し、Microsoft Sentinel にアクセスする必要があります。
詳細については、「Microsoft Sentinel のコンテンツを構成する」および「Microsoft Sentinel のロールとアクセス許可」を参照してください。
Azure アクティビティ ログを使用した監査
Microsoft Sentinel の監査ログは、Azure アクティビティ ログに保持されます。ここでは、Microsoft Sentinel ワークスペースで実行されるすべてのアクションが AzureActivity テーブルに含まれています。
Microsoft Sentinel で SOC 環境のアクティビティを監査する場合は、AzureActivity テーブルを使用します。
AzureActivity テーブルに対してクエリを実行するには:
Sentinel 用 Azure アクティビティ ソリューションをインストールし、Azure Activity データ コネクタを接続して、
AzureActivity
と呼ばれる新しいテーブルへの監査イベントのストリーミングを開始します。他のテーブルの場合と同様に、Kusto 照会言語 (KQL) を使用してデータに対してクエリを実行します。
- Azure portal の [ログ] ページでこのテーブルに対してクエリを実行します。
- Microsoft の統合セキュリティ オペレーション プラットフォームでは、[調査と応答] > [追求]>[高度な追求]でこのテーブルに対してクエリを実行します。
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 アクティビティ ログに保持され、次の種類の情報が含まれます。
Operation | 情報の種類 |
---|---|
作成済 | アラート ルール ケース コメント インシデント コメント 保存した検索条件 ウォッチリスト Workbooks |
Deleted | アラート ルール ブックマーク データ コネクタ インシデント 保存した検索条件 設定 脅威インテリジェンス レポート ウォッチリスト Workbooks ワークフロー |
更新 | アラート ルール ブックマーク ケース データ コネクタ インシデント インシデント コメント 脅威インテリジェンス レポート Workbooks ワークフロー |
また、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 でクエリを実行したユーザー
- Microsoft Sentinel など、Log Analytics でクエリの実行に使われたツール
- クエリ テキスト自体
- 各クエリ実行のパフォーマンス データ
注意
LAQueryLogs テーブルには、Microsoft Sentinel の [ログ] ブレードで実行されたクエリのみが含まれます。 調査グラフを使って、Microsoft Sentinel の [ハンティング] ページまたは Defender ポータルの [高度なハンティング] ページで、スケジュールされた分析ルールによって実行されるクエリは含まれません。
クエリが実行されてから、LAQueryLogs テーブルにデータが設定されるまでに、短い遅延が発生する場合があります。 LAQueryLogs テーブルの監査データに対してクエリを実行するには、約 5 分間待つことをお勧めします。
LAQueryLogs テーブルに対してクエリを実行するには、次の手順に従います。
現在の Log Analytics ワークスペースでは、LAQueryLogs テーブルは既定で有効になっていません。 Microsoft Sentinel で監査するときに LAQueryLogs データを使うには、まず、Log Analytics ワークスペースの [診断設定] 領域で LAQueryLogs を有効にします。
詳細については、「Azure Monitor ログでのクエリの監査」を参照してください。
次に、他のテーブルの場合と同様に、KQL を使用してデータに対してクエリを実行します。
たとえば、次のクエリは、過去 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
| order 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 でのインシデント処理を自動化する」を参照してください。
Connector Health Push Notification Solution プレイブックを使用してデータ コネクタの正常性を監視し、停滞または停止しているインジェストがないかどうかを監視し、コネクタがデータの収集を停止したとき、またはマシンがレポートを停止したときに通知を送信します。
次のステップ
Microsoft Sentinel でワークスペース監査ブックを使って、SOC 環境のアクティビティを監査します。 詳細については、「データの視覚化と監視」を参照してください。