Microsoft Sentinelクエリとアクティビティを監査する

この記事では、セキュリティ操作 (SOC) ワークスペースの内部および外部のコンプライアンス要件など、Microsoft Sentinel ワークスペースで実行されるクエリとアクティビティの監査データを表示する方法について説明します。

Microsoft Sentinelは、次へのアクセスを提供します。

  • アラート ルールの編集など、Microsoft Sentinelで実行されたすべてのアクションの詳細を示す AzureActivity テーブル。 AzureActivity テーブルでは、特定のクエリ データはログに記録されません。 詳細については、「Azure アクティビティ ログを使用した監査」を参照してください。

  • LAQueryLogs テーブル。これは、Log Analytics で実行されるクエリに関する詳細を提供します。これには、Microsoft Sentinelから実行されるクエリも含まれます。 詳細については、「 LAQueryLogs での監査」を参照してください。

ヒント

この記事で説明されている手動クエリに加えて、SOC 環境でのアクティビティの監査に役立つ組み込みの ワークスペース監査 ブックを使用することをお勧めします。 詳細については、「Microsoft Sentinelのブックを使用してデータを視覚化および監視する」を参照してください。

前提条件

Azure アクティビティ ログを使用した監査

Microsoft Sentinelの監査ログは、Azure アクティビティ ログに保持されます。AzureActivity テーブルには、Microsoft Sentinel ワークスペースで実行されたすべてのアクションが含まれます。

Microsoft Sentinelを使用して SOC 環境のアクティビティを監査する場合は、AzureActivity テーブルを使用します。

AzureActivity テーブルに対してクエリを実行するには:

  1. Sentinel ソリューションのAzure アクティビティ ソリューションをインストールし、Azure アクティビティ データ コネクタを接続して、監査イベントのストリーミングを開始し、AzureActivityという新しいテーブルに接続します。

  2. 他のテーブルと同様に、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 テーブルに対してクエリを実行するには:

  1. LAQueryLogs テーブルは、Log Analytics ワークスペースでは既定では有効になっていません。 Microsoft Sentinelで監査するときに LAQueryLogs データを使用するには、まず Log Analytics ワークスペースの [診断設定] 領域で LAQueryLogs を有効にします。

    詳細については、「Azure Monitor ログでのクエリの監査」を参照してください。

  2. 次に、他のテーブルと同様に、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 のドキュメントを参照してください。

KQL の詳細については、「Kusto 照会言語 (KQL) の概要」を参照してください。

その他のリソース:

次の手順

Microsoft Sentinelで、ワークスペース監査ブックを使用して、SOC 環境のアクティビティを監査します。 詳細については、「 データの視覚化と監視」を参照してください。