Skip to content

Commit 1d3600e

Browse files
[checkpoint]: fix handling of different user formats (#20183)
- Add grok processors to better handle different formattings of the user fields in checkpoint logs. Added support for full name with email, email, and name only.
1 parent 617ad3d commit 1d3600e

7 files changed

Lines changed: 1356 additions & 37 deletions

File tree

packages/checkpoint/changelog.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
# newer versions go on top
2+
- version: "1.48.0"
3+
changes:
4+
- description: Improve handling of different user formats in logs.
5+
type: enhancement
6+
link: https://github.com/elastic/integrations/pull/20183
27
- version: "1.47.0"
38
changes:
49
- description: Populate observer.ip with the Check Point gateway IP from the origin field, and add observer.hostname from the CN of originsicname, in the firewall data stream.

packages/checkpoint/data_stream/firewall/_dev/test/pipeline/test-checkpoint.log

Lines changed: 11 additions & 0 deletions
Large diffs are not rendered by default.

packages/checkpoint/data_stream/firewall/_dev/test/pipeline/test-checkpoint.log-expected.json

Lines changed: 1272 additions & 0 deletions
Large diffs are not rendered by default.

packages/checkpoint/data_stream/firewall/elasticsearch/ingest_pipeline/default.yml

Lines changed: 55 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -255,23 +255,30 @@ processors:
255255
field: checkpoint.uid
256256
target_field: source.user.id
257257
ignore_missing: true
258-
- set:
259-
tag: set_source_user_name_276eacf0
260-
field: source.user.name
261-
copy_from: checkpoint.src_user_name
262-
ignore_empty_value: true
263-
- set:
264-
tag: set_source_user_name_d2cd1e3b
265-
field: source.user.name
266-
copy_from: checkpoint.administrator
267-
if: ctx.source?.user?.name == null
268-
ignore_empty_value: true
269-
- set:
270-
tag: set_user_name_9961f466
271-
field: user.name
272-
copy_from: checkpoint.user
273-
if: ctx.user?.name == null
274-
ignore_empty_value: true
258+
- grok:
259+
tag: grok_src_user_name
260+
field: checkpoint.src_user_name
261+
if: ctx.checkpoint?.src_user_name != null
262+
patterns:
263+
- "^%{DATA:source.user.full_name} \\(%{EMAILADDRESS:source.user.email}\\)$"
264+
- "^%{EMAILADDRESS:source.user.email}$"
265+
- "^%{DATA:source.user.name}$"
266+
- grok:
267+
tag: grok_administrator
268+
field: checkpoint.administrator
269+
if: ctx.checkpoint?.administrator != null && ctx.source?.user?.name == null && ctx.source?.user?.email == null
270+
patterns:
271+
- "^%{DATA:source.user.full_name} \\(%{EMAILADDRESS:source.user.email}\\)$"
272+
- "^%{EMAILADDRESS:source.user.email}$"
273+
- "^%{DATA:source.user.name}$"
274+
- grok:
275+
tag: grok_user
276+
field: checkpoint.user
277+
if: ctx.checkpoint?.user != null && ctx.user?.name == null
278+
patterns:
279+
- "^%{DATA:user.full_name} \\(%{EMAILADDRESS:user.email}\\)$"
280+
- "^%{EMAILADDRESS:user.email}$"
281+
- "^%{DATA:user.name}$"
275282
- convert:
276283
tag: convert_checkpoint_failed_login_factor_num_919842ca
277284
field: checkpoint.failed_login_factor_num
@@ -374,11 +381,14 @@ processors:
374381
target_field: destination.domain
375382
if: ctx.server?.domain == null
376383
ignore_missing: true
377-
- set:
378-
tag: set_destination_user_name_ccf3ca27
379-
field: destination.user.name
380-
copy_from: checkpoint.dst_user_name
384+
- grok:
385+
tag: grok_dst_user_name
386+
field: checkpoint.dst_user_name
381387
if: ctx.checkpoint?.dst_user_name != null
388+
patterns:
389+
- "^%{DATA:destination.user.full_name} \\(%{EMAILADDRESS:destination.user.email}\\)$"
390+
- "^%{EMAILADDRESS:destination.user.email}$"
391+
- "^%{DATA:destination.user.name}$"
382392
- set:
383393
tag: set_destination_user_domain_d38bee06
384394
field: destination.user.domain
@@ -794,6 +804,12 @@ processors:
794804
value: '{{{ source.user.name }}}'
795805
override: false
796806
ignore_empty_value: true
807+
- set:
808+
tag: set_user_full_name_4f1523ba
809+
field: user.full_name
810+
value: '{{{ source.user.full_name }}}'
811+
override: false
812+
ignore_empty_value: true
797813
- set:
798814
tag: set_user_id_cc07e8aa
799815
field: user.id
@@ -1498,11 +1514,6 @@ processors:
14981514
replacement: ""
14991515
if: ctx.checkpoint?.sys_message != null
15001516
# Standardize user fields
1501-
- rename:
1502-
target_field: user.email
1503-
field: user.name
1504-
tag: rename_user_email
1505-
if: ctx.user?.email == null && ctx.user?.name != null && ctx.user.name.indexOf("@") > 0
15061517
- dissect:
15071518
field: user.email
15081519
pattern: '%{user.name}@%{user.domain}'
@@ -1522,17 +1533,18 @@ processors:
15221533
value: "{{{user.name}}}"
15231534
allow_duplicates: false
15241535
if: ctx.user?.name != null
1536+
- append:
1537+
tag: append_related_user_7021abb5
1538+
field: related.user
1539+
value: "{{{user.full_name}}}"
1540+
allow_duplicates: false
1541+
if: ctx.user?.full_name != null
15251542
- append:
15261543
tag: append_related_user_34fcf415
15271544
field: related.user
15281545
value: "{{{user.email}}}"
15291546
allow_duplicates: false
15301547
if: ctx.user?.email != null
1531-
- rename:
1532-
target_field: source.user.email
1533-
field: source.user.name
1534-
tag: rename_source_user_email
1535-
if: ctx.source?.user?.email == null && ctx.source?.user?.name != null && ctx.source.user.name.indexOf("@") > 0
15361548
- dissect:
15371549
field: source.user.email
15381550
pattern: '%{source.user.name}@%{source.user.domain}'
@@ -1558,11 +1570,12 @@ processors:
15581570
value: "{{{source.user.email}}}"
15591571
allow_duplicates: false
15601572
if: ctx.source?.user?.email != null
1561-
- rename:
1562-
target_field: destination.user.email
1563-
field: destination.user.name
1564-
tag: rename_destination_user_email
1565-
if: ctx.destination?.user?.email == null && ctx.destination?.user?.name != null && ctx.destination.user.name.indexOf("@") > 0
1573+
- append:
1574+
tag: append_related_user_18471188
1575+
field: related.user
1576+
value: "{{{source.user.full_name}}}"
1577+
allow_duplicates: false
1578+
if: ctx.source?.user?.full_name != null
15661579
- dissect:
15671580
field: destination.user.email
15681581
pattern: '%{destination.user.name}@%{destination.user.domain}'
@@ -1588,6 +1601,12 @@ processors:
15881601
value: "{{{destination.user.email}}}"
15891602
allow_duplicates: false
15901603
if: ctx.destination?.user?.email != null
1604+
- append:
1605+
tag: append_related_user_7ec630c0
1606+
field: related.user
1607+
value: "{{{destination.user.full_name}}}"
1608+
allow_duplicates: false
1609+
if: ctx.destination?.user?.full_name != null
15911610

15921611
- script:
15931612
tag: script_422800ed

packages/checkpoint/data_stream/firewall/fields/ecs.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
name: destination.user.email
4141
- external: ecs
4242
name: destination.user.id
43+
- external: ecs
44+
name: destination.user.full_name
4345
- external: ecs
4446
name: destination.user.name
4547
- external: ecs
@@ -236,6 +238,8 @@
236238
name: source.user.group.name
237239
- external: ecs
238240
name: source.user.id
241+
- external: ecs
242+
name: source.user.full_name
239243
- external: ecs
240244
name: source.user.name
241245
- external: ecs
@@ -252,6 +256,8 @@
252256
name: vulnerability.id
253257
- external: ecs
254258
name: log.file.path
259+
- external: ecs
260+
name: user.full_name
255261
- external: ecs
256262
name: user.name
257263
- external: ecs

packages/checkpoint/docs/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -732,6 +732,8 @@ The raw `originsicname` value is preserved in `checkpoint.origin_sic_name`. Beca
732732
| destination.service.name | Name of the service data is collected from. | keyword |
733733
| destination.user.domain | Name of the directory the user is a member of. For example, an LDAP or Active Directory domain name. | keyword |
734734
| destination.user.email | User email address. | keyword |
735+
| destination.user.full_name | User's full name, if available. | keyword |
736+
| destination.user.full_name.text | Multi-field of `destination.user.full_name`. | match_only_text |
735737
| destination.user.id | Unique identifier of the user. | keyword |
736738
| destination.user.name | Short name or login of the user. | keyword |
737739
| destination.user.name.text | Multi-field of `destination.user.name`. | match_only_text |
@@ -857,6 +859,8 @@ The raw `originsicname` value is preserved in `checkpoint.origin_sic_name`. Beca
857859
| source.port | Port of the source. | long |
858860
| source.user.domain | Name of the directory the user is a member of. For example, an LDAP or Active Directory domain name. | keyword |
859861
| source.user.email | User email address. | keyword |
862+
| source.user.full_name | User's full name, if available. | keyword |
863+
| source.user.full_name.text | Multi-field of `source.user.full_name`. | match_only_text |
860864
| source.user.group.name | Name of the group. | keyword |
861865
| source.user.id | Unique identifier of the user. | keyword |
862866
| source.user.name | Short name or login of the user. | keyword |
@@ -867,6 +871,8 @@ The raw `originsicname` value is preserved in `checkpoint.origin_sic_name`. Beca
867871
| url.original.text | Multi-field of `url.original`. | match_only_text |
868872
| user.domain | Name of the directory the user is a member of. For example, an LDAP or Active Directory domain name. | keyword |
869873
| user.email | User email address. | keyword |
874+
| user.full_name | User's full name, if available. | keyword |
875+
| user.full_name.text | Multi-field of `user.full_name`. | match_only_text |
870876
| user.group.name | Name of the group. | keyword |
871877
| user.id | Unique identifier of the user. | keyword |
872878
| user.name | Short name or login of the user. | keyword |

packages/checkpoint/manifest.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: checkpoint
22
title: Check Point
3-
version: "1.47.0"
3+
version: "1.48.0"
44
description: Collect logs from Check Point with Elastic Agent.
55
type: integration
66
format_version: "3.0.3"

0 commit comments

Comments
 (0)