Netskope 웹 프록시 로그 수집

다음에서 지원:

이 문서에서는 Cloud Storage V2를 사용하여 Netskope 웹 프록시 로그를 Google Security Operations로 수집하는 방법을 설명합니다.

Netskope는 웹 트래픽을 실시간으로 검사하고 제어하는 클라우드 네이티브 보안 웹 게이트웨이를 제공합니다. 웹 트랜잭션(WebTx) 로그는 사용자 ID, 애플리케이션, URL 카테고리, 위협 및 DLP 판정, 네트워크 메타데이터를 포함하여 Netskope 프록시에서 처리하는 모든 HTTP 및 HTTPS 세션의 세부 기록을 캡처합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • Cloud Storage API가 사용 설정된 Google Cloud 프로젝트
  • Cloud Storage 버킷을 만들고 관리할 수 있는 권한
  • Cloud Storage 버킷에서 Identity and Access Management(IAM) 정책을 관리할 수 있는 권한
  • 관리자 인증 정보를 사용한 Netskope 테넌트에 대한 권한 액세스

옵션 1: Cloud Storage로 Netskope 로그 스트리밍

테넌트에 Netskope 로그 스트리밍 구독이 사용 설정된 경우 이 옵션을 사용합니다. Netskope 로그 스트리밍은 WebTx 로그 파일을 압축된 .gzip 파일로 240초 간격으로 Cloud Storage 버킷에 직접 푸시합니다.

Cloud Storage 버킷 만들기

  1. Google Cloud 콘솔로 이동합니다.
  2. 프로젝트를 선택하거나 새 프로젝트를 만듭니다.
  3. 탐색 메뉴에서 Cloud Storage > 버킷으로 이동합니다.
  4. 버킷 만들기를 클릭합니다.
  5. 다음 구성 세부정보를 제공합니다.

    설정 값
    버킷 이름 지정 전역적으로 고유한 이름(예: netskope-webtx-logs)을 입력합니다.
    위치 유형 필요에 따라 선택(리전, 이중 리전, 멀티 리전)
    위치 조직과 가장 가까운 위치를 선택합니다(예: us-central1).
    스토리지 클래스 표준(자주 액세스하는 로그에 권장)
    액세스 제어 균일(권장)
    보호 도구 선택사항: 객체 버전 관리 또는 보관 정책 사용 설정
  6. 만들기를 클릭합니다.

Google Cloud 서비스 계정을 만듭니다.

Netskope 로그 스트리밍에는 Cloud Storage 버킷에 대한 쓰기 권한이 있는 Google Cloud 서비스 계정이 필요합니다. 이 서비스 계정의 JSON 키 파일은 Netskope에서 로그 파일을 푸시할 때 인증하는 데 사용됩니다.

  1. Google Cloud 콘솔에서 IAM 및 관리자 > 서비스 계정으로 이동합니다.
  2. 서비스 계정 만들기를 클릭합니다.
  3. 다음 구성 세부정보를 제공합니다.
    • 서비스 계정 이름: netskope-log-streaming을 입력합니다.
    • 서비스 계정 설명: Service account for Netskope Log Streaming to push WebTx logs to GCS을 입력합니다.
  4. 만들고 계속하기를 클릭합니다.
  5. 이 서비스 계정에 프로젝트에 대한 액세스 권한 부여 섹션에서 다음을 수행합니다.
    1. 역할 선택을 클릭합니다.
    2. 스토리지 객체 생성자를 검색하여 선택합니다.
  6. 계속을 클릭합니다.
  7. 완료를 클릭합니다.

JSON 키 생성

  1. Google Cloud 콘솔에서 IAM 및 관리자 > 서비스 계정으로 이동하여 서비스 계정 netskope-log-streaming을 클릭합니다.
  2. 키 탭을 선택합니다.
  3. 키 추가 > 새 키 만들기를 클릭합니다.
  4. 키 유형으로 JSON을 선택합니다.
  5. 만들기를 클릭합니다.
  6. JSON 키 파일이 자동으로 다운로드됩니다. 이 파일을 안전하게 저장합니다. 다음 섹션에서 이 파일의 전체 콘텐츠를 Netskope에 붙여넣습니다.

Cloud Storage 버킷에 쓰기 권한 부여

  1. Google Cloud 콘솔에서 Cloud Storage > 버킷으로 이동합니다.
  2. 버킷 이름(예: netskope-webtx-logs)을 클릭합니다.
  3. 권한 탭으로 이동합니다.
  4. 액세스 권한 부여를 클릭합니다.
  5. 다음 구성 세부정보를 제공합니다.
    • 주 구성원 추가: 서비스 계정 이메일(예: netskope-log-streaming@YOUR_PROJECT_ID.iam.gserviceaccount.com)을 입력합니다.
    • 역할 할당: 스토리지 객체 생성자를 선택합니다.
  6. 저장을 클릭합니다.

로그 스트림 만들기

  1. 관리자 사용자 인증 정보로 Netskope 테넌트에 로그인합니다.
  2. 설정 > 도구 > 로그 스트리밍으로 이동합니다.
  3. 스트림 만들기를 클릭합니다.
  4. 이름 필드에 인간이 읽을 수 있는 스트림 이름을 입력합니다. 예를 들면 Google SecOps WebTx GCS입니다.
  5. 대상 유형으로 GCP Cloud Storage를 선택합니다.
  6. 다음 구성 세부정보를 제공합니다.

    • 버킷: Cloud Storage 버킷의 이름을 입력합니다(예: netskope-webtx-logs).

      • 경로(선택사항): 로그가 저장될 버킷 내 폴더 경로를 입력합니다(예: `netskope/webtx/{%Y}`).
    • 비공개 키: 이전 섹션에서 생성된 JSON 키 파일의 전체 콘텐츠를 {로 시작하고 }로 끝나는 단일 JSON 객체로 붙여넣습니다. 여기에는 type, project_id, private_key_id, private_key, client_email, client_id 필드가 포함됩니다.

  7. 전송 옵션을 검토합니다. 푸시 빈도는 240초입니다.

  8. 저장(또는 만들기)을 클릭하여 스트림을 활성화합니다. Netskope는 netskope-test-file.txt라는 테스트 객체를 버킷에 작성하여 사용자 인증 정보를 검증합니다.

