このページでは、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 コンソール
- Google Cloud コンソールで、Security Command Center の [検出結果] ページに移動します。
- Google Cloud プロジェクトまたは組織を選択します。 [検出結果] ページに [クエリのプレビュー] フィールドにデフォルトのクエリが表示されます。
- [クエリのプレビュー] セクションの右側にある edit[クエリを編集] をクリックして、[クエリエディタ] を開きます。
- [フィルタを追加] を選択して、事前定義された属性フィルタを閲覧、検索し、クエリに追加します。
- 検出属性を選択するか、[検出属性の検索] ボックスに名前を入力します。 使用可能なサブ属性のリストが表示されます。
- サブ属性を選択します。選択フィールドには、選択したサブ属性、クエリ演算子、サブ属性の 1 つ以上の値を使用してクエリ ステートメントを作成できる場所が表示されます。
- パネルで演算子とサブ属性の値を 1 つ以上選択します。クエリ演算子とそれらが使用する関数の詳細については、フィルタの追加メニューのクエリ演算子をご覧ください。
- [適用] をクリックします。
ダイアログが閉じて、クエリが更新されます。
- 検出クエリに必要な属性がすべて表示されるまで、この操作を繰り返します。
[フィルタを選択] ダイアログでは、サポートされている検出属性と値を選択できます。
あるいは、Security Command Center API を使用して検出結果フィルタを作成するのと同じ方法で、検出結果クエリを手動で作成できます。クエリを入力すると、予測入力メニューが表示され、そこでフィルタ名と関数を選択できます。 予測入力メニューを手動で開くには、Ctrl+Space キーを押します。
[検出結果] ページのクエリビルダーで作業しているときは、2 つの競合を避けるために [クイック フィルタ] セクションが無効になります。
クエリを編集すると、エディタによりクエリ内のエラーがすべてハイライト表示されるため、クエリを送信する前にエラーを修正できます。
Security Operations コンソール
-
Security Operations コンソールで、[検出結果] ページに移動します。
https://CUSTOMER_SUBDOMAIN.backstory.chronicle.security/posture/findings
CUSTOMER_SUBDOMAIN
は、お客様固有の ID に置き換えます。 - [クエリエディタ] パネルで、 [フィルタを追加] をクリックします。[フィルタ] ダイアログが表示されます。このダイアログでは、サポートされている検出属性と値を選択できます。
- [フィルタ] で、フィルタする事前定義の検出結果属性を選択します。
- フィルタ評価オプションと属性値を設定します。
- 特定の属性値を持つ検出結果をフィルタするには、[のみを表示] を選択します。[値] リストで、属性値を選択します。
- 特定の属性値を持たない検出結果をフィルタするには、[除外] を選択します。[値] リストで、属性値を選択します。
- 別のフィルタを追加する手順は次のとおりです。
- [Add filter] をクリックします。
- 属性名、評価オプション、属性値を設定します。
- フィルタ間の論理関係を設定します。[論理演算子] で、
AND
またはOR
を選択します。
- [適用] をクリックします。クエリエディタが更新され、それに応じて検出結果クエリの結果がフィルタされます。
この機能はプレビュー版であり、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_addresses
がindicator
のサブフィールドであるため、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