検索のベスト プラクティス
このドキュメントでは、Google Security Operations の検索機能を使用する際の Google が推奨するベスト プラクティスについて説明します。検索を工夫しないと、大量の計算リソースが必要になることがあります。また、Google SecOps インスタンス内のデータのサイズや複雑さによってパフォーマンスも変わります。
効果的な検索クエリを作成する
各条件は udm-field operator value
の形式でなければなりません。
次に例を示します。principal.hostname = "win-server"
検索対象の期間を絞り込む
Google SecOps は検索中に大量のデータを取り込む可能性があるため、対象期間を短くして検索範囲を絞り、検索のパフォーマンスを高めることが推奨されます。
検索クエリで正規表現を使用する
正規表現を使ってデータを検索できます。
AND
、OR
、NOT
を使用します。- 他の演算子がない場合は、
AND
とみなされます。 - 優先順位を変更するには、かっこを使用します。かっこ内で使用できる論理演算子(
OR
、AND
、NOT
)の最大数は 169 個です。 - フィールド タイプに応じて、フィールド演算子に「
= != >= > < <=
」を含めることができます。
この方法以外に、参照リストを使用する方法もあります。
検索修飾子として nocase
を使用する
nocase
を修飾子として使用することで、大文字と小文字の区別をせずに検索できます。
たとえば、次の検索は無効です。
target.user.userid = "TIM.SMITH" nocase
列挙型フィールドに正規表現を使用しない
列挙型フィールド(事前定義された値の範囲を持つフィールド)には、metadata.event_type
や network.ip_protocol
などの正規表現を使用できません。
次の例は無効な検索です。
metadata.eventtype = /NETWORK*/
一方、次の例は有効な検索です。
(metadata.event_type = "NETWORK_CONNECTION" or
metadata.event_type = "NETWORK_DHCP")
Events フィールドであらゆるすべての演算子を使用する
検索では、一部のフィールドが繰り返しとしてラベル付けされています。これは、値またはメッセージ タイプのリストが含まれていることを意味します。繰り返しフィールドは、デフォルトで常に any
演算子として扱われます(all
を指定するオプションはありません)。
any
演算子を使用すると、繰り返しフィールドの値のいずれかが条件を満たした場合に、述語が true と評価されます。たとえば、principal.ip != "1.2.3.4"
という検索をした場合、検索結果のイベントに principal.ip = "1.2.3.4"
と principal.ip = "5.6.7.8"
の両方が含まれていても、一致が生成されます。これにより、すべての演算子に一致するのではなく、いずれかの演算子に一致する結果も含まれるように検索が拡張されます。
繰り返しフィールドの各要素は個別に処理されます。検索対象のイベントに繰り返しフィールドが含まれている場合、そのイベントはフィールド内の各要素ごとに評価されます。これは予期せぬ挙動を引き起こすことがあります。特に !=
演算子で検索する場合に注意が必要です。
any
演算子を使用すると、繰り返しフィールドの値のいずれかが条件を満たした場合に、述語が true と評価されます。
タイムスタンプは Unix エポック時刻を使用
タイムスタンプ フィールドは、Unix エポック時刻(1970 年 1 月 1 日木曜日の 00:00:00 からの経過秒数)を使用して照合されます。
特定のタイムスタンプを検索する場合、次の形式(エポック時刻)が有効です。
metadata.ingested_timestamp.seconds = 1660784400
次のタイムスタンプは無効です。
metadata.ingested_timestamp = "2022-08-18T01:00:00Z"
次のような特定のフィールドはフィルタから除外されます。
metadata.id
metadata.product_log_id
*.timestamp
これらのフィールドには一意の値が含まれていることが多いため、不要な詳細が追加され、検索の有効性が低下する可能性があります。
ご不明な点がある場合: コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。