Imperva WAF 로그 수집
이 문서에서는 API (가져오기) 또는 Amazon S3 (푸시)를 사용하여 Imperva 웹 애플리케이션 방화벽 (WAF)에서 Google Security Operations로 로그를 수집하는 방법을 설명합니다. 파서는 SYSLOG+KV, JSON, CEF, LEEF 형식의 로그를 통합 데이터 모델 (UDM)로 변환합니다. 다양한 로그 구조를 처리하고, 관련 필드를 추출하고, UDM 속성으로 정규화하며, 보안 분석을 강화하기 위해 문맥 정보로 데이터를 보강합니다.
시작하기 전에
- 구성 요구사항에 가장 적합한 처리 유형 (API 또는 Amazon S3)을 선택합니다.
- Google SecOps 인스턴스가 있는지 확인합니다.
- AWS에 대한 권한이 있는지 확인합니다.
- Imperva WAF에 대한 권한이 있는지 확인합니다.
API를 사용하여 Imperva WAF 로그 수집
Imperva WAF의 읽기 전용 사용자 구성
- 권한이 있는 계정으로 Imperva Console에 로그인합니다.
- 설정 > 사용자 및 역할로 이동합니다.
- Add User(사용자 추가)를 클릭합니다.
- 필수 입력란을 작성합니다.
- 사용자 이름: 고유한 사용자 이름을 입력합니다.
- 비밀번호: 안전한 비밀번호를 설정합니다.
- 이메일: 사용자의 이메일 주소를 입력합니다.
- 역할 섹션에서 읽기 권한 사용자 역할을 선택합니다.
- 저장을 클릭하여 읽기 전용 액세스 권한이 있는 사용자를 만듭니다.
선택사항: 리더 사용자를 API 전용으로 구성
- 사용자 목록에서 새로 만든 사용자를 찾습니다.
- 사용자 이름 옆에 있는 작업 버튼 (점 3개)을 클릭합니다.
- API 전용으로 설정 사용자를 선택합니다.
API ID 및 API 키 생성
- 사용자 목록에서 새로 만든 사용자를 선택합니다.
- 설정을 선택하고 API 키를 클릭합니다.
- API 키 추가를 클릭합니다.
- 필수 입력란을 작성합니다.
- 이름: API 키의 설명이 포함된 이름을 입력합니다.
- 선택사항: 설명: 설명을 제공할 수 있습니다(선택사항).
- API 키 만료일 목록에서 없음을 선택합니다.
- 사용 설정하려면 상태를 선택합니다.
- 저장을 클릭합니다.
시스템에 API ID 및 API 키가 표시됩니다. 사용자 인증 정보는 다시 표시되지 않으므로 복사하여 저장합니다.
서드 파티 API를 통해 Imperva WAF 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정 > 피드로 이동합니다.
- 새로 추가를 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다(예: Imperva WAF Logs).
- 소스 유형으로 서드 파티 API를 선택합니다.
- 로그 유형으로 Imperva를 선택합니다.
- 다음을 클릭합니다.
- 다음 입력 매개변수의 값을 지정합니다.
- 인증 HTTP 헤더: Imperva API ID 및 키를 두 줄(
apiId:<YOUR_API_ID>
및apiKey:<YOUR_API_KEY>
)에 입력합니다. - 애셋 네임스페이스: 애셋 네임스페이스입니다.
- 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
- 인증 HTTP 헤더: Imperva API ID 및 키를 두 줄(
- 다음을 클릭합니다.
- 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.
Amazon S3를 사용하여 Imperva WAF 로그 수집
AWS IAM 및 S3 구성
- 버킷 만들기 사용자 가이드에 따라 Amazon S3 버킷을 만듭니다.
- 나중에 사용할 수 있도록 버킷 이름 및 리전을 저장합니다.
- IAM 사용자 만들기 사용자 가이드에 따라 사용자를 만듭니다.
- 만든 사용자를 선택합니다.
- 보안 사용자 인증 정보 탭을 선택합니다.
- 액세스 키 섹션에서 액세스 키 만들기를 클릭합니다.
- 사용 사례로 서드 파티 서비스를 선택합니다.
- 다음을 클릭합니다.
- 선택사항: 설명 태그를 추가합니다.
- 액세스 키 만들기를 클릭합니다.
- .csv 파일 다운로드를 클릭하고 나중에 사용할 수 있도록 액세스 키 및 보안 비밀 액세스 키를 저장합니다.
- 완료를 클릭합니다.
- 권한 탭을 선택합니다.
- 권한 정책 섹션에서 권한 추가를 클릭합니다.
- 권한 추가를 선택합니다.
- Attach policies directly(정책 직접 연결)를 선택합니다.
- AmazonS3FullAccess 정책을 검색하여 선택합니다.
- 다음을 클릭합니다.
- 권한 추가를 클릭합니다.
Imperva WAF Amazon S3 연결 구성
- 권한이 있는 계정으로 Imperva Console에 로그인합니다.
- 로그 > 로그 설정으로 이동합니다.
- Amazon S3를 선택합니다.
- 필수 입력란을 작성합니다.
- 액세스 키
- 보안 비밀 키
- 경로:
<Amazon S3 bucket name>/<log folder>
형식으로 경로를 입력합니다(예:MyBucket/MyIncapsulaLogFolder
).
- 연결 테스트를 클릭하여 테스트 파일이 지정된 폴더로 전송되는 전체 테스트 주기를 실행합니다.
- 로그 파일 형식을 CEF로 선택합니다.
- 기본적으로 로그 파일은 압축됩니다. 파일을 압축하지 않도록 옵션을 설정합니다.
Amazon S3에서 Imperva WAF 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정 > 피드로 이동합니다.
- 새로 추가를 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다(예:
Imperva WAF Logs
). - 소스 유형으로 Amazon S3를 선택합니다.
- 로그 유형으로 Imperva를 선택합니다.
- 다음을 클릭합니다.
다음 입력 매개변수의 값을 지정합니다.
- 리전: Amazon S3 버킷이 있는 리전입니다.
- S3 URI: 버킷 URI입니다.
s3://your-log-bucket-name/
your-log-bucket-name
을 버킷의 실제 이름으로 바꿉니다.
- URI: 디렉터리 또는 하위 디렉터리가 포함된 디렉터리를 선택합니다.
- 소스 삭제 옵션: 원하는 삭제 옵션을 선택합니다.
- 액세스 키 ID: S3 버킷에 대한 액세스 권한이 있는 사용자 액세스 키입니다.
- 보안 비밀 액세스 키: S3 버킷에 액세스할 수 있는 사용자 보안 비밀 키입니다.
- 애셋 네임스페이스: 애셋 네임스페이스입니다.
- 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
다음을 클릭합니다.
확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.
UDM 매핑 표
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
account_id | target.user.userid | JSON 객체의 계정 ID |
행위 | security_result.action | act 이 allowed , alert , REQ_PASSED 로 시작하거나 REQ_CACHED 로 시작하면 ALLOW 로 설정합니다. act 이 deny , blocked , REQ_BLOCKED 로 시작하거나 REQ_CHALLENGE 로 시작하면 BLOCK 로 설정합니다. act 가 (?i)REQ_BAD 정규식과 일치하면 FAIL 로 설정합니다. 그렇지 않으면 UNKNOWN_ACTION 로 설정합니다. |
앱 | network.application_protocol | kv.app 에서 이름이 변경되었습니다. 대문자로 변환됩니다. |
calCountryOrRegion | principal.location.country_or_region | calCountryOrRegion 에서 이름이 변경되었습니다. |
고양이 | security_result.action_details | cat 가 REQ_PASSED 또는 REQ_CACHED 로 시작하는 경우 action 를 ALLOW 로 설정하고 action_details 를 cat 의 값을 기반으로 설명으로 설정합니다. cat 가 REQ_BAD 로 시작하는 경우 action 를 FAIL 로 설정하고 action_details 를 cat 의 값을 기반으로 설명으로 설정합니다. cat 가 REQ_BLOCKED 또는 REQ_CHALLENGE 로 시작하는 경우 action 를 BLOCK 로 설정하고 action_details 를 cat 의 값을 기반으로 설명으로 설정합니다. |
cicode | principal.location.city | cicode 에서 이름이 변경되었습니다. |
classified_client | security_result.detection_fields | classified_client 가 비어 있지 않으면 키가 classified_client 이고 값이 classified_client 인 새 detection_fields 항목을 만듭니다. |
client.domain | principal.hostname, principal.asset.hostname | client.domain 에서 이름이 변경되었습니다. |
client.geo.country_iso_code | principal.location.country_or_region | client.geo.country_iso_code 에서 이름이 변경되었습니다. |
client.ip | principal.ip, principal.asset.ip | principal.ip 및 principal.asset.ip 에 병합되었습니다. |
cn1 | network.http.response_code | cn1 에서 이름이 변경되었습니다. 정수로 변환됩니다. |
context_key | target.resource.name | context_key 에서 이름이 변경되었습니다. |
국가 | principal.location.country_or_region | country 에서 이름이 변경되었습니다. |
credentials_leaked | security_result.detection_fields | 문자열로 변환됩니다. 빈 값이 아니면 키가 credentials_leaked 이고 값이 credentials_leaked 인 새 detection_fields 항목을 만듭니다. |
cs1 | security_result.detection_fields | cs1 가 비어 있지 않은 경우 NA 또는 `, create a new detection_fieldsentry with key cs1Labeland value cs1`입니다. |
cs1Label | security_result.detection_fields | cs1 에서 생성된 detection_fields 항목의 키로 사용됩니다. |
cs2 | security_result.detection_fields | cs2 가 비어 있지 않으면 키가 cs2Label 이고 값이 cs2 인 새 detection_fields 항목을 만듭니다. |
cs2Label | security_result.detection_fields | cs2 에서 생성된 detection_fields 항목의 키로 사용됩니다. |
cs3 | security_result.detection_fields | cs3 가 비어 있지 않은 경우 - 또는 `, create a new detection_fieldsentry with key cs3Labeland value cs3`입니다. |
cs3Label | security_result.detection_fields | cs3 에서 생성된 detection_fields 항목의 키로 사용됩니다. |
cs4 | security_result.detection_fields | cs4 가 비어 있지 않으면 키가 cs4Label 이고 값이 cs4 인 새 detection_fields 항목을 만듭니다. |
cs4Label | security_result.detection_fields | cs4 에서 생성된 detection_fields 항목의 키로 사용됩니다. |
cs5 | security_result.detection_fields | cs5 가 비어 있지 않으면 키가 cs5Label 이고 값이 cs5 인 새 detection_fields 항목을 만듭니다. |
cs5Label | security_result.detection_fields | cs5 에서 생성된 detection_fields 항목의 키로 사용됩니다. |
cs6 | principal.application | cs6 에서 이름이 변경되었습니다. |
cs7 | principal.location.region_latitude | cs7Label 이 latitude 이면 principal.location.region_latitude 로 이름을 바꿉니다. 부동 소수점 수로 변환됩니다. |
cs7Label | cs7Label 이 latitude 이면 cs7 의 매핑을 결정하는 데 사용됩니다. |
|
cs8 | principal.location.region_longitude | cs8Label 이 longitude 이면 principal.location.region_longitude 로 이름을 바꿉니다. 부동 소수점 수로 변환됩니다. |
cs8Label | cs8Label 이 longitude 이면 cs8 의 매핑을 결정하는 데 사용됩니다. |
|
cs9 | security_result.rule_name, extensions.vulns.vulnerabilities.name | cs9 가 비어 있지 않으면 security_result.rule_name 로 설정하고 이름이 cs9 인 새 vulnerabilities 항목을 만듭니다. |
고객 | target.user.user_display_name | Customer 에서 이름이 변경되었습니다. |
declared_client | security_result.detection_fields | declared_client 가 비어 있지 않으면 키가 declared_client 이고 값이 declared_client 인 새 detection_fields 항목을 만듭니다. |
description | security_result.threat_name | description 에서 이름이 변경되었습니다. |
deviceExternalId | network.community_id | deviceExternalId 에서 이름이 변경되었습니다. |
deviceReceiptTime | metadata.event_timestamp | 날짜로 파싱되고 metadata.event_timestamp 로 설정됩니다. 비어 있으면 log_timestamp 또는 kv.start 가 대신 사용됩니다. |
dhost | target.hostname | kv.dhost 에서 이름이 변경되었습니다. |
dproc | security_result.category_details | dproc 에서 이름이 변경되었습니다. |
dpt | target.port | kv.dpt 에서 이름이 변경되었습니다. 정수로 변환됩니다. |
dst | target.ip, target.asset.ip | dst 가 비어 있지 않으면 target.ip 및 target.asset.ip 로 병합됩니다. |
dstPort | target.port | dstPort 에서 이름이 변경되었습니다. 정수로 변환됩니다. |
duser | target.user.userid | duser 가 정규식 .*?Alert.* 와 일치하지 않고 비어 있지 않으면 target.user.userid 로 이름을 바꿉니다. |
end | security_result.detection_fields | end 가 비어 있지 않으면 키가 event_end_time 이고 값이 end 인 새 detection_fields 항목을 만듭니다. |
event.id | JSON 객체의 이벤트 ID입니다. | |
event.provider | principal.user.user_display_name | event.provider 에서 이름이 변경되었습니다. |
failed_logins_last_24h | security_result.detection_fields | 문자열로 변환됩니다. 빈 값이 아니면 키가 failed_logins_last_24h 이고 값이 failed_logins_last_24h 인 새 detection_fields 항목을 만듭니다. |
fileId | network.session_id | fileId 에서 이름이 변경되었습니다. |
filePermission | security_result.detection_fields | filePermission 가 비어 있지 않으면 키가 filePermission 이고 값이 filePermission 인 새 detection_fields 항목을 만듭니다. |
fileType | security_result.detection_fields | fileType 가 비어 있지 않으면 키가 fileType 이고 값이 fileType 인 새 detection_fields 항목을 만듭니다. |
디지털 지문 | security_result.detection_fields | fingerprint 가 비어 있지 않으면 키가 log_imperva_fingerprint 이고 값이 fingerprint 인 새 detection_fields 항목을 만듭니다. |
flexString1 | network.http.response_code | kv.flexString1 에서 이름이 변경되었습니다. 정수로 변환됩니다. |
http.request.body.bytes | network.sent_bytes | 부호 없는 정수로 변환됩니다. http.request.body.bytes 에서 이름이 변경되었습니다. |
http.request.method | network.http.method | http.request.method 에서 이름이 변경되었습니다. |
imperva.abp.apollo_rule_versions | security_result.detection_fields | imperva.abp.apollo_rule_versions 의 각 항목에 대해 키가 apollo_rule_versions_{index} 이고 값이 항목과 같은 새 detection_fields 항목을 만듭니다. |
imperva.abp.bot_behaviors | security_result.detection_fields | imperva.abp.bot_behaviors 의 각 항목에 대해 키가 bot_behaviors_{index} 이고 값이 항목과 같은 새 detection_fields 항목을 만듭니다. |
imperva.abp.bot_deciding_condition_ids | security_result.detection_fields | imperva.abp.bot_deciding_condition_ids 의 각 항목에 대해 키가 bot_deciding_condition_ids_{index} 이고 값이 항목과 같은 새 detection_fields 항목을 만듭니다. |
imperva.abp.bot_deciding_condition_names | security_result.detection_fields | imperva.abp.bot_deciding_condition_names 의 각 항목에 대해 키가 bot_deciding_condition_names_{index} 이고 값이 항목과 같은 새 detection_fields 항목을 만듭니다. |
imperva.abp.bot_triggered_condition_ids | security_result.detection_fields | imperva.abp.bot_triggered_condition_ids 의 각 항목에 대해 키가 bot_triggered_condition_ids_{index} 이고 값이 항목과 같은 새 detection_fields 항목을 만듭니다. |
imperva.abp.bot_triggered_condition_names | security_result.detection_fields | imperva.abp.bot_triggered_condition_names 의 각 항목에 대해 키가 bot_triggered_condition_names_{index} 이고 값이 항목과 같은 새 detection_fields 항목을 만듭니다. |
imperva.abp.bot_violations | security_result.detection_fields | imperva.abp.bot_violations 의 각 항목에 대해 키가 bot_violations_{index} 이고 값이 항목과 같은 새 detection_fields 항목을 만듭니다. |
imperva.abp.customer_request_id | network.session_id | imperva.abp.customer_request_id 에서 이름이 변경되었습니다. |
imperva.abp.headers_accept_encoding | security_result.detection_fields | imperva.abp.headers_accept_encoding 가 비어 있지 않으면 키가 Accept Encoding 이고 값이 imperva.abp.headers_accept_encoding 인 새 detection_fields 항목을 만듭니다. |
imperva.abp.headers_accept_language | security_result.detection_fields | imperva.abp.headers_accept_language 가 비어 있지 않으면 키가 Accept Language 이고 값이 imperva.abp.headers_accept_language 인 새 detection_fields 항목을 만듭니다. |
imperva.abp.headers_connection | security_result.detection_fields | imperva.abp.headers_connection 가 비어 있지 않으면 키가 headers_connection 이고 값이 imperva.abp.headers_connection 인 새 detection_fields 항목을 만듭니다. |
imperva.abp.headers_referer | network.http.referral_url | imperva.abp.headers_referer 에서 이름이 변경되었습니다. |
imperva.abp.hsig | security_result.detection_fields | imperva.abp.hsig 가 비어 있지 않으면 키가 hsig 이고 값이 imperva.abp.hsig 인 새 detection_fields 항목을 만듭니다. |
imperva.abp.monitor_action | security_result.action, security_result.severity | imperva.abp.monitor_action 가 정규식 (?i)allow 와 일치하면 security_action 를 ALLOW 로, severity 를 INFORMATIONAL 로 설정합니다. imperva.abp.monitor_action 이 정규식 (?i)captcha 또는 (?i)block 와 일치하면 security_action 를 BLOCK 로 설정합니다. |
imperva.abp.pid | principal.process.pid | imperva.abp.pid 에서 이름이 변경되었습니다. |
imperva.abp.policy_id | security_result.detection_fields | imperva.abp.policy_id 가 비어 있지 않으면 키가 Policy Id 이고 값이 imperva.abp.policy_id 인 새 detection_fields 항목을 만듭니다. |
imperva.abp.policy_name | security_result.detection_fields | imperva.abp.policy_name 가 비어 있지 않으면 키가 Policy Name 이고 값이 imperva.abp.policy_name 인 새 detection_fields 항목을 만듭니다. |
imperva.abp.random_id | additional.fields | imperva.abp.random_id 가 비어 있지 않으면 키가 Random Id 이고 값이 imperva.abp.random_id 인 새 additional.fields 항목을 만듭니다. |
imperva.abp.request_type | principal.labels | imperva.abp.request_type 가 비어 있지 않으면 키가 request_type 이고 값이 imperva.abp.request_type 인 새 principal.labels 항목을 만듭니다. |
imperva.abp.selector | security_result.detection_fields | imperva.abp.selector 가 비어 있지 않으면 키가 selector 이고 값이 imperva.abp.selector 인 새 detection_fields 항목을 만듭니다. |
imperva.abp.selector_derived_id | security_result.detection_fields | imperva.abp.selector_derived_id 가 비어 있지 않으면 키가 selector_derived_id 이고 값이 imperva.abp.selector_derived_id 인 새 detection_fields 항목을 만듭니다. |
imperva.abp.tls_fingerprint | security_result.description | imperva.abp.tls_fingerprint 에서 이름이 변경되었습니다. |
imperva.abp.token_id | target.resource.product_object_id | imperva.abp.token_id 에서 이름이 변경되었습니다. |
imperva.abp.zuid | additional.fields | imperva.abp.zuid 가 비어 있지 않으면 키가 zuid 이고 값이 imperva.abp.zuid 인 새 additional.fields 항목을 만듭니다. |
imperva.additional_factors | additional.fields | imperva.additional_factors 의 각 항목에 대해 키가 additional_factors_{index} 이고 값이 항목과 같은 새 additional.fields 항목을 만듭니다. |
imperva.audit_trail.event_action | security_result.detection_fields | imperva.audit_trail.event_action 가 비어 있지 않으면 키가 imperva.audit_trail.event_action 이고 값이 imperva.audit_trail.event_action_description 인 새 detection_fields 항목을 만듭니다. |
imperva.audit_trail.event_action_description | security_result.detection_fields | imperva.audit_trail.event_action 에서 생성된 detection_fields 항목의 값으로 사용됩니다. |
imperva.audit_trail.event_context | security_result.detection_fields | imperva.audit_trail.event_context 가 비어 있지 않으면 키가 imperva.audit_trail.event_context 이고 값이 imperva.audit_trail.event_context_description 인 새 detection_fields 항목을 만듭니다. |
imperva.audit_trail.event_context_description | security_result.detection_fields | imperva.audit_trail.event_context 에서 생성된 detection_fields 항목의 값으로 사용됩니다. |
imperva.country | principal.location.country_or_region | imperva.country 에서 이름이 변경되었습니다. |
imperva.declared_client | security_result.detection_fields | imperva.declared_client 가 비어 있지 않으면 키가 declared_client 이고 값이 imperva.declared_client 인 새 detection_fields 항목을 만듭니다. |
imperva.device_reputation | additional.fields | imperva.device_reputation 의 각 항목에 대해 키가 device_reputation 이고 항목이 포함된 목록 값인 새 additional.fields 항목을 만듭니다. |
imperva.domain_risk | security_result.detection_fields | imperva.domain_risk 가 비어 있지 않으면 키가 domain_risk 이고 값이 imperva.domain_risk 인 새 detection_fields 항목을 만듭니다. |
imperva.failed_logins_last_24h | security_result.detection_fields | 문자열로 변환됩니다. 빈 값이 아니면 키가 failed_logins_last_24h 이고 값이 failed_logins_last_24h 인 새 detection_fields 항목을 만듭니다. |
imperva.fingerprint | security_result.detection_fields | imperva.fingerprint 가 비어 있지 않으면 키가 log_imperva_fingerprint 이고 값이 imperva.fingerprint 인 새 detection_fields 항목을 만듭니다. |
imperva.ids.account_id | metadata.product_log_id | imperva.ids.account_id 에서 이름이 변경되었습니다. |
imperva.ids.account_name | metadata.product_event_type | imperva.ids.account_name 에서 이름이 변경되었습니다. |
imperva.ids.site_id | additional.fields | imperva.ids.site_id 가 비어 있지 않으면 키가 site_id 이고 값이 imperva.ids.site_id 인 새 additional.fields 항목을 만듭니다. |
imperva.ids.site_name | additional.fields | imperva.ids.site_name 가 비어 있지 않으면 키가 site_name 이고 값이 imperva.ids.site_name 인 새 additional.fields 항목을 만듭니다. |
imperva.referrer | network.http.referral_url | imperva.referrer 에서 이름이 변경되었습니다. |
imperva.request_session_id | network.session_id | imperva.request_session_id 에서 이름이 변경되었습니다. |
imperva.request_user | security_result.detection_fields | imperva.request_user 가 비어 있지 않으면 키가 request_user 이고 값이 imperva.request_user 인 새 detection_fields 항목을 만듭니다. |
imperva.risk_level | security_result.severity_details | imperva.risk_level 에서 이름이 변경되었습니다. |
imperva.risk_reason | security_result.description | imperva.risk_reason 에서 이름이 변경되었습니다. |
imperva.significant_domain_name | security_result.detection_fields | imperva.significant_domain_name 가 비어 있지 않으면 키가 significant_domain_name 이고 값이 imperva.significant_domain_name 인 새 detection_fields 항목을 만듭니다. |
imperva.violated_directives | security_result.detection_fields | imperva.violated_directives 의 각 항목에 대해 키가 violated_directives 이고 값이 항목과 같은 새 detection_fields 항목을 만듭니다. |
in | network.received_bytes | in 에서 이름이 변경되었습니다. 부호 없는 정수로 변환됩니다. |
log_timestamp | metadata.event_timestamp | deviceReceiptTime 가 비어 있고 kv.start 도 비어 있으면 metadata.event_timestamp 로 설정합니다. |
메시지 | metadata.description | message 가 비어 있지 않고 event.provider , imperva.ids.account_name , client.ip 가 모두 비어 있으면 metadata.description 로 설정합니다. |
postbody | security_result.detection_fields | postbody 가 비어 있지 않으면 키가 post_body_info 이고 값이 postbody 인 새 detection_fields 항목을 만듭니다. |
proto | network.application_protocol | proto 에서 이름이 변경되었습니다. |
protoVer | network.tls.version, network.tls.cipher | protoVer 가 비어 있지 않으면 파싱하여 tls_version 및 tls_cipher 를 추출한 후 각각 network.tls.version 및 network.tls.cipher 로 이름을 바꿉니다. |
요청 | target.url | kv.request 에서 이름이 변경되었습니다. |
requestClientApplication | network.http.user_agent | requestClientApplication 에서 이름이 변경되었습니다. |
requestMethod | network.http.method | requestMethod 에서 이름이 변경되었습니다. 대문자로 변환됩니다. |
resource_id | target.resource.id | resource_id 에서 이름이 변경되었습니다. |
resource_type_key | target.resource.type | resource_type_key 에서 이름이 변경되었습니다. |
rt | metadata.event_timestamp | deviceReceiptTime 를 추출하도록 파싱된 후 날짜로 파싱되고 metadata.event_timestamp 로 설정됩니다. |
security_result.action | security_result.action | _action 필드의 값과 병합됩니다. |
security_result.severity | security_result.severity | sevs 이 error 또는 warning 이면 HIGH 로 설정합니다. sevs 이 critical 이면 CRITICAL 로 설정합니다. sevs 이 medium 또는 notice 이면 MEDIUM 로 설정합니다. sevs 이 information 또는 info 이면 LOW 로 설정합니다. |
server.domain | target.hostname, target.asset.hostname | server.domain 에서 이름이 변경되었습니다. |
server.geo.name | target.location.name | server.geo.name 에서 이름이 변경되었습니다. |
줄이는 것을 | security_result.threat_id | severity 에서 이름이 변경되었습니다. |
siteid | security_result.detection_fields | siteid 가 비어 있지 않으면 키가 siteid 이고 값이 siteid 인 새 detection_fields 항목을 만듭니다. |
sourceServiceName | target.hostname | kv.sourceServiceName 에서 이름이 변경되었습니다. |
spt | principal.port | kv.spt 에서 이름이 변경되었습니다. 정수로 변환됩니다. |
src | principal.ip, principal.asset.ip | src 가 비어 있지 않으면 principal.ip 및 principal.asset.ip 로 병합됩니다. |
srcPort | principal.port | srcPort 에서 이름이 변경되었습니다. 정수로 변환됩니다. |
시작 | security_result.detection_fields, metadata.event_timestamp | start 가 비어 있지 않으면 키가 event_start_time 이고 값이 start 인 새 detection_fields 항목을 만듭니다. 날짜로 파싱되며 deviceReceiptTime 이 비어 있으면 metadata.event_timestamp 로 설정됩니다. |
successful_logins_last_24h | security_result.detection_fields | 문자열로 변환됩니다. 빈 값이 아니면 키가 successful_logins_last_24h 이고 값이 successful_logins_last_24h 인 새 detection_fields 항목을 만듭니다. |
suid | target.user.userid | suid 에서 이름이 변경되었습니다. |
시간 | metadata.event_timestamp | 문자열로 변환됩니다. 날짜로 파싱되고 metadata.event_timestamp 로 설정됩니다. |
type_key | metadata.product_event_type | type_key 에서 이름이 변경되었습니다. |
url | target.process.file.full_path | url.path 이 비어 있지 않거나 / 이면 target.process.file.full_path 로 설정합니다. |
url | target.url | url 에서 이름이 변경되었습니다. qstr 가 비어 있지 않으면 ? 구분자로 url 에 추가됩니다. |
user.email | principal.user.email_addresses | user.email 가 비어 있지 않고 정규식 ^.+@.+$ 와 일치하면 principal.user.email_addresses 에 병합됩니다. |
user_agent | network.http.user_agent | user_agent 에서 이름이 변경되었습니다. |
user_agent.original | network.http.parsed_user_agent | user_agent.original 가 비어 있지 않거나 * 이면 parseduseragent 로 변환되고 이름이 network.http.parsed_user_agent 로 바뀝습니다. |
user_details | principal.user.email_addresses | user_details 가 비어 있지 않고 정규식 ^.+@.+$ 와 일치하면 principal.user.email_addresses 에 병합됩니다. |
user_id | principal.user.userid | user_id 에서 이름이 변경되었습니다. |
ver | network.tls.version, network.tls.cipher | ver 가 비어 있지 않으면 파싱하여 tls_version 및 tls_cipher 를 추출한 후 각각 network.tls.version 및 network.tls.cipher 로 이름을 바꿉니다. |
xff | intermediary.ip, intermediary.asset.ip, intermediary.hostname, intermediary.asset.hostname | xff 이 비어 있지 않으면 IP 주소와 호스트 이름을 추출하도록 처리됩니다. IP 주소가 intermediary.ip 및 intermediary.asset.ip 로 병합됩니다. 호스트 이름은 intermediary.hostname 및 intermediary.asset.hostname 로 설정됩니다. |
변경사항
2025-01-16
개선사항:
log.imperva.audit_trail.resource_name
를target.resource.name
에 매핑했습니다.
2024-11-14
개선사항:
- 새 로그 형식을 처리하는 지원을 추가했습니다.
2024-10-10
개선사항:
metadata.vendor_name
를Imperva Cloud WAF
에 매핑했습니다.
2024-10-03
개선사항:
cn1
를network.http.response_code
에 매핑했습니다.
2024-09-05
개선사항:
- 새 로그 형식을 처리하는 지원을 추가했습니다.
2024-08-27
개선사항:
log.imperva.ids.account_name
매핑을metadata.product_event_type
에서target.user.user_display_name
로 변경했습니다.
2024-06-25
개선사항:
- JSON 로그를 처리하는 지원을 추가했습니다.
2024-04-02
개선사항:
log.imperva.request_user
를security_result.detection_fields
에 매핑했습니다.log.imperva.classified_client
를security_result.detection_fields
에 매핑했습니다.
2024-02-26
개선사항:
log.imperva.request_session_id
를network.session_id
에 매핑했습니다.log.imperva.successful_logins_last_24h
,log.imperva.path
,log.imperva.failed_logins_last_24h
를security_result.detection_fields
에 매핑했습니다.log.imperva.risk_reason
를security_result.severity_details
및security_result.severity
에 매핑했습니다.additional_factor
,log.imperva.device_reputation
,log.imperva.credentials_leaked
를additional.fields
에 매핑했습니다.log.imperva.fingerprint
를security_result.description
에 매핑했습니다.log.imperva.referrer
를network.http.referral_url
에 매핑했습니다.log.imperva.classified_client
를principal.process.file.full_path
에 매핑함
2024-02-06
개선사항:
- json_array의
for loop
내에서accept_encoding_label
,site_name_label
,random_id_label
,request_type_label
,accept_language_label
,headers_connection_label
,zuid_labels
,site_id_label
,policy_id
,policy_name
,selector_derived_id
,hsig
,selector
,detection_fields_event_action
,detection_fields_event_context
,detection_fields_significant_domain_name
,detection_fields_domain_risk
를 null로 초기화했습니다.
2024-01-27
개선사항:
description
를security_result.threat_name
에 매핑했습니다.severity
를security_result.threat_id
에 매핑했습니다.kv.src
,src
,log.client.ip
를principal.asset.ip
에 매핑했습니다.kv.dst
및dst
를target.asset.ip
에 매핑했습니다.kv.dvc
를about.asset.ip
에 매핑했습니다.kv.cs9
및cs9
를security_result.rule_name
에 매핑했습니다.kv.fileType
및fileType
를security_result.rule_type
에 매핑했습니다.dst
를target.asset.ip
에 매핑했습니다.xff
및forwardedIp
를intermediary.asset.ip
에 매핑했습니다.log.client.domain
를principal.asset.hostname
에 매핑했습니다.log.server.domain
를target.asset.hostname
에 매핑했습니다.
2023-10-16
버그 수정:
- json_array의
for loop
내에서security_result
및security_action
를 null로 초기화했습니다. security_action
를security_result.action
에 병합하기 전에 null 검사를 추가했습니다.log.imperva.abp.monitor_action
이block
인 경우security_action
를BLOCK
에 매핑했습니다.
2023-09-26
개선사항:
- CSP 로그에서
significant_domain_name
,domain_risk
,violated_directives
를security_result.detection_fields
에 매핑했습니다.
2023-08-07
버그 수정:
- JSON 로그 배열을 파싱하는 지원을 추가했습니다.
xff
를intermediary.hostname
에 매핑하기 전에 호스트 이름을 확인하는 Grok 패턴을 추가했습니다.
2023-06-16
버그 수정:
imperva.audit_trail.event_action
를security_result.detection_fields
에 매핑했습니다.imperva.audit_trail.event_action_description
를security_result.detection_fields
에 매핑했습니다.imperva.audit_trail.event_context
를security_result.detection_fields
에 매핑했습니다.imperva.audit_trail.event_context_description
를security_result.detection_fields
에 매핑했습니다.- 타임스탬프 파싱 문제가 수정되었습니다.
- 잘못된 형식의 로그를 삭제했습니다.
2023-06-16
버그 수정:
imperva.audit_trail.event_action
를security_result.detection_fields
에 매핑했습니다.imperva.audit_trail.event_action_description
를security_result.detection_fields
에 매핑했습니다.imperva.audit_trail.event_context
를security_result.detection_fields
에 매핑했습니다.imperva.audit_trail.event_context_description
를security_result.detection_fields
에 매핑했습니다.- 타임스탬프 파싱 문제가 수정되었습니다.
- 잘못된 형식의 로그를 삭제했습니다.
2023-06-08
개선사항:
imperva.abp.apollo_rule_versions
를security_result.detection_fields
에 매핑했습니다.imperva.abp.bot_violations
를security_result.detection_fields
에 매핑했습니다.imperva.abp.bot_behaviors
를security_result.detection_fields
에 매핑했습니다.imperva.abp.bot_deciding_condition_ids
를security_result.detection_fields
에 매핑했습니다.imperva.abp.bot_deciding_condition_names
를security_result.detection_fields
에 매핑했습니다.imperva.abp.bot_triggered_condition_ids
를security_result.detection_fields
에 매핑했습니다.imperva.abp.bot_triggered_condition_names
를security_result.detection_fields
에 매핑했습니다.
2023-04-26
개선사항:
- statedata에서
kv.src
필드를 정의했습니다. kvdata.ver
를network.tls.version
및 network.tls.cipher에 매핑했습니다.kvdata.sip
를principal.ip
에 매핑했습니다.kvdata.spt
를principal.port
에 매핑했습니다.kvdata.act
가 'security_result.action_details'에 매핑되었습니다.kvdata.app
가 'network.application_protocol'에 매핑되었습니다.kvdata.requestMethod
를network.http.method
에 매핑했습니다.
2023-02-04
개선사항:
deviceReceiptTime
필드의 경우event.timestamp
에 rebase = true를 추가했습니다.
2023-01-19
개선사항:
- 다음 매핑을 추가하여 파서 로그에 대한 지원을 추가했습니다.
event.provider
를principal.user.userid
에 매핑했습니다.client.ip
를principal.ip
에 매핑했습니다.client.domain
를principal.hostname
에 매핑했습니다.imperva.abp.request_type
를principal.labels
에 매핑했습니다.imperva.abp.pid
를principal.process.pid
에 매핑했습니다.client.geo.country_iso_code
를principal.location.country_or_region
에 매핑했습니다.server.domain
를target.hostname
에 매핑했습니다.server.geo.name
를target.location.name
에 매핑했습니다.url.path
를target.process.file.full_path
에 매핑했습니다.imperva.abp.customer_request_id
를target.resource.id
에 매핑했습니다.imperva.abp.token_id
를target.resource.product_object_id
에 매핑했습니다.imperva.abp.random_id
를additional.fields
에 매핑했습니다.http.request.method
를network.http.method
에 매핑했습니다.user_agent.original
를network.http.parsed_user_agent
에 매핑했습니다.imperva.abp.headers_referer
를network.http.referral_url
에 매핑했습니다.imperva.abp.zuid
를additional.fields
에 매핑했습니다.imperva.ids.site_name
를additional.fields
에 매핑했습니다.imperva.ids.site_id
를additional.fields
에 매핑했습니다.imperva.ids.account_name
를metadata.product_event_type
에 매핑했습니다.imperva.ids.account_id
를metadata.product_log_id
에 매핑했습니다.imperva.abp.headers_accept_encoding
를security_result.detection_fields
에 매핑했습니다.imperva.abp.headers_accept_language
를security_result.detection_fields
에 매핑했습니다.imperva.abp.headers_connection
를security_result.detection_fields
에 매핑함imperva.abp.policy_id
를security_result.detection_fields
에 매핑했습니다.imperva.abp.policy_name
를security_result.detection_fields
에 매핑했습니다.imperva.abp.selector_derived_id
를security_result.detection_fields
에 매핑했습니다.imperva.abp.monitor_action
를security_result.action
에 매핑했습니다.
2022-06-28
개선사항:
- 모든 로그에 대해 vendor.name = Imperva 및 product.name = 웹 애플리케이션 방화벽으로 매핑
src
이Distributed
인metadata.event_type
를GENERIC_EVENT
에서USER_UNCATEGORIZED
로 변경했습니다.metadata.event_type
에서USER_UNCATEGORIZED
로USER_STATS
로 변경됨
2022-06-20
rt
필드의 grok 패턴이 수정되었습니다.- 버그 수정 - security_result.action이 개선되었습니다.
- REQ_PASSED: 요청이 사이트의 웹 서버로 라우팅된 경우 (security_result.action = 'ALLOW')
- REQ_CACHED_X: 데이터 센터의 캐시에서 응답이 반환된 경우 (security_result.action = 'ALLOW')
- REQ_BAD_X: 프로토콜 또는 네트워크 오류가 발생한 경우 (security_result.action = 'FAIL')
- REQ_CHALLENGE_X: 클라이언트에게 챌린지가 반환된 경우 (security_result.action = 'BLOCK').
- REQ_BLOCKED_X: 요청이 차단된 경우 (security_result.action = 'BLOCK').
2022-06-14
버그 수정:
- UDM 필드 'security_result.detection_fields'에 매핑된 'cs1Label', 'cs2Label', 'cs3Label' 필드가 잘못 매핑되는 것을 방지하기 위해 gsub를 추가하고 kv 필터를 수정했습니다.
2022-05-26
버그 수정:
- 감지 필드의 값에서 키 이름과 콜론 문자를 삭제했습니다.
2022-05-10
개선사항:
- 다음 필드를 매핑했습니다.
- 'cs1', 'cs2', 'cs3', 'cs4', 'cs5', 'fileType', 'filePermission'을 'security_result.detection_fields'로 이동합니다.
- 'cs7'을 'principal.location.region_latitude'로 변경합니다.
- 'cs8': 'principal.location.region_longitude'
- CEF 형식 로그의 경우 'cn1', 'cn2'가 'security_result.detection_fields'에 매핑됩니다.
- CEF 형식 로그의 경우 'act'를 'security_result.action' 및 'security_result.action_details'로 변경합니다.
- CEF 형식 로그의 경우 'app'을 'network.application_protocol'로 변경합니다.
- CEF 형식 로그의 'requestClientApplication'을 'network.http.user_agent'로 변경했습니다.
- CEF 형식 로그의 경우 'dvc'를 'about.ip'로 변경합니다.
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가의 답변을 받아 보세요.