Cloud Storage에서 Netskope WebTx 로그를 수집하도록 Google SecOps에서 피드 구성

Google SecOps 피드를 만들고 IAM 권한을 부여하려면 다음 단계를 따르세요.

Google SecOps 서비스 계정 가져오기

Google SecOps는 고유한 서비스 계정을 사용하여 Cloud Storage 버킷에서 데이터를 읽습니다. 이 서비스 계정에 버킷에 대한 액세스 권한을 부여해야 합니다.

  1. 설정 > 데이터 관리 > 피드로 이동합니다. SIEM 전용 플랫폼을 사용하는 경우 설정 > 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다(예: Netskope WebTx Logs).
  5. 소스 유형으로 Google Cloud Storage V2를 선택합니다.
  6. 로그 유형으로 Netskope 웹 프록시를 선택합니다.
  7. 서비스 계정 가져오기를 클릭합니다.
  8. 고유한 서비스 계정 이메일이 표시됩니다. 예를 들면 다음과 같습니다.

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. 다음 단계에서 사용할 수 있도록 이 이메일 주소를 복사합니다.

  10. 다음을 클릭합니다.

  11. 다음 입력 파라미터의 값을 지정합니다.

    • 스토리지 버킷 URL: 프리픽스 경로가 있는 Cloud Storage 버킷 URI를 입력합니다.

      gs://netskope-webtx-logs/netskope/webtx/
      
      • 다음과 같이 바꿉니다.
        • netskope-webtx-logs: Cloud Storage 버킷 이름입니다.
        • netskope/webtx/: Netskope 로그 스트리밍에 구성된 경로 프리픽스입니다(루트의 경우 비워 둠).
    • 소스 삭제 옵션: 환경설정에 따라 삭제 옵션을 선택합니다.

      • 파일 삭제 안함: 소스에서 파일을 삭제하지 않습니다(테스트에 권장).
      • 전송된 파일 및 빈 디렉터리 삭제: 가져오기가 완료된 후 소스에서 파일과 빈 디렉터리를 삭제합니다.
    • 최대 파일 기간: 지난 며칠 동안 수정된 파일을 포함합니다(기본값은 180일).

    • 애셋 네임스페이스: 애셋 네임스페이스

    • 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.

  12. 다음을 클릭합니다.

  13. 확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.

Google SecOps 서비스 계정에 IAM 권한 부여

Google SecOps 서비스 계정에는 Cloud Storage 버킷에 대한 두 가지 역할이 필요합니다. 로그 객체를 읽기 위한 스토리지 객체 뷰어와 버킷 메타데이터를 읽기 위한 버킷 수준 역할입니다.

  1. Cloud Storage > 버킷으로 이동합니다.
  2. 버킷 이름(예: netskope-webtx-logs)을 클릭합니다.
  3. 권한 탭으로 이동합니다.
  4. 액세스 권한 부여를 클릭합니다.
  5. 다음 구성 세부정보를 제공합니다.
    • 주 구성원 추가: Google SecOps 서비스 계정 이메일(예: chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com)을 붙여넣습니다.
    • 역할 할당: 다음을 모두 선택합니다.
      • 스토리지 객체 뷰어: 로그 객체를 읽습니다.
      • 스토리지 기존 버킷 리더: 버킷 메타데이터를 읽습니다. 전송된 파일 및 빈 디렉터리 삭제 삭제 옵션을 선택한 경우 대신 스토리지 기존 버킷 작성자를 선택합니다. 이 역할은 삭제 권한도 부여합니다.
  6. 저장을 클릭합니다.

옵션 2: Netskope Cloud Exchange Log Shipper를 Cloud Storage로 사용

Netskope Cloud Exchange 플랫폼이 Log Shipper 모듈과 함께 배포된 경우 이 옵션을 사용하세요. 로그 배송업체는 Netskope 테넌트에서 WebTx 로그를 가져와 압축된 .gzip 파일로 Cloud Storage 버킷에 푸시하고, Google SecOps는 Cloud Storage V2 피드를 통해 이를 읽습니다.

시작하기 전에(Cloud Exchange)

이 옵션에 대한 다음 추가 기본 요건이 충족되었는지 확인합니다.

Cloud Storage 대상 플러그인 구성

  1. Cloud Exchange에서 설정 > 플러그인 스토어로 이동합니다.
  2. Google Cloud SCC(Google GCS) 플러그인을 검색하고 선택합니다.
  3. 새 플러그인 구성을 클릭하거나 새 플러그인 구성을 추가합니다.
  4. 다음 구성 세부정보를 제공합니다.
    • 구성 이름: 설명이 포함된 이름(예: GCS WebTx Destination)을 입력합니다.
    • 매핑: 매핑 파일을 선택합니다. 원본 .gzip 파일로 푸시되는 WebTx 로그에는 매핑 변환이 적용되지 않습니다.
    • 버킷: Cloud Storage 버킷의 이름을 입력합니다(예: netskope-webtx-logs).
    • 경로(선택사항): 폴더 경로를 입력합니다(예: netskope/webtx/).
    • 키 파일: private_key 값뿐만 아니라 서비스 계정 JSON 키 파일의 전체 콘텐츠를 붙여넣습니다.
  5. 저장을 클릭합니다.
  6. 새 플러그인 구성이 로그 배송 도구 > 플러그인 페이지에 표시됩니다.

비즈니스 규칙 구성(선택사항)

기본적으로 모두 비즈니스 규칙은 모든 알림과 이벤트를 필터링합니다. WebTx 로그를 구체적으로 필터링하려면 새 비즈니스 규칙을 만듭니다.

  1. 로그 전송 도구에서 비즈니스 규칙로 이동합니다.
  2. 새 규칙 만들기를 클릭합니다.
  3. 규칙 이름을 입력합니다(예: WebTx Only).
  4. WebTx 데이터만 포함하도록 필터를 구성합니다.
  5. 저장을 클릭합니다.

로그 전송 구성

  1. 로그 전송기에서 로그 전송으로 이동합니다.
  2. 로그 전송 구성 추가를 클릭합니다.
  3. 다음 구성 세부정보를 제공합니다.
    • 소스 구성: Netskope CLS 소스 플러그인(예: WebTxCLS 또는 Netskope CLS)을 선택합니다.
    • 대상 구성: 구성한 Cloud Storage 대상 플러그인을 선택합니다(예: GCS WebTx Destination).
    • 비즈니스 규칙: 비즈니스 규칙을 선택합니다(예: All 또는 WebTx Only).
  4. 저장을 클릭합니다.

  5. 추가 이전 데이터를 가져오려면 로그 전송 작업에서 이전 데이터 가져오기 아이콘을 클릭합니다.

  6. Historical From(이력 시작일) 및 To(종료일) 기간을 선택하고 Pull(가져오기)을 클릭합니다.

Cloud Storage에서 Netskope WebTx 로그를 수집하도록 Google SecOps에서 피드 구성

Netskope 로그 스트리밍 옵션과 동일한 단계에 따라 Google SecOps 피드를 만들고 IAM 권한을 부여합니다.

  1. Google SecOps 서비스 계정 검색 — Google Cloud Storage V2를 소스 유형으로, Netskope 웹 프록시를 로그 유형으로 사용하여 피드를 만듭니다.
  2. Google SecOps 서비스 계정에 IAM 권한 부여 — Cloud Storage 버킷에 대한 스토리지 객체 뷰어 및 스토리지 기존 버킷 리더 역할(삭제 옵션을 사용하는 경우 스토리지 기존 버킷 작성자 사용)을 Google SecOps 서비스 계정에 부여합니다.

로그 전송 확인

WebTx 로그가 Cloud Storage 버킷으로 전송되는지 확인하려면 다음 안내를 따르세요.

  1. Cloud Exchange에서 로그 전송기 > 로그 전송으로 이동합니다.
  2. 외부 수신자에게 전송된 총 로그/WebTx 및 스토리지 버킷으로 전송된 총 WebTx 열을 확인하여 데이터가 대상으로 푸시되고 있는지 확인합니다.
  3. GCS 버킷에서 로그 전송기에 의해 .gzip 파일이 작성되고 있는지 확인합니다.

로그 발송자 전역 설정 구성(선택사항)

관리자만 로그 전달자 전역 설정을 변경할 수 있습니다. 가다 설정 > 통나무 운송업자. 일반 및 매핑이라는 두 개의 탭이 있습니다.

일반 탭에서 로그 전송의 재시도 전략을 구성할 수 있습니다.

  • 기본값(3회 재시도): 로그 전송에 실패하면 로그 전송 도구에서 로그를 대상으로 푸시하는 시도를 3회 시작합니다. 3번의 재시도가 모두 실패하면 해당 로그 배치가 삭제됩니다.
  • 전송 성공 시까지 재시도: 로그가 전송될 때까지 무제한으로 재시도합니다.

알림, 이벤트, WebTx에 UTF-8 인코딩을 사용 설정하여 UTF-8 인코딩 데이터를 원활하게 처리할 수도 있습니다. 기본적으로 이 기능은 사용 중지되어 있습니다.

UDM 매핑 테이블

로그 필드 UDM 매핑 로직
applicationType security_result.detection_fields[].key: "applicationType", security_result.detection_fields[].value: applicationType 해당 CEF 필드에서 직접 매핑됨
appcategory security_result.category_details[]: appcategory 해당 CEF 필드에서 직접 매핑됨
browser security_result.detection_fields[].key: "browser", security_result.detection_fields[].value: browser 해당 CEF 필드에서 직접 매핑됨
c-ip principal.asset.ip[]: c-ip, principal.ip[]: c-ip 해당 JSON 필드에서 직접 매핑됨
cci security_result.detection_fields[].key: "cci", security_result.detection_fields[].value: cci 해당 CEF 필드에서 직접 매핑됨
ccl security_result.confidence: 파생 값, security_result.confidence_details: ccl security_result.confidence는 ccl 값에 따라 파생됩니다. 'excellent' 또는 'high'는 HIGH_CONFIDENCE에 매핑되고, 'medium'은 MEDIUM_CONFIDENCE에 매핑되고, 'low' 또는 'poor'는 LOW_CONFIDENCE에 매핑되고, 'unknown' 또는 'not_defined'는 UNKNOWN_CONFIDENCE에 매핑됩니다. security_result.confidence_details는 ccl에서 직접 매핑됩니다.
clientBytes network.sent_bytes: clientBytes 해당 CEF 필드에서 직접 매핑됨
cs-access-method additional.fields[].key: "accessMethod", additional.fields[].value.string_value: cs-access-method 해당 JSON 필드에서 직접 매핑됨
cs-app additional.fields[].key: "x-cs-app", additional.fields[].value.string_value: cs-app, principal.application: cs-app 해당 JSON 필드에서 직접 매핑됨
cs-app-activity additional.fields[].key: "x-cs-app-activity", additional.fields[].value.string_value: cs-app-activity 해당 JSON 필드에서 직접 매핑됨
cs-app-category additional.fields[].key: "x-cs-app-category", additional.fields[].value.string_value: cs-app-category 해당 JSON 필드에서 직접 매핑됨
cs-app-cci additional.fields[].key: "x-cs-app-cci", additional.fields[].value.string_value: cs-app-cci 해당 JSON 필드에서 직접 매핑됨
cs-app-ccl additional.fields[].key: "x-cs-app-ccl", additional.fields[].value.string_value: cs-app-ccl 해당 JSON 필드에서 직접 매핑됨
cs-app-from-user additional.fields[].key: "x-cs-app-from-user", additional.fields[].value.string_value: cs-app-from-user, principal.user.email_addresses[]: cs-app-from-user 해당 JSON 필드에서 직접 매핑됨
cs-app-instance-id additional.fields[].key: "x-cs-app-instance-id", additional.fields[].value.string_value: cs-app-instance-id 해당 JSON 필드에서 직접 매핑됨
cs-app-object-name additional.fields[].key: "x-cs-app-object-name", additional.fields[].value.string_value: cs-app-object-name 해당 JSON 필드에서 직접 매핑됨
cs-app-object-type additional.fields[].key: 'x-cs-app-object-type', additional.fields[].value.string_value: cs-app-object-type 해당 JSON 필드에서 직접 매핑됨
cs-app-suite additional.fields[].key: "x-cs-app-suite", additional.fields[].value.string_value: cs-app-suite 해당 JSON 필드에서 직접 매핑됨
cs-app-tags additional.fields[].key: 'x-cs-app-tags', additional.fields[].value.string_value: cs-app-tags 해당 JSON 필드에서 직접 매핑됨
cs-bytes network.sent_bytes: cs-bytes 해당 JSON 필드에서 직접 매핑됨
cs-content-type additional.fields[].key: "sc-content-type", additional.fields[].value.string_value: cs-content-type 해당 JSON 필드에서 직접 매핑됨
cs-dns target.asset.hostname[]: cs-dns, target.hostname: cs-dns 해당 JSON 필드에서 직접 매핑됨
cs-host target.asset.hostname[]: cs-host, target.hostname: cs-host 해당 JSON 필드에서 직접 매핑됨
cs-method network.http.method: cs-method 해당 JSON 필드에서 직접 매핑됨
cs-referer network.http.referral_url: cs-referer 해당 JSON 필드에서 직접 매핑됨
cs-uri additional.fields[].key: "cs-uri", additional.fields[].value.string_value: cs-uri 해당 JSON 필드에서 직접 매핑됨
cs-uri-path additional.fields[].key: "x-cs-uri-path", additional.fields[].value.string_value: cs-uri-path 해당 JSON 필드에서 직접 매핑됨
cs-uri-port additional.fields[].key: "cs-uri-port", additional.fields[].value.string_value: cs-uri-port 해당 JSON 필드에서 직접 매핑됨
cs-uri-scheme network.application_protocol: cs-uri-scheme 대문자로 변환한 후 해당 JSON 필드에서 직접 매핑됨
cs-user-agent network.http.parsed_user_agent: 파싱된 사용자 에이전트, network.http.user_agent: cs-user-agent network.http.parsed_user_agent는 'parseduseragent' 필터를 사용하여 cs-user-agent 필드를 파싱하여 파생됩니다.
cs-username principal.user.userid: cs-username 해당 JSON 필드에서 직접 매핑됨
날짜 metadata.event_timestamp.seconds: 날짜 및 시간 필드의 에포크 초, metadata.event_timestamp.nanos: 0 날짜와 시간이 결합되어 에포크 초 및 나노초로 변환됩니다. 나노초는 0으로 설정됩니다.
device intermediary.hostname: device 해당 CEF 필드에서 직접 매핑됨
dst target.ip[]: dst 해당 CEF 필드에서 직접 매핑됨
dst_country target.location.country_or_region: dst_country 해당 grok 필드에서 직접 매핑됨
dst_ip target.asset.ip[]: dst_ip, target.ip[]: dst_ip 해당 grok 필드에서 직접 매핑됨
dst_location target.location.city: dst_location 해당 grok 필드에서 직접 매핑됨
dst_region target.location.state: dst_region 해당 grok 필드에서 직접 매핑됨
dst_zip 매핑되지 않음 이 필드는 UDM에 매핑되지 않습니다.
duser target.user.email_addresses[]: duser, target.user.user_display_name: duser 해당 CEF 필드에서 직접 매핑됨
dvchost about.hostname: dvchost, target.asset.hostname[]: dvchost, target.hostname: dvchost 해당 CEF 필드에서 직접 매핑됨
event_timestamp metadata.event_timestamp.seconds: event_timestamp 해당 grok 필드에서 직접 매핑됨
호스트 이름 target.asset.hostname[]: hostname, target.hostname: hostname 해당 CEF 필드에서 직접 매핑됨
문제 ID security_result.detection_fields[].key: "IncidentID", security_result.detection_fields[].value: IncidentID 해당 CEF 필드에서 직접 매핑됨
intermediary intermediary: intermediary 해당 CEF 필드에서 직접 매핑됨
md5 target.file.md5: md5 해당 CEF 필드에서 직접 매핑됨
메시지 다양한 UDM 필드 메시지 필드는 'CEF'가 포함되어 있는지 여부에 따라 파싱됩니다. 일치하는 경우 CEF 로그로 처리됩니다. 그렇지 않으면 공백으로 구분된 문자열 또는 JSON으로 파싱됩니다.
mwDetectionEngine additional.fields[].key: "mwDetectionEngine", additional.fields[].value.string_value: mwDetectionEngine 해당 CEF 필드에서 직접 매핑됨
mwType metadata.description: mwType 해당 CEF 필드에서 직접 매핑됨
os principal.platform: 파생 값 플랫폼은 os 필드에서 파생됩니다. 'Windows'는 WINDOWS에 매핑되고 'MAC'은 MAC에 매핑되며 'LINUX'는 LINUX에 매핑됩니다.
페이지 network.http.referral_url: page 해당 CEF 필드에서 직접 매핑됨
리퍼러 network.http.referral_url: referer 해당 CEF 필드에서 직접 매핑됨
requestClientApplication network.http.parsed_user_agent: 파싱된 사용자 에이전트, network.http.user_agent: requestClientApplication network.http.parsed_user_agent는 'parseduseragent' 필터를 사용하여 requestClientApplication 필드를 파싱하여 파생됩니다.
request_method network.http.method: request_method 해당 grok 필드에서 직접 매핑됨
rs-status additional.fields[].key: 'rs-status', additional.fields[].value.string_value: rs-status, network.http.response_code: rs-status 해당 JSON 필드에서 직접 매핑됨
s-ip target.asset.ip[]: s-ip, target.ip[]: s-ip 해당 JSON 필드에서 직접 매핑됨
sc-bytes network.received_bytes: sc-bytes 해당 JSON 필드에서 직접 매핑됨
sc-content-type additional.fields[].key: "sc-content-type", additional.fields[].value.string_value: sc-content-type 해당 JSON 필드에서 직접 매핑됨
sc-status network.http.response_code: sc-status 해당 JSON 필드에서 직접 매핑됨
serverBytes network.received_bytes: serverBytes 해당 CEF 필드에서 직접 매핑됨
sha256 target.file.sha256: sha256 해당 CEF 필드에서 직접 매핑됨
src principal.ip[]: src 해당 CEF 필드에서 직접 매핑됨
src_country principal.location.country_or_region: src_country 해당 grok 필드에서 직접 매핑됨
src_ip principal.asset.ip[]: src_ip, principal.ip[]: src_ip 해당 grok 필드에서 직접 매핑됨
src_location principal.location.city: src_location 해당 grok 필드에서 직접 매핑됨
src_region principal.location.state: src_region 해당 grok 필드에서 직접 매핑됨
src_latitude 매핑되지 않음 이 필드는 UDM에 매핑되지 않습니다.
src_longitude 매핑되지 않음 이 필드는 UDM에 매핑되지 않습니다.
src_zip 매핑되지 않음 이 필드는 UDM에 매핑되지 않습니다.
suser principal.user.user_display_name: suser 해당 CEF 필드에서 직접 매핑됨
target_host target.asset.hostname[]: target_host, target.hostname: target_host 해당 grok 필드에서 직접 매핑됨
시간 metadata.event_timestamp.seconds: 날짜 및 시간 필드의 에포크 초, metadata.event_timestamp.nanos: 0 날짜와 시간이 결합되어 에포크 초 및 나노초로 변환됩니다. 나노초는 0으로 설정됩니다.
타임스탬프 metadata.event_timestamp.seconds: timestamp 해당 CEF 필드에서 직접 매핑됨
ts metadata.event_timestamp.seconds: ts의 에포크 초, metadata.event_timestamp.nanos: 0 타임스탬프는 에포크 초 및 나노초로 변환됩니다. 나노초는 0으로 설정됩니다.
url target.url: url 해당 CEF 필드에서 직접 매핑됨
user_agent network.http.parsed_user_agent: 파싱된 사용자 에이전트, network.http.user_agent: user_agent network.http.parsed_user_agent는 'parseduseragent' 필터를 사용하여 user_agent 필드를 파싱하여 파생됩니다.
user_key principal.user.email_addresses[]: user_key 해당 grok 필드에서 직접 매핑됨
버전 매핑되지 않음 이 필드는 UDM에 매핑되지 않습니다.
x-c-browser additional.fields[].key: "x-c-browser", additional.fields[].value.string_value: x-c-browser 해당 JSON 필드에서 직접 매핑됨
x-c-browser-version additional.fields[].key: "x-c-browser-version", additional.fields[].value.string_value: x-c-browser-version 해당 JSON 필드에서 직접 매핑됨
x-c-country principal.location.country_or_region: x-c-country 해당 JSON 필드에서 직접 매핑됨
x-c-device additional.fields[].key: "x-c-device", additional.fields[].value.string_value: x-c-device 해당 JSON 필드에서 직접 매핑됨
x-c-latitude principal.location.region_coordinates.latitude: x-c-latitude 해당 JSON 필드에서 직접 매핑됨
x-c-local-time security_result.detection_fields[].key: "x-c-local-time", security_result.detection_fields[].value: x-c-local-time 해당 JSON 필드에서 직접 매핑됨
x-c-location principal.location.name: x-c-location 해당 JSON 필드에서 직접 매핑됨
x-c-longitude principal.location.region_coordinates.longitude: x-c-longitude 해당 JSON 필드에서 직접 매핑됨
x-c-os principal.platform: 파생 값 플랫폼은 x-c-os 필드에서 파생됩니다. 'Windows'는 WINDOWS에 매핑되고 'MAC'은 MAC에 매핑되며 'LINUX'는 LINUX에 매핑됩니다.
x-c-region principal.location.state: x-c-region 해당 JSON 필드에서 직접 매핑됨
x-c-zipcode additional.fields[].key: "x-c-zipcode", additional.fields[].value.string_value: x-c-zipcode 해당 JSON 필드에서 직접 매핑됨
x-category additional.fields[].key: "x-category", additional.fields[].value.string_value: x-category 해당 JSON 필드에서 직접 매핑됨
x-category-id additional.fields[].key: "x-category-id", additional.fields[].value.string_value: x-category-id 해당 JSON 필드에서 직접 매핑됨
x-cs-access-method additional.fields[].key: "accessMethod", additional.fields[].value.string_value: x-cs-access-method 해당 JSON 필드에서 직접 매핑됨
x-cs-app principal.application: x-cs-app, additional.fields[].key: 'x-cs-app', additional.fields[].value.string_value: x-cs-app 해당 JSON 필드에서 직접 매핑됨
x-cs-app-activity additional.fields[].key: "x-cs-app-activity", additional.fields[].value.string_value: x-cs-app-activity 해당 JSON 필드에서 직접 매핑됨
x-cs-app-category additional.fields[].key: "x-cs-app-category", additional.fields[].value.string_value: x-cs-app-category 해당 JSON 필드에서 직접 매핑됨
x-cs-app-cci additional.fields[].key: "x-cs-app-cci", additional.fields[].value.string_value: x-cs-app-cci 해당 JSON 필드에서 직접 매핑됨
x-cs-app-from-user additional.fields[].key: "x-cs-app-from-user", additional.fields[].value.string_value: x-cs-app-from-user 해당 JSON 필드에서 직접 매핑됨
x-cs-app-object-id additional.fields[].key: "x-cs-app-object-id", additional.fields[].value.string_value: x-cs-app-object-id 해당 JSON 필드에서 직접 매핑됨
x-cs-app-object-name additional.fields[].key: "x-cs-app-object-name", additional.fields[].value.string_value: x-cs-app-object-name 해당 JSON 필드에서 직접 매핑됨
x-cs-app-object-type additional.fields[].key: 'x-cs-app-object-type', additional.fields[].value.string_value: x-cs-app-object-type 해당 JSON 필드에서 직접 매핑됨
x-cs-app-suite additional.fields[].key: "x-cs-app-suite", additional.fields[].value.string_value: x-cs-app-suite 해당 JSON 필드에서 직접 매핑됨
x-cs-app-tags additional.fields[].key: "x-cs-app-tags", additional.fields[].value.string_value: x-cs-app-tags 해당 JSON 필드에서 직접 매핑됨
x-cs-app-to-user additional.fields[].key: "x-cs-app-to-user", additional.fields[].value.string_value: x-cs-app-to-user 해당 JSON 필드에서 직접 매핑됨
x-cs-dst-ip security_result.detection_fields[].key: "x-cs-dst-ip", security_result.detection_fields[].value: x-cs-dst-ip, target.asset.ip[]: x-cs-dst-ip, target.ip[]: x-cs-dst-ip 해당 JSON 필드에서 직접 매핑됨
x-cs-dst-port security_result.detection_fields[].key: "x-cs-dst-port", security_result.detection_fields[].value: x-cs-dst-port, target.port: x-cs-dst-port 해당 JSON 필드에서 직접 매핑됨
x-cs-http-version security_result.detection_fields[].key: "x-cs-http-version", security_result.detection_fields[].value: x-cs-http-version 해당 JSON 필드에서 직접 매핑됨
x-cs-page-id additional.fields[].key: "x-cs-page-id", additional.fields[].value.string_value: x-cs-page-id 해당 JSON 필드에서 직접 매핑됨
x-cs-session-id network.session_id: x-cs-session-id 해당 JSON 필드에서 직접 매핑됨
x-cs-site additional.fields[].key: "x-cs-site", additional.fields[].value.string_value: x-cs-site 해당 JSON 필드에서 직접 매핑됨
x-cs-sni network.tls.client.server_name: x-cs-sni 해당 JSON 필드에서 직접 매핑됨
x-cs-src-ip principal.asset.ip[]: x-cs-src-ip, principal.ip[]: x-cs-src-ip, security_result.detection_fields[].key: "x-cs-src-ip", security_result.detection_fields[].value: x-cs-src-ip 해당 JSON 필드에서 직접 매핑됨
x-cs-src-ip-egress principal.asset.ip[]: x-cs-src-ip-egress, principal.ip[]: x-cs-src-ip-egress, security_result.detection_fields[].key: "x-cs-src-ip-egress", security_result.detection_fields[].value: x-cs-src-ip-egress 해당 JSON 필드에서 직접 매핑됨
x-cs-src-port principal.port: x-cs-src-port, security_result.detection_fields[].key: "x-cs-src-port", security_result.detection_fields[].value: x-cs-src-port 해당 JSON 필드에서 직접 매핑됨
x-cs-ssl-cipher network.tls.cipher: x-cs-ssl-cipher 해당 JSON 필드에서 직접 매핑됨
x-cs-ssl-fronting-error security_result.detection_fields[].key: "x-cs-ssl-fronting-error", security_result.detection_fields[].value: x-cs-ssl-fronting-error 해당 JSON 필드에서 직접 매핑됨
x-cs-ssl-handshake-error security_result.detection_fields[].key: "x-cs-ssl-handshake-error", security_result.detection_fields[].value: x-cs-ssl-handshake-error 해당 JSON 필드에서 직접 매핑됨
x-cs-ssl-ja3 network.tls.client.ja3: x-cs-ssl-ja3 해당 JSON 필드에서 직접 매핑됨
x-cs-ssl-version network.tls.version: x-cs-ssl-version 해당 JSON 필드에서 직접 매핑됨
x-cs-timestamp metadata.event_timestamp.seconds: x-cs-timestamp 해당 JSON 필드에서 직접 매핑됨
x-cs-traffic-type additional.fields[].key: "trafficType", additional.fields[].value.string_value: x-cs-traffic-type 해당 JSON 필드에서 직접 매핑됨
x-cs-tunnel-src-ip security_result.detection_fields[].key: "x-cs-tunnel-src-ip", security_result.detection_fields[].value: x-cs-tunnel-src-ip 해당 JSON 필드에서 직접 매핑됨
x-cs-uri-path additional.fields[].key: "x-cs-uri-path", additional.fields[].value.string_value: x-cs-uri-path 해당 JSON 필드에서 직접 매핑됨
x-cs-url target.url: x-cs-url 해당 JSON 필드에서 직접 매핑됨
x-cs-userip security_result.detection_fields[].key: "x-cs-userip", security_result.detection_fields[].value: x-cs-userip 해당 JSON 필드에서 직접 매핑됨
x-other-category security_result.category_details[]: x-other-category 해당 JSON 필드에서 직접 매핑됨
x-other-category-id security_result.detection_fields[].key: "x-other-category-id", security_result.detection_fields[].value: x-other-category-id 해당 JSON 필드에서 직접 매핑됨
x-policy-action security_result.action: 파생 값, security_result.action_details: x-policy-action security_result.action은 x-policy-action을 대문자로 변환하여 파생됩니다. 대문자 값이 'ALLOW' 또는 'BLOCK'인 경우 직접 사용됩니다. 그렇지 않으면 매핑되지 않습니다. security_result.action_details는 x-policy-action에서 직접 매핑됩니다.
x-policy-dst-host security_result.detection_fields[].key: "x-policy-dst-host", security_result.detection_fields[].value: x-policy-dst-host 해당 JSON 필드에서 직접 매핑됨
x-policy-dst-host-source security_result.detection_fields[].key: "x-policy-dst-host-source", security_result.detection_fields[].value: x-policy-dst-host-source 해당 JSON 필드에서 직접 매핑됨
x-policy-dst-ip security_result.detection_fields[].key: "x-policy-dst-ip", security_result.detection_fields[].value: x-policy-dst-ip 해당 JSON 필드에서 직접 매핑됨
x-policy-name security_result.rule_name: x-policy-name 해당 JSON 필드에서 직접 매핑됨
x-policy-src-ip security_result.detection_fields[].key: "x-policy-src-ip", security_result.detection_fields[].value: x-policy-src-ip 해당 JSON 필드에서 직접 매핑됨
x-r-cert-enddate network.tls.server.certificate.not_after.seconds: x-r-cert-enddate의 에포크 초 날짜가 에포크 초로 변환됩니다.
x-r-cert-expired additional.fields[].key: "x-r-cert-expired", additional.fields[].value.string_value: x-r-cert-expired 해당 JSON 필드에서 직접 매핑됨
x-r-cert-incomplete-chain additional.fields[].key: "x-r-cert-incomplete-chain", additional.fields[].value.string_value: x-r-cert-incomplete-chain 해당 JSON 필드에서 직접 매핑됨
x-r-cert-issuer-cn network.tls.server.certificate.issuer: x-r-cert-issuer-cn 해당 JSON 필드에서 직접 매핑됨
x-r-cert-mismatch additional.fields[].key: "x-r-cert-mismatch", additional.fields[].value.string_value: x-r-cert-mismatch 해당 JSON 필드에서 직접 매핑됨
x-r-cert-revoked additional.fields[].key: "x-r-cert-revoked", additional.fields[].value.string_value: x-r-cert-revoked 해당 JSON 필드에서 직접 매핑됨
x-r-cert-self-signed additional.fields[].key: 'x-r-cert-self-signed', additional.fields[].value.string_value: x-r-cert-self-signed 해당 JSON 필드에서 직접 매핑됨
x-r-cert-startdate network.tls.server.certificate.not_before.seconds: x-r-cert-startdate의 에포크 초 날짜가 에포크 초로 변환됩니다.
x-r-cert-subject-cn network.tls.server.certificate.subject: x-r-cert-subject-cn 해당 JSON 필드에서 직접 매핑됨
x-r-cert-untrusted-root additional.fields[].key: "x-r-cert-untrusted-root", additional.fields[].value.string_value: x-r-cert-untrusted-root 해당 JSON 필드에서 직접 매핑됨
x-r-cert-valid additional.fields[].key: "x-r-cert-valid", additional.fields[].value.string_value: x-r-cert-valid 해당 JSON 필드에서 직접 매핑됨
x-request-id additional.fields[].key: "requestId", additional.fields[].value.string_value: x-request-id 해당 JSON 필드에서 직접 매핑됨
x-rs-file-category additional.fields[].key: "x-rs-file-category", additional.fields[].value.string_value: x-rs-file-category 해당 JSON 필드에서 직접 매핑됨
x-rs-file-type additional.fields[].key: "x-rs-file-type", additional.fields[].value.string_value: x-rs-file-type 해당 JSON 필드에서 직접 매핑됨
x-s-country target.location.country_or_region: x-s-country 해당 JSON 필드에서 직접 매핑됨
x-s-dp-name additional.fields[].key: "x-s-dp-name", additional.fields[].value.string_value: x-s-dp-name 해당 JSON 필드에서 직접 매핑됨
x-s-latitude target.location.region_coordinates.latitude: x-s-latitude 해당 JSON 필드에서 직접 매핑됨
x-s-location target.location.name: x-s-location 해당 JSON 필드에서 직접 매핑됨
x-s-longitude target.location.region_coordinates.longitude: x-s-longitude 해당 JSON 필드에서 직접 매핑됨
x-s-region target.location.state: x-s-region 해당 JSON 필드에서 직접 매핑됨
x-s-zipcode additional.fields[].key: "x-s-zipcode", additional.fields[].value.string_value: x-s-zipcode 해당 JSON 필드에서 직접 매핑됨
x-sr-ssl-cipher security_result.detection_fields[].key: "x-sr-ssl-cipher", security_result.detection_fields[].value: x-sr-ssl-cipher 해당 JSON 필드에서 직접 매핑됨
x-sr-ssl-client-certificate-error security_result.detection_fields[].key: "x-sr-ssl-client-certificate-error", security_result.detection_fields[].value: x-sr-ssl-client-certificate-error 해당 JSON 필드에서 직접 매핑됨
x-sr-ssl-engine-action security_result.detection_fields[].key: "x-sr-ssl-engine-action", security_result.detection_fields[].value: x-sr-ssl-engine-action 해당 JSON 필드에서 직접 매핑됨
x-sr-ssl-engine-action-reason security_result.detection_fields[].key: "x-sr-ssl-engine-action-reason", security_result.detection_fields[].value: x-sr-ssl-engine-action-reason 해당 JSON 필드에서 직접 매핑됨
x-sr-ssl-handshake-error security_result.detection_fields[].key: "x-sr-ssl-handshake-error", security_result.detection_fields[].value: x-sr-ssl-handshake-error 해당 JSON 필드에서 직접 매핑됨
x-sr-ssl-ja3s network.tls.server.ja3s: x-sr-ssl-ja3s 해당 JSON 필드에서 직접 매핑됨
x-sr-ssl-malformed-ssl security_result.detection_fields[].key: "x-sr-ssl-malformed-ssl", security_result.detection_fields[].value: x-sr-ssl-malformed-ssl 해당 JSON 필드에서 직접 매핑됨
x-sr-ssl-version security_result.detection_fields[].key: "x-sr-ssl-version", security_result.detection_fields[].value: x-sr-ssl-version 해당 JSON 필드에서 직접 매핑됨
x-s-custom-signing-ca-error security_result.detection_fields[].key: "x-s-custom-signing-ca-error", security_result.detection_fields[].value: x-s-custom-signing-ca-error 해당 JSON 필드에서 직접 매핑됨
x-ssl-bypass security_result.detection_fields[].key: 'SSL BYPASS', security_result.detection_fields[].value: x-ssl-bypass 또는 x-ssl-bypass-reason x-ssl-bypass가 'Yes'이고 x-ssl-bypass-reason이 있는 경우 x-ssl-bypass-reason 값이 사용됩니다. 그렇지 않으면 x-ssl-bypass 값이 사용됩니다.
x-ssl-policy-action security_result.detection_fields[].key: "x-ssl-policy-action", security_result.detection_fields[].value: x-ssl-policy-action 해당 JSON 필드에서 직접 매핑됨
x-ssl-policy-categories security_result.category_details[]: x-ssl-policy-categories 해당 JSON 필드에서 직접 매핑됨
x-ssl-policy-dst-host security_result.detection_fields[].key: "x-ssl-policy-dst-host", security_result.detection_fields[].value: x-ssl-policy-dst-host 해당 JSON 필드에서 직접 매핑됨
x-ssl-policy-dst-host-source security_result.detection_fields[].key: "x-ssl-policy-dst-host-source", security_result.detection_fields[].value: x-ssl-policy-dst-host-source 해당 JSON 필드에서 직접 매핑됨
x-ssl-policy-dst-ip security_result.detection_fields[].key: "x-ssl-policy-dst-ip", security_result.detection_fields[].value: x-ssl-policy-dst-ip 해당 JSON 필드에서 직접 매핑됨
x-ssl-policy-name security_result.rule_name: x-ssl-policy-name 해당 JSON 필드에서 직접 매핑됨
x-ssl-policy-src-ip security_result.detection_fields[].key: "x-ssl-policy-src-ip", security_result.detection_fields[].value: x-ssl-policy-src-ip 해당 JSON 필드에서 직접 매핑됨
x-sr-dst-ip security_result.detection_fields[].key: "x-sr-dst-ip", security_result.detection_fields[].value: x-sr-dst-ip 해당 JSON 필드에서 직접 매핑됨
x-sr-dst-port security_result.detection_fields[].key: "x-sr-dst-port", security_result.detection_fields[].value: x-sr-dst-port 해당 JSON 필드에서 직접 매핑됨
x-type additional.fields[].key: "xType", additional.fields[].value.string_value: x-type 해당 JSON 필드에서 직접 매핑됨
x-transaction-id additional.fields[].key: "transactionId", additional.fields[].value.string_value: x-transaction-id 해당 JSON 필드에서 직접 매핑됨
metadata.vendor_name 'Netskope'로 설정
metadata.product_name 아직 없는 경우 'Netskope Webproxy'로 설정합니다.
metadata.log_type 'NETSKOPE_WEBPROXY'로 설정합니다.

변경 로그

이 파서의 변경 로그 보기

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.