コンソールで検出結果をクエリする

このページでは、Google Cloud コンソールと Security Operations コンソールの [検出結果] ページの [クエリエディタ] パネルを使用して、Security Command Center の検出結果クエリを作成および編集する方法について説明します。

クエリを使用して特定の検出結果を取得し、[検出結果クエリの結果] に表示される検出結果をフィルタリングします。

Security Command Center Enterprise コンソールで検出結果を操作する

Security Command Center Enterprise をご利用の場合は、次の 2 つのコンソールで検出結果を操作できます。

  • Google Cloud コンソール: すべてのサービスティアで利用可能
  • Security Operations コンソール: Enterprise ティアでのみ使用可能

詳細については、Security Command Center Enterprise コンソールをご覧ください。

検出結果クエリを編集する

[クエリエディタ] パネルでは、クエリにフィルタを追加して、プロパティや属性値に基づいて検出結果を選択できます。値の有無、部分文字列の一致などのフィルタを使用できます。

検出結果クエリの編集方法については、使用しているコンソールのタブをクリックしてください。

Google Cloud コンソール

  1. Google Cloud コンソールで、Security Command Center の [検出結果] ページに移動します。

    [検出結果] に移動

  2. Google Cloud プロジェクトまたは組織を選択します。 [検出結果] ページに [クエリのプレビュー] フィールドにデフォルトのクエリが表示されます。
  3. [クエリのプレビュー] セクションの右側にある [クエリを編集] をクリックして、[クエリエディタ] を開きます。
  4. [フィルタを追加] を選択して、事前定義された属性フィルタを閲覧、検索し、クエリに追加します。
  5. [フィルタを選択] ダイアログでは、サポートされている検出属性と値を選択できます。

    1. 検出属性を選択するか、[検出属性の検索] ボックスに名前を入力します。 使用可能なサブ属性のリストが表示されます。
    2. サブ属性を選択します。選択フィールドには、選択したサブ属性、クエリ演算子、サブ属性の 1 つ以上の値を使用してクエリ ステートメントを作成できる場所が表示されます。
    3. パネルで演算子とサブ属性の値を 1 つ以上選択します。クエリ演算子とそれらが使用する関数の詳細については、フィルタの追加メニューのクエリ演算子をご覧ください。
    4. [適用] をクリックします。

      ダイアログが閉じて、クエリが更新されます。

    5. 検出クエリに必要な属性がすべて表示されるまで、この操作を繰り返します。

あるいは、Security Command Center API を使用して検出結果フィルタを作成するのと同じ方法で、検出結果クエリを手動で作成できます。クエリを入力すると、予測入力メニューが表示され、そこでフィルタ名と関数を選択できます。 予測入力メニューを手動で開くには、Ctrl+Space キーを押します。

[検出結果] ページのクエリビルダーで作業しているときは、2 つの競合を避けるために [クイック フィルタ] セクションが無効になります。

クエリを編集すると、エディタによりクエリ内のエラーがすべてハイライト表示されるため、クエリを送信する前にエラーを修正できます。

Security Operations コンソール

  1. Security Operations コンソールで、[検出結果] ページに移動します。
    https://CUSTOMER_SUBDOMAIN.backstory.chronicle.security/posture/findings
    

    CUSTOMER_SUBDOMAIN は、お客様固有の ID に置き換えます。

  2. [クエリエディタ] パネルで、 [フィルタを追加] をクリックします。[フィルタ] ダイアログが表示されます。このダイアログでは、サポートされている検出属性と値を選択できます。
  3. [フィルタ] で、フィルタする事前定義の検出結果属性を選択します。
  4. フィルタ評価オプションと属性値を設定します。
    • 特定の属性値を持つ検出結果をフィルタするには、[のみを表示] を選択します。[] リストで、属性値を選択します。
    • 特定の属性値を持たない検出結果をフィルタするには、[除外] を選択します。[] リストで、属性値を選択します。
  5. 別のフィルタを追加する手順は次のとおりです。
    1. [Add filter] をクリックします。
    2. 属性名、評価オプション、属性値を設定します。
    3. フィルタ間の論理関係を設定します。[論理演算子] で、AND または OR を選択します。
  6. [適用] をクリックします。クエリエディタが更新され、それに応じて検出結果クエリの結果がフィルタされます。

この機能はプレビュー版であり、Security Command Center Enterprise をご利用のお客様のみご利用いただけます。

クエリ演算子

Security Command Center の検出結果のクエリ ステートメントは、ほとんどの Google Cloud APIs でサポートされている演算子をサポートしています。

次のリストでは、さまざまな演算子の使用を示します。

  • state="ACTIVE" AND NOT mute="MUTED"
  • create_time>"2023-08-15T19:05:32.428Z"
  • resource.parent_name:"prod"
  • severity="CRITICAL" OR severity="HIGH"

次のリストでは、検出結果のクエリ ステートメントでサポートされているすべての演算子と関数を示します。

  • 文字列:
    • =(完全一致)
    • :(部分一致)
  • 数字:
    • <><=>=(不等式)
    • =!=(等式)
  • ブール値:
    • =(等式)
  • 論理関係:
    • AND
    • OR
    • NOT または -
  • 式のグループ化:
    • ()(括弧)
  • 配列:
    • contains(): 指定したフィルタに一致する要素を 1 つ以上含む配列フィールドを使用して、検出結果をクエリする関数
    • containsOnly(): 指定したフィルタに一致する要素のみを含む配列フィールドを使用して、検出結果をクエリする関数
  • IP アドレス:
    • inIpRange(): 指定した CIDR 範囲内の IP アドレスをクエリする関数

[フィルタの追加] メニューのクエリ演算子

[フィルタを追加] メニューで使用されるクエリ演算子については、使用しているコンソールのタブをクリックしてください。

Google Cloud コンソール

Google Cloud コンソールのクエリエディタにある [フィルタの追加] メニューでは、クエリ演算子と関数が次のような単語やフレーズで表示されます。

  • 等しい: この属性値を持つ検出結果に一致します。
  • 等しくない: この属性値を持たない検出結果に一致します。
  • After: 作成時刻または更新時刻が、指定した時間より後の検出結果に一致します。
  • Before: 作成時刻または更新時刻が、指定した時刻より前の検出結果に一致します。
  • 次を含む: [キーワード] フィールドに入力したテキストを含む属性値を持つ検索結果に一致します。
  • 次を含まない: [キーワード] フィールドに入力したテキストを含まない属性値を持つ検索結果に一致します。
  • 配列を含む属性を検索する場合:
    • 任意を含む: [キーワード] フィールドに入力した任意のテキストを含む配列値がある検出結果に一致します。
    • すべてを含む: [キーワード] フィールドに入力したすべてのテキストを含む配列値がある検出結果に一致します。
    • いずれも含まない: [キーワード] フィールドに入力したテキストを含む配列値がない検出結果に一致します。
    • のみを含む: [キーワード] フィールドに入力した値のみが含まれ、他の値を含まない配列属性を持つ検出結果に一致します。
  • IP アドレスの場合:
    • Any within IP range: 指定した CIDR 範囲内の IP アドレスがある検出結果に一致します。
    • Does not have any within IP range: 指定した CIDR 範囲にない IP アドレスがある検出結果に一致します。

Security Operations コンソール

Security Operations コンソールのクエリエディタにある [フィルタの追加] メニューでは、クエリ演算子と関数は次のように表されます。

  • 表示の絞り込み: この属性値を持つ検出結果に一致します。
  • 除外: この属性値を持たない検出結果に一致します。

この機能はプレビュー版であり、Security Command Center Enterprise をご利用のお客様のみご利用いただけます。

クエリ関数

クエリ関数は、一般的なクエリ演算子より複雑な属性値の評価を提供します。

contains 関数

contains 関数は、同じ検出結果に複数回出現する可能性がある属性や属性サブフィールドを評価するために使用します。

内部では、これらの属性や属性サブフィールドは配列データ構造の要素に格納されるため、配列型属性と呼ばれます。

たとえば、特定の検出結果では、複数のネットワーク接続を参照できるため、connections 属性が配列型属性になります。同様に、特定の脅威検出結果では、セキュリティ侵害の指標として複数の IP アドレスを参照できるため、indicator 属性の ip_addresses サブフィールドが配列型属性です。

contains 関数では、次の構文を使用します。

contains(ARRAY_ATTRIBUTE_NAME, SUBFILTER)

以下を置き換えます。

  • ARRAY_ATTRIBUTE_NAME: 配列に格納された配列型属性の名前。配列型属性が別の属性のサブフィールドの場合は、属性名とサブフィールド名をドットで区切って指定します。

    次の例では、配列型属性 ip_addressesindicator のサブフィールドであるため、ARRAY_ATTRIBUTE_NAME では両方が指定されています。

    contains(indicator.ip_addresses, elem="192.0.2.80")
  • SUBFILTER: 配列型属性の各インスタンスの評価方法を定義する式。標準の Security Command Center のクエリ演算子と評価ステートメントがサポートされています。

    確認する値が配列型属性のサブフィールドにある場合は、式の左側でサブフィールド名を指定します。 次の contains 関数は、connections 配列の各要素を評価します。これは、サブフィールドを含む配列型属性です。クエリされる値は、配列型フィールドではない destination_ip サブフィールドにあります。クエリする値は、elem パラメータではなく、サブフィールド名の destination_ip で指定します。

    contains(connections, destination_ip="192.0.2.80")

    サブフィールドが array-type 属性の場合は、親の左側にある式の左側にある array-type 属性を指定し、式の右側にある elem パラメータを使用して検索する値を指定します。たとえば、次の contains 関数は、indicator 属性のサブフィールドである ip_addresses 配列の各要素を評価します。indicator 属性は、配列型フィールドではありません。

    contains(indicator.ip_addresses, elem="192.0.2.80")

[フィルタの追加] メニューの contains 関数

[フィルタを追加] メニューでは、評価する検出結果属性に応じて、contains 関数は明示的に一覧表示されるか、必要な別のフィルタ オプションを選択すると自動的に追加されます。

たとえば、[Indicator] 属性の [IP addresses] サブフィールドでは、次のフィルタ オプションを選択できます。

  • 次のいずれかを含む
  • すべてを含む
  • いずれも含まない

一方、[Connections] 属性の [Destination IP] サブフィールドでフィルタし、[Any within IP range] を選択した場合は、次の例に示すように、contains 関数がクエリ ステートメントに自動的に追加されます。

contains(connections, inIpRange(destination_ip, "2001:db8::/32"))

contains 関数の詳細については、配列型フィールドでのフィルタをご覧ください。

containsOnly 関数

containsOnly 関数を使用すると、サブフィルタで指定された値のみを含む配列型の属性またはサブフィールドの検出結果をクエリできます。

containsOnly 関数では、次の構文を使用します。

containsOnly(ARRAY_ATTRIBUTE_NAME,SUBFILTER)

以下を置き換えます。

  • ARRAY_ATTRIBUTE_NAME: 配列タイプ属性の名前。配列型属性が別の属性のサブフィールドの場合は、属性名とサブフィールド名をドットで区切って指定します。Google Cloud コンソールでクエリを実行する場合、この関数は iam_bindings.member 配列属性と iam_bindings.role 配列属性のみをサポートします。

  • SUBFILTER: 配列型属性の各要素の評価方法を定義する式。標準の Security Command Center のクエリ演算子と評価ステートメントがサポートされています。

[フィルタの追加] メニューの次のフィルタ オプションで containsOnly 関数を使用します。

  • IAM バインディング > メンバー: 指定したユーザー、サービス アカウント、グループを含む検出結果のみを選択します。

  • IAM バインディング > ロール: 指定したロールを含む検出結果のみを選択します。

次の例は、Google Cloud コンソールの検出結果クエリを示しています。これは、example-group グループのユーザーの、ミュート解除されたアクティブな検出結果を返します。

state="ACTIVE"
  AND NOT mute="MUTED"
  AND containsOnly(iam_bindings,member="group:example-group@example.com")

inIpRange 関数

inIpRange 関数は、選択した検出属性の IP アドレスが CIDR 表記(CIDR 範囲)で指定した IP アドレスの範囲内にあるかどうかを確認します。次の例に、inIpRange 関数の構文を示します。

inIpRange(ATTRIBUTE_WITH_IP, "CIDR_RANGE")

[フィルタを追加] メニューで、次のフィルタ オプションでは inIpRange 関数を使用します。

  • IP 範囲内: 指定した範囲内の IP アドレスを含む検出結果のみを選択します。
  • IP 範囲内に存在しない: 指定した範囲内の IP アドレスを含まない検出結果のみを選択します。

次の例では、Google Cloud コンソールで、access オブジェクトの caller_ip サブフィールドに CIDR 範囲が 2001:db8::/32 の IPv6 アドレスを含み、ミュートされていないアクティブな検出結果を返す検出結果クエリを示します。

state="ACTIVE"
AND NOT mute="MUTED"
AND inIpRange(access.caller_ip, "2001:db8::/32")

次の例では、access オブジェクトの caller_ip サブフィールドに IPv4 CIDR 範囲 192.0.2.0/24 の IP アドレスを含まず、ミュートされていないアクティブな検出結果を返す検出結果クエリを示します。

state="ACTIVE"
AND NOT mute="MUTED"
AND NOT inIpRange(access.caller_ip, "192.0.2.0/24")

検出結果に複数回出現する属性に IP アドレスがある場合、contains 関数と inIpRange 関数を使用して、IP アドレスに対する各属性のインスタンスを確認します。例:

contains(connections, inIpRange(source_ip, "192.0.2.0/24"))

contains() 関数についての詳細は、contains 関数をご覧ください。

クエリの検出結果の属性

Security Command Center は、クエリで指定された属性フィルタと照合して、保存されている検出結果の属性を評価し、表示する検出結果を選択します。

ほとんどの検出結果の属性に対してクエリを実行できます。一部の属性はすべての検出結果で共通です。その他の属性は、特定のセキュリティの問題、検出カテゴリ、または検出サービスに固有の場合があります。

[クエリエディタ] パネルの [フィルタを追加] メニューでは、選択した属性のタイプや、属性にサブフィールドまたは値の配列があるかどうかに応じて、属性フィルタに適用できるオプションが異なります。

[フィルタを追加] メニューで、次の最上位属性のいずれかをクリックして、検出結果クエリで使用できるサブ属性と値を表示します。

  • 検出結果
  • リソース
  • アクセス(access
  • 攻撃の発生可能性スコア
  • バックアップと障害復旧
  • コンプライアンス(compliances[]
  • 接続(connections[]
  • 連絡先
  • コンテナ
  • データベース
  • データの引き出し(exfiltration
  • ファイル
  • IAM バインディング(iamBindings[]
  • インジケーター
  • カーネル ルートキット
  • Kubernetes
  • MITRE ATT&CK(mitreAttack
  • プロセス(processes[]
  • セキュリティ ポスチャー
  • Sensitive Data Protection
  • Vulnerability