matchfeed
脅威インテリジェンスフィードデータを使用して入力レコードの指定フィールド値がフィードに含まれているかを検査し、マッチしたレコードを出力します。
コマンドプロパティ
| 項目 | 説明 |
|---|---|
| コマンドタイプ | 加工クエリ |
| 必要な権限 | なし |
| ライセンス使用量 | 該当なし |
| 並列実行 | 対応 |
| 分散実行 | データノードで実行(mapper) |
構文
オプション
name=STR- 脅威インテリジェンスフィードの識別子。
nameとtypeオプションのいずれか一方を必ず指定してください。 type={URL|DOMAIN|EMAIL|IP|REGISTRY|MD5|SHA1|SHA256}- 脅威インテリジェンスフィードのタイプ。
nameとtypeオプションのいずれか一方を必ず指定してください。
URL: URLDOMAIN: ドメイン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の場合のみ出力) |
エラーコード
パースエラー
| エラーコード | メッセージ | 説明 |
|---|---|---|
| 300020 | matchfeedコマンドのnameとtypeオプションのいずれか一方を必ず指定してください。 | nameとtypeオプションをどちらも省略した場合 |
| 300021 | matchfeedコマンドに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アドレスタイプでない場合は、そのフィールドをスキップして次のフィールドを検査します。
使用例
-
特定のフィード名で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_ipmalware_ipフィードに含まれるIPアドレスを持つレコードをフィルタリングします。 -
フィードタイプでドメインをマッチング
json "[{'domain': 'example.com'}, {'domain': 'test.org'}]" | matchfeed type=DOMAIN fields=domainDOMAINタイプのすべての脅威インテリジェンスフィードを対象にドメインフィールドをマッチングします。
-
複数のフィールドを対象にマッチング
json "[{'src_ip': '192.0.2.1', 'dst_ip': '198.51.100.5'}]" | matchfeed type=IP fields=src_ip,dst_ipsrc_ipとdst_ipフィールドを順番に検査し、IPタイプのフィードに含まれるレコードをフィルタリングします。 -
マッチング結果を反転
json "[{'src_ip': '192.0.2.1'}, {'src_ip': '198.51.100.5'}]" | matchfeed name=malware_ip fields=src_ip invert=tmalware_ipフィードに含まれないIPアドレスを持つレコードのみを出力します。