> ## Documentation Index
> Fetch the complete documentation index at: https://docs.livingsecurity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Zscaler ZIA Cloud NSS 설정

> Cloud NSS 피드를 통해 Zscaler Internet Access 웹 로그를 Living Security로 전송합니다.

Zscaler Internet Access(ZIA) Cloud Nanolog Streaming Service(NSS) 피드를 연결하여 웹 로그를 Living Security로 전송합니다. 이 연동은 푸시 방식 연동이며, 풀 방식의 [Zscaler Client Connector](/ko/integrations/catalog/zscaler-client-connector-custom) 연동과는 별개입니다.

## 이 연동이 제공하는 정보

웹 로그 피드는 웹 활동과 관련된 사용자와 디바이스를 식별할 수 있으며, 차단된 요청, 악성 대상, 데이터 전송 차단, 생성형 AI 사용과 같은 정규화된 활동 정보를 제공할 수 있습니다. 결과는 Zscaler에 구성된 필드와 필터에 따라 달라집니다.

## 시작하기 전에

다음이 필요합니다.

* ZIA Cloud NSS 구독 및 Cloud NSS 피드를 관리할 수 있는 권한
* Living Security에서 연동과 액세스 키를 관리할 수 있는 권한
* 대상 Living Security 조직의 리전
* 생성된 액세스 키를 저장할 수 있는 안전한 장소

Zscaler는 HTTPS Cloud NSS 대상에 공개적으로 신뢰할 수 있는 TLS 인증서를 요구합니다. Living Security 리전별 엔드포인트는 이 요건을 충족합니다.

## 1. Living Security 준비

<Steps>
  <Step title="소스 및 스트림 생성">
    **설정 → 통합 → 카탈로그**로 이동하여 **Custom Push Source**를 추가하고 다음 라우팅 키를 정확히 그대로 사용합니다.

    | 필드 | 값 |
    | - | - |
    | Data Source Name | `zscaler-nss-feed` |
    | Stream Name | `web_logs` |

    `web_logs`의 밑줄(\_)은 반드시 필요합니다. 다른 조합은 데이터를 수신할 수는 있으나 유지 관리되는 Zscaler NSS 해석기를 사용하지 않습니다.
  </Step>

  <Step title="액세스 키 생성">
    **설정 → Access Keys**로 이동하여 **Push Ingest** 범위의 액세스 키를 생성하고 그 값을 즉시 복사합니다.
  </Step>

  <Step title="대상 URL 구성">
    Living Security 리전에 해당하는 URL을 사용합니다.

    * 미국: `https://api.us-east-1.livingsecurity.ai/api/v1/push-ingest/zscaler-nss-feed/web_logs`
    * 유럽 연합: `https://api.eu-west-1.livingsecurity.ai/api/v1/push-ingest/zscaler-nss-feed/web_logs`
  </Step>
</Steps>

## 2. Cloud NSS 피드 생성

현재 ZIA Admin Portal에서 **Logs → Log Streaming → Internet Log Streaming — Nanolog Streaming Service**로 이동하여 **Cloud NSS Feeds**를 열고 **Add Cloud NSS Feed**를 선택합니다. 이전 버전의 ZIA 포털에서는 메뉴 레이블이 다를 수 있으며, 포털 탐색 방법은 Zscaler의 [Cloud NSS 웹 로그 지침](https://help.zscaler.com/zia/adding-cloud-nss-feeds-web-logs)을 기준으로 합니다.

피드를 다음과 같이 구성합니다.

| Zscaler 필드 | 값 |
| - | - |
| Feed Name | `Living Security web logs`와 같이 알아보기 쉬운 이름 |
| NSS Type | **NSS for Web** |
| Status | 구성하는 동안에는 **Disabled**로 두고, 확인 후 활성화 |
| SIEM Rate | 자체 정책상 더 낮은 전송률이 필요한 경우가 아니면 **Unlimited** |
| SIEM Type | **Other** |
| OAuth 2.0 Authentication | **Disabled** |
| Max Batch Size | **512 KB** |
| API URL | 1단계의 Living Security 리전별 URL |
| HTTP Header 1 | `Authorization` = `Bearer <access-key>` |
| HTTP Header 2 | `Content-Type` = `application/json` |
| Log Type | **Web Log** |
| Feed Output Type | **JSON** |
| JSON Array Notation | **Enabled** |
| Feed Escape Character | `,\"` |

<Warning>
  `x-api-key`를 사용하지 말고, 이전 API 키와 시크릿을 마침표로 연결하여 사용하지
  마십시오. 현재 Living Security 푸시 수집은 범위가 지정된 액세스 키만
  `Authorization: Bearer …` 헤더에서 허용합니다.
</Warning>

다음의 평면 구조 **Feed Output Format**을 한 줄로 그대로 사용합니다.

```text theme={null}
{"datetime":"%d{yy}-%02d{mth}-%02d{dd} %02d{hh}:%02d{mm}:%02d{ss}","reason":"%s{reason}","event_id":"%d{recordid}","protocol":"%s{proto}","action":"%s{action}","transactionsize":"%d{totalsize}","responsesize":"%d{respsize}","requestsize":"%d{reqsize}","urlcategory":"%s{urlcat}","serverip":"%s{sip}","requestmethod":"%s{reqmethod}","refererURL":"%s{ereferer}","useragent":"%s{eua}","product":"NSS","location":"%s{elocation}","ClientIP":"%s{cip}","status":"%s{respcode}","user":"%s{elogin}","url":"%s{eurl}","vendor":"Zscaler","hostname":"%s{ehost}","clientpublicIP":"%s{cintip}","threatcategory":"%s{malwarecat}","threatname":"%s{threatname}","filetype":"%s{filetype}","appname":"%s{appname}","riskscore":"%d{riskscore}","department":"%s{edepartment}","urlsupercategory":"%s{urlsupercat}","appclass":"%s{appclass}","dlpengine":"%s{dlpeng}","urlclass":"%s{urlclass}","threatclass":"%s{malwareclass}","dlpdictionaries":"%s{dlpdict}","fileclass":"%s{fileclass}","bwthrottle":"%s{bwthrottle}","contenttype":"%s{contenttype}","unscannabletype":"%s{unscannabletype}","deviceowner":"%s{deviceowner}","devicehostname":"%s{devicehostname}","keyprotectiontype":"%s{keyprotectiontype}"}
```

<Warning>
  모든 필드를 최상위 수준에 유지하십시오. 폐기된 Unify 가이드에서는 이 필드를
  `event` 객체 안에 감싸고 `sourcetype`를 추가했습니다. 이러한 envelope는 JSON으로는
  수락될 수 있으나 현재 해석기와 일치하지 않으므로 사용자나 활동이 생성되지
  않습니다.
</Warning>

Zscaler 이벤트를 검토할 때 운영 팀이 기대하는 시간대를 선택하십시오. Living Security는 피드에서 제공하는 `datetime` 값을 파싱합니다.

## 3. 피드 필터링 및 활성화

Zscaler의 **Policy Action** 및 **Policy Reason** 필터를 사용하여 휴먼 리스크 프로그램에 필요한 웹 활동을 전송합니다. 트래픽이 급증할 때 로그가 삭제될 수 있으므로 초당 이벤트 수를 낮게 설정하지 마십시오. 조직에서 피드를 제한해야 하는 경우, 조정하는 동안 Zscaler의 전송 상태와 Living Security Push History를 모두 모니터링하십시오.

피드를 저장하고 Zscaler의 연결 테스트를 실행한 다음 **Status**를 **Enabled**로 설정합니다.

## 4. 전송 및 해석 확인

1. Living Security에서 **설정 → 통합 → 연결됨 → zscaler-nss-feed**를 엽니다.
2. **Push History**에서 최근 `web_logs` 실행에 예상한 레코드 수가 표시되는지 확인합니다.
3. 최근 Zscaler 사용자 또는 디바이스 IP가 예상한 사용자에 매핑되어 표시되고 웹 활동이 하위 단계에서 제공되는지 확인합니다.
4. 실행은 수락되었으나 활동이 표시되지 않으면 소스, 스트림, 평면 출력 형식이 정확한지 다시 확인합니다.

## 문제 해결

| 증상 | 확인 사항 |
| - | - |
| `401 Unauthorized` | `Authorization`에 값 `Bearer <access-key>`을 사용하고, 만료되었거나 취소된 키는 교체합니다 |
| `403 Forbidden` | **Push Ingest** 범위로 키를 생성합니다 |
| `404 Not Found` | `zscaler-nss-feed` 및 `web_logs`을 등록한 다음 해당 URL을 정확히 그대로 사용합니다 |
| `400 Bad Request` | JSON Array Notation을 활성화하고 출력이 평면 객체로 구성된 최상위 배열인지 확인합니다 |
| `202`이지만 사용자 또는 활동이 없음 | 레거시 `sourcetype` / `event` 래퍼를 제거하고 라우팅 키가 정확한지 확인합니다 |
| `429` | 일시적인 IP 수준 제한이 풀릴 때까지 전송을 늦추고, `Retry-After`이 있으면 이를 준수합니다 |
| `503` | 재시도를 위해 배치를 보관하고 `Retry-After`까지 기다린 후 변경하지 않고 다시 전송합니다 |
| 연결 테스트 실패 | 리전별 호스트 이름, Bearer 헤더, 키 상태, 공용 TLS 검사 정책을 확인합니다 |

API는 요청당 최대 10,000개 레코드와 10 MB를 허용하며, 조직당 60초에 600개 요청을 허용합니다. 전체 응답 및 재시도 규약은 [Custom Push Source API](/ko/integrations/custom-push-source)를 참조하십시오.

## 관련 문서

<CardGroup cols={2}>
  <Card title="Custom Push Source API" icon="arrow-up-from-bracket" href="/ko/integrations/custom-push-source">
    인증, 페이로드 제한, 응답, 재시도 및 실행 확인 방법을 검토합니다.
  </Card>

  <Card title="Zscaler Client Connector" icon="laptop" href="/ko/integrations/catalog/zscaler-client-connector-custom">
    디바이스 및 보안 상태 데이터를 위해 별도의 Client Connector API를 연결합니다.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.