matchfeed

脅威インテリジェンスフィードデータを使用して入力レコードの指定フィールド値がフィードに含まれているかを検査し、マッチしたレコードを出力します。

コマンドプロパティ

項目説明
コマンドタイプ加工クエリ
必要な権限なし
ライセンス使用量該当なし
並列実行対応
分散実行データノードで実行(mapper)

構文

matchfeed [name=STR] [type={URL|DOMAIN|EMAIL|IP|REGISTRY|MD5|SHA1|SHA256}] fields=STR [invert=BOOL]

オプション

name=STR
脅威インテリジェンスフィードの識別子。nametypeオプションのいずれか一方を必ず指定してください。
type={URL|DOMAIN|EMAIL|IP|REGISTRY|MD5|SHA1|SHA256}
脅威インテリジェンスフィードのタイプ。nametypeオプションのいずれか一方を必ず指定してください。
  • URL: URL
  • DOMAIN: ドメイン
  • EMAIL: メール
  • IP: IPアドレス
  • REGISTRY: レジストリ
  • MD5: MD5ハッシュ
  • SHA1: SHA1ハッシュ
  • SHA256: SHA256ハッシュ
fields=STR
マッチング対象フィールドのリスト。カンマ(,)で区切って複数のフィールドを指定できます。フィールド値は文字列またはIPアドレスタイプでなければなりません。
invert=BOOL
マッチング結果を反転します。tを指定すると脅威インテリジェンスフィードに含まれないレコードを出力します。(デフォルト:f

入力フィールド

フィールドタイプ必須説明
fieldsで指定したフィールド文字列またはIPアドレス必須脅威インテリジェンスフィードと比較する値。nullまたは文字列・IPアドレスタイプでない場合はそのフィールドをスキップします。

出力フィールド

nameオプションで特定のフィードを指定した場合:

フィールドタイプ説明
feed_name文字列マッチした脅威インテリジェンスフィードの識別子
feed_invertブール反転の有無
feed_field文字列マッチしたフィールド名(invert=fの場合のみ出力)

typeオプションでフィードタイプを指定した場合:

フィールドタイプ説明
feed_type文字列脅威インテリジェンスフィードのタイプ
feed_names配列マッチした脅威インテリジェンスフィード識別子のリスト(invert=fの場合のみ出力)
feed_invertブール反転の有無
feed_field文字列マッチしたフィールド名(invert=fの場合のみ出力)

エラーコード

パースエラー
エラーコードメッセージ説明
300020matchfeedコマンドのnameとtypeオプションのいずれか一方を必ず指定してください。nametypeオプションをどちらも省略した場合
300021matchfeedコマンドにfieldsオプションを指定してください。fieldsオプションが指定されていない場合
300022無効な脅威インテリジェンスフィード識別子です。nameオプションに存在しないフィード識別子を指定した場合
300023無効な脅威インテリジェンスフィードタイプです。URL、DOMAIN、EMAIL、IP、REGISTRY、MD5、SHA1、SHA256のいずれかを指定してください。typeオプションに無効なタイプを指定した場合
300024脅威インテリジェンスフィードマッチャーの初期化に失敗しました。フィードマッチャーの初期化に失敗した場合
ランタイムエラー

該当なし

説明

matchfeedコマンドは、入力レコードの指定されたフィールド値を脅威インテリジェンスフィードデータと比較し、マッチの有無によってレコードをフィルタリングします。fieldsオプションで指定したフィールドを順番に検査し、最初にマッチしたフィールドで検査を中断してそのレコードを出力します。

nameオプションで特定のフィードを指定すると、そのフィードのみを対象にマッチングを行います。typeオプションでフィードタイプを指定すると、同じタイプのすべてのフィードを対象にマッチングを行います。どちらかのオプションを必ず指定してください。

invert=tを指定すると、すべてのフィールドを検査した後にどのフィールドもマッチしなかったレコードのみを出力します。この場合、feed_fieldフィールドは出力されません。

フィールド値がnullであるか文字列またはIPアドレスタイプでない場合は、そのフィールドをスキップして次のフィールドを検査します。

使用例

  1. 特定のフィード名でIPアドレスをマッチング

    json "[{'src_ip': '192.0.2.1'}, {'src_ip': '198.51.100.5'}, {'src_ip': '203.0.113.10'}]"
    | matchfeed name=malware_ip fields=src_ip
    

    malware_ipフィードに含まれるIPアドレスを持つレコードをフィルタリングします。

  2. フィードタイプでドメインをマッチング

    json "[{'domain': 'example.com'}, {'domain': 'test.org'}]"
    | matchfeed type=DOMAIN fields=domain
    

    DOMAINタイプのすべての脅威インテリジェンスフィードを対象にドメインフィールドをマッチングします。

  3. 複数のフィールドを対象にマッチング

    json "[{'src_ip': '192.0.2.1', 'dst_ip': '198.51.100.5'}]"
    | matchfeed type=IP fields=src_ip,dst_ip
    

    src_ipdst_ipフィールドを順番に検査し、IPタイプのフィードに含まれるレコードをフィルタリングします。

  4. マッチング結果を反転

    json "[{'src_ip': '192.0.2.1'}, {'src_ip': '198.51.100.5'}]"
    | matchfeed name=malware_ip fields=src_ip invert=t
    

    malware_ipフィードに含まれないIPアドレスを持つレコードのみを出力します。