パーサープロセッサ
パーサープロセッサは、未加工または半構造化ログデータを構造化形式に変換します。各パイプラインには最大 1 個のプライマリパーサープロセッサを含めることができますが、このパーサープロセッサはパイプラインの最初のプロセッサである必要があります。XML パーサーは例外です。プライマリパーサーによって生成されたフィールドで動作し、1 つのパイプラインに最大 5 つのインスタンスを追加できます。
条件付き処理はサポートされていません
パーサープロセッサ (Grok と XML を除く) は、when パラメータを使用した条件付き処理をサポートしていません。これには、OCSF、CSV、JSON、KeyValue、VPC、Route53、RDS、WAF、Postgres、および Amazon CloudFront パーサーが含まれます。詳細については、「条件付き処理の式構文」を参照してください。
OCSF プロセッサ
Open Cybersecurity Schema Framework (OCSF) 標準に従ってログデータを解析および変換します。
設定
以下のパラメータを使用して OCSF プロセッサを設定します。
processor: - ocsf: version: "1.5" mapping_version: 1.5.0 schema: microsoft_office365_management_activity:
パラメータ
version(必須)-
変換に使用する OCSF スキーマのバージョン。1.5 である必要があります
mapping_version(必須)-
変換用の OCSF マッピングバージョン。1.5.0 である必要があります
schema(必須)-
データソースタイプを指定するスキーマオブジェクト。サポートされるスキーマはパイプラインソースタイプによって異なります。各ソースタイプには互換性のある OCSF スキーマの独自のセットがあります。パイプラインのソースタイプに一致するスキーマを使用する必要があります。
この表には、サポートされているスキーマの組み合わせが一覧表示されています。
| パイプラインソースタイプ | サポートされているスキーマ | バージョン | マッピングのバージョン |
|---|---|---|---|
cloudwatch_logs |
cloud_trail: |
1.5 |
不要 |
cloudwatch_logs |
route53_resolver: |
1.5 |
不要 |
cloudwatch_logs |
vpc_flow: |
1.5 |
不要 |
cloudwatch_logs |
eks_audit: |
1.5 |
不要 |
cloudwatch_logs |
aws_waf: |
1.5 |
不要 |
cloudwatch_logs |
aws_nlb: |
1.5 |
不要 |
s3 |
任意の OCSF スキーマ | いずれか | いずれか |
microsoft_office365 |
microsoft_office365: |
1.5 |
1.5.0 |
microsoft_entraid |
microsoft_entraid: |
1.5 |
1.5.0 |
microsoft_windows_event |
microsoft_windows_event: |
1.5 |
1.5.0 |
paloaltonetworks_nextgenerationfirewall |
paloaltonetworks_nextgenerationfirewall: |
1.5 |
1.5.0 |
okta_auth0 |
okta_auth0: |
1.5 |
1.5.0 |
okta_sso |
okta_sso: |
1.5 |
1.5.0 |
crowdstrike_falcon |
crowdstrike_falcon: |
1.5 |
1.5.0 |
github_auditlogs |
github_auditlogs: |
1.5 |
1.5.0 |
sentinelone_endpointsecurity |
sentinelone_endpointsecurity: |
1.5 |
1.5.0 |
servicenow_cmdb |
servicenow_cmdb: |
1.5 |
1.5.0 |
wiz_cnapp |
wiz_cnapp: |
1.5 |
1.5.0 |
zscaler_internetaccess |
zscaler_internetaccess: |
1.5 |
1.5.0 |
CSV プロセッサ
CSV 形式のデータを構造化フィールドに解析します。
設定
次のパラメータを使用して CSV プロセッサを設定します。
processor: - csv: column_names: ["col1", "col2", "col3"] delimiter: "," quote_character: '"'
パラメータ
column_names(オプション)-
解析されたフィールドの列名の配列。最大 100 列、各名前の最大文字数は 128 文字です。指定しない場合、デフォルトで column_1、column_2 などになります。
delimiter(オプション)-
CSV フィールドを区切るために使用される文字。1 文字にする必要があります。デフォルトはカンマ「,」です。
quote_character(オプション)-
区切り文字を含む CSV フィールドを囲む引用符として使用される文字。1 文字にする必要があります。デフォルトは二重引用符「"」です。
追加のパラメータを指定せずにプロセッサを使用するには、次のコマンドを使用します。
processor: - csv: {}
Grok プロセッサ
Grok パターンを使用して非構造化データを解析します。パイプラインごとに 1 つの Grok がサポートされています。CloudWatch Logs の Grok トランスフォーマーの詳細については、「CloudWatch Logs ユーザーガイド」の「Processors that you can use」を参照してください。
設定
次のパラメータを使用して Grok プロセッサを設定します。
データソースがディクショナリの場合、この設定を使用できます。
processor: - grok: match: source_key: ["%{WORD:level} %{GREEDYDATA:msg}"]
データソースが CloudWatch Logs の場合、この設定を使用できます。
processor: - grok: match: source_key: ["%{WORD:level} %{GREEDYDATA:msg}"]
パラメータ
match(必須)-
Grok パターンを使用したフィールドマッピング。許可されるフィールドマッピングは 1 つだけです。
match.<field>(必須)-
単一の Grok パターンを使用した配列。パターンあたりの最大文字数は 512 文字です。
when(オプション)-
このプロセッサを実行するかどうかを決定する条件式。最大長は 256 文字です。「条件付き処理の式構文」を参照してください。
重要
Grok プロセッサをパイプラインのパーサー (最初のプロセッサ) として使用し、その when 条件が false と評価された場合、パイプライン全体がそのログイベントに対して実行されません。ダウンストリームプロセッサが構造化データを受信するには、パーサーを実行する必要があります。
VPC プロセッサ
VPC フローログデータを構造化フィールドに解析します。
設定
次のパラメータを使用して VPC プロセッサを設定します。
processor: - parse_vpc: {}
JSON プロセッサ
JSON データを構造化フィールドに解析します。
設定
次のパラメータを使用して JSON プロセッサを設定します。
processor: - parse_json: source: "message" destination: "parsed_json"
パラメータ
source(オプション)-
解析する JSON データを含むフィールド。省略すると、ログメッセージ全体が処理されます。
destination(オプション)-
解析された JSON が保存されるフィールド。省略すると、解析されたフィールドがルートレベルに追加されます。
Route 53 プロセッサ
Route 53 リゾルバーのログデータを構造化フィールドに解析します。
設定
次のパラメータを使用して Route 53 プロセッサを設定します。
processor: - parse_route53: {}
Amazon RDS プロセッサ
Amazon RDS Aurora ログデータを構造化フィールドに解析します。parse_rds プロセッサは、パイプラインの data_source_name が amazon_rds の場合にのみサポートされます。パイプラインの data_source_type に一致する解析ロジックを適用します。
設定
次のパラメータを使用して Amazon RDS プロセッサを設定します。
processor: - parse_rds: {}
Key-value プロセッサ
キーと値のペア形式のデータを構造化フィールドに展開します。
設定
次のパラメータを使用して key-value プロセッサを設定します。
processor: - key_value: source: "message" destination: "parsed_kv" field_delimiter: "&" key_value_delimiter: "="
パラメータ
source(オプション)-
キーと値のデータを含むフィールド。最大 128 文字
destination(オプション)-
解析されたキーと値のペアのターゲットフィールド。最大 128 文字
field_delimiter(オプション)-
キーと値のペアを分割するパターン。最大 10 文字
key_value_delimiter(オプション)-
値からキーを分割するパターン。最大 10 文字
overwrite_if_destination_exists(オプション)-
既存の送信先フィールドを上書きするかどうかの選択。
prefix(オプション)-
抽出されたキーに追加するプレフィックス。最大 128 文字
non_match_value(オプション)-
一致しないキーの値。最大 128 文字
追加のパラメータを指定せずにプロセッサを使用するには、次のコマンドを使用します。
processor: - key_value: {}
XML パーサー
XML パーサーを使用して、XML 文字列を含む指定されたフィールドを JSON 形式に変換します。構造化データとしてクエリする埋め込み XML フィールドがログイベントに含まれている場合は、XML パーサーを使用します。XML パーサーは、XML 文字列がすでに含まれている名前付きフィールドで動作します。このパーサーは、パイプラインのプライマリパーサーの後に配置します。1 つのパイプラインに最大 5 つの parse_xml パーサーを追加できます。
設定
次のパラメータを使用して XML パーサーを設定します。
processor: - parse_json: source: "@message" - parse_xml: source: "body" destination: "parsed_xml"
パラメータ
source(必須)-
解析対象の XML 文字列が含まれているフィールドを指定します。ドット表記を使用して、ネストされたフィールドにアクセスします。例えば、
event.body。最大 128 文字 destination(オプション)-
解析された XML 構造を保存するフィールドを指定します。このパラメータを省略すると、解析されたフィールドはルートレベルに追加されます。最大 128 文字
when(オプション)-
このパーサーを実行するかどうかを決定する条件式。最大長は 256 文字です。詳細については、「条件付き処理の式構文」を参照してください。
例 – XML パーサー出力
XMLフィールドが埋め込まれた、次のような JSON ログイベントがあるとします。
{ "body": "<Person id=\"123\" active=\"true\"><name>John</name><age>30</age></Person>" }
次の設定を使用します。
processor: - parse_json: source: "@message" - parse_xml: source: "body" destination: "parsed_xml"
XML パーサーによって以下の出力が生成されます。
{ "body": "<Person id=\"123\" active=\"true\"><name>John</name><age>30</age></Person>", "parsed_xml": { "id": "123", "active": "true", "name": "John", "age": "30" } }
動作に関する注意事項
- ネスト深度
-
XML パーサーは、最大ネスト深度 25 レベルをサポートします。この限界を超えてネストされた要素があるとエラーが発生します。
- エラー処理
-
XML の形式が正しくなくてもパイプラインは失敗しません。パーサーは元の
@messageを保持し、そのイベントに@pipeline.processing.status = "error"を設定します。