セキュリティ: runHuntingQuery

名前空間: microsoft.graph.security

Microsoft 365 Defender でサポートされているイベント、アクティビティ、またはエンティティ データの指定したセットに対してクエリを実行して、環境内の特定の脅威を事前に検索します。

このメソッドは、Microsoft 365 Defender の高度な捜索用です。 このメソッドには、Kusto 照会言語 (KQL) でのクエリが含まれています。 高度な捜索スキーマのデータ テーブルと、そのデータをフィルター処理または検索し、クエリ出力を特定の方法で書式設定するためのパイプされた一連の演算子を指定します。

デバイス、メール、アプリ、ID を横断した脅威の捜索について詳しく説明します。 KQL について説明します。

Microsoft 365 Defender ポータルでの高度な捜索の使用については、「Microsoft 365 Defender の高度な捜索を使用して脅威を事前にハンティングする」を参照してください。

この API は、次の国内クラウド展開で使用できます。

グローバル サービス 米国政府機関 L4 米国政府機関 L5 (DOD) 21Vianet が運営する中国

アクセス許可

この API の最小特権としてマークされているアクセス許可またはアクセス許可を選択します。 アプリで必要な場合にのみ、より高い特権のアクセス許可またはアクセス許可を使用します。 委任されたアクセス許可とアプリケーションのアクセス許可の詳細については、「アクセス許可の種類」を参照してください。 これらのアクセス許可の詳細については、「アクセス許可のリファレンス」を参照してください。

アクセス許可の種類 最小特権アクセス許可 より高い特権のアクセス許可
委任 (職場または学校のアカウント) ThreatHunting.Read.All 注意事項なし。
委任 (個人用 Microsoft アカウント) サポートされていません。 サポートされていません。
アプリケーション ThreatHunting.Read.All 注意事項なし。

HTTP 要求

POST /security/runHuntingQuery

要求ヘッダー

名前 説明
Authorization ベアラー {token}。 必須です。 認証と認可についての詳細をご覧ください。
Content-Type application/json. Required.

注:

たとえば、形式が正しくない文字または類似文字を含むメールの件名をクエリする場合など、クエリで ANSI 以外の文字を使用している場合は、Content-Type ヘッダーに application/json; charset=utf-8 を使用します。

要求本文

リクエストの本文には、 Query プロパティを持つ JSON オブジェクトを指定します。必要に応じて、 Timespan プロパティと workspaceId プロパティを含めます。

パラメーター 説明
クエリ String 必須です。 Kusto 照会言語 (KQL) でのハンティング クエリ。 詳細については、「 KQL クイック リファレンス」を参照してください。
期間 String 省略可能。 データを照会する時間間隔 (ISO 8601 形式)。 既定値は 30 日です。つまり、startTime が指定されていない場合、クエリは現在 30 日後をさかのぼります。 クエリと startTime パラメーターの両方に時間フィルターが指定されている場合は、短い方の期間が適用されます。 たとえば、クエリに過去 7 日間のフィルターが含まれていて、startTime が 10 日前である場合、クエリは 7 日間のみを遡ります。
workspaceId Guid 省略可能。 ターゲットとする特定の Log Analytics ワークスペースの GUID。 省略した場合、サービスは呼び出し元のプライマリ ワークスペースを使用します。 ワークスペースが見つからないかアクセスできない場合、サービスは呼び出し元のプライマリ ワークスペースにフォールバックします。 00000000-0000-0000-0000-000000000001

次の例は、 Timespan パラメーターの可能な形式を示しています。

  • 日付/日付: "2024-02-01T08:00:00Z/2024-02-15T08:00:00Z" - 開始日と終了日。
  • 期間/終了日: "P30D/2024-02-15T08:00:00Z" - 終了日の前の期間。
  • 開始/期間: "2024-02-01T08:00:00Z/P30D" - 開始日と期間。
  • ISO8601期間: "P30D" - 現在からの期間。
  • 単一の日付/時刻: "2024-02-01T08:00:00Z" - 開始時刻、終了時刻が既定で現在の時刻に設定されています。

応答

成功した場合、このアクションは 200 OK 応答コードと応答本文の huntingQueryResults を返します。

例 1: 既定のタイムスパンでのクエリ

要求

次の例では、KQL クエリを指定し、次の処理を行います。

  • 高度な捜索スキーマで DeviceProcessEvents テーブルを調べます。
  • powershell.exe プロセスがイベントを開始する条件でフィルター処理します。
  • 各行について、同じテーブルの 3 つの列 ( TimestampFileNameInitiatingProcessFileName) の出力を指定します。
  • 出力を Timestamp 値で並べ替えます。
  • 出力を 2 レコード (2 行) に制限します。
POST https://graph.microsoft.com/v1.0/security/runHuntingQuery

{
    "Query": "DeviceProcessEvents | where InitiatingProcessFileName =~ \"powershell.exe\" | project Timestamp, FileName, InitiatingProcessFileName | order by Timestamp desc | limit 2"
}

応答

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.security.huntingQueryResults",
    "schema": [
        {
            "name": "Timestamp",
            "type": "DateTime"
        },
        {
            "name": "FileName",
            "type": "String"
        },
        {
            "name": "InitiatingProcessFileName",
            "type": "String"
        }
    ],
    "results": [
        {
            "Timestamp": "2024-03-26T09:39:50.7688641Z",
            "FileName": "cmd.exe",
            "InitiatingProcessFileName": "powershell.exe"
        },
        {
            "Timestamp": "2024-03-26T09:39:49.4353788Z",
            "FileName": "cmd.exe",
            "InitiatingProcessFileName": "powershell.exe"
        }
    ]
}

例 2: 指定した省略可能な timespan パラメーターを使用したクエリ

要求

この例では、KQL クエリを指定し、60 日前の高度な捜索スキーマの deviceProcessEvents テーブルを調べます。

POST https://graph.microsoft.com/v1.0/security/runHuntingQuery

{
    "Query": "DeviceProcessEvents",
    "Timespan": "P90D"
}

応答

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

HTTP/1.1 200 OK
Content-type: application/json

{
    "schema": [
        {
            "name": "Timestamp",
            "type": "DateTime"
        },
        {
            "name": "FileName",
            "type": "String"
        },
        {
            "name": "InitiatingProcessFileName",
            "type": "String"
        }
    ],
    "results": [
        {
            "timestamp": "2020-08-30T06:38:35.7664356Z",
            "fileName": "conhost.exe",
            "initiatingProcessFileName": "powershell.exe"
        },
        {
            "timestamp": "2020-08-30T06:38:30.5163363Z",
            "fileName": "conhost.exe",
            "initiatingProcessFileName": "powershell.exe"
        }
    ]
}