# HTTP 소스

## 개요

Panther의 HTTP 로그 수집 기능을 사용하면 귀하(또는 제3자)가 웹후크를 통해 로그 이벤트를 Panther로 직접 전송할 수 있습니다. HTTP 로그 소스를 생성하면 Panther는 귀하가 요청을 보낼 수 있는 URL 엔드포인트를 제공합니다. `HTTP 원시 이벤트(HTTP Raw events)` 수집을 위한 데이터를 포함한 요청입니다.

직접적인 API 풀러가 없는 로그 소스의 경우 HTTP 소스를 사용하면 추가 인프라(다른 [데이터 전송 수단](https://docs.panther.com/ko/data-onboarding/data-transports)예:) [S3](https://docs.panther.com/ko/data-onboarding/data-transports/aws/s3) 이전에 생성한 Snowflake 사용자 이름, 예를 들면 [Google Cloud Storage](https://docs.panther.com/ko/data-onboarding/data-transports/google/cloud-storage)).

{% hint style="info" %}
Panther의 HTTP 소스는 실제로 HTTPS 소스이며, Panther에서 제공하는 엔드포인트는 `https://`로 시작합니다. 이러한 소스는 "HTTP" 또는 "HTTPS"라고 번갈아 지칭되지만 항상 암호화(TLS)로 보호됩니다.
{% endhint %}

## 페이로드 요구사항

HTTP 엔드포인트를 통해 Panther에 데이터를 전송할 때 다음과 같은 사양이 적용됩니다.

### 최대 크기

지원되는 최대 페이로드 크기는 1MB입니다. 이 제한은 헤더를 포함합니다.

다음에서 [압축하십시오](#compression) 전송하기 전에 페이로드를 압축하여 처리량을 극대화하십시오.

### 압축

페이로드는 선택적으로 압축하여 전송할 수 있습니다. 압축 사양에 대한 자세한 내용은 [Panther에서 압축된 데이터 수집하기](https://docs.panther.com/ko/data-onboarding/data-transports/..#ingesting-compressed-data-in-panther).

### 스트림 유형

Panther는 HTTP 소스를 통해 수집된 데이터의 스트림 유형을 자동으로 추론합니다. 다음 스트림 유형이 지원됩니다:

* JSON
* 라인
* JSON 배열
* XML

다음을 참조하십시오: [각 스트림 유형에 대한 설명과 예시는 여기에서 확인하세요](https://docs.panther.com/ko/custom-log-types/reference#stream-type).

## 인증

HTTPS 엔드포인트를 보호하여 인증된 소스의 요청만 처리되도록 하려면 Panther가 다양한 인증 모드를 제공합니다.

### **공유 시크릿**

공유 시크릿 인증(토큰 인증이라고도 함)에서는 소스 설정 중에 헤더 이름과 공유 시크릿 값을 구성합니다. Panther에 대한 `HTTP 원시 이벤트(HTTP Raw events)` 요청을 하는 엔터티는 해당 이름과 시크릿 값을 포함한 헤더를 포함해야 합니다. Panther는 구성과 일치하는 헤더와 시크릿이 있는 페이로드만 수락합니다.

이 방법을 공유 시크릿이라고 하는 이유는 시크릿이 Panther와 요청을 하는 엔터티 간에 공유되기 때문입니다. `HTTP 원시 이벤트(HTTP Raw events)` 예: 로그 이벤트를 전송하는 제3자 SaaS 도구.

### HMAC

HMAC 인증을 사용하는 경우 소스 설정 중에 헤더 이름, 시크릿 키 값 및 해싱 알고리즘을 구성합니다.

요청을 하는 엔터티는 `HTTP 원시 이벤트(HTTP Raw events)` 각 요청의 페이로드를 해시하고 시크릿 키 값을 사용해 서명을 생성한 다음 그 서명을 헤더에 포함해야 합니다. Panther는 헤더에서 서명을 가져와 동일한 시크릿 키를 사용하여 동일한 서명 계산을 수행합니다. 일치하는 서명이 있는 요청만 허용됩니다.

#### HMAC 해시 서명 계산

HMAC 인증을 사용하여 HTTP 소스를 설정한 후에는 새 엔드포인트로의 각 `HTTP 원시 이벤트(HTTP Raw events)` 요청에 해시 서명을 계산하여 전송해야 합니다. 이를 수행하려면:

1. Panther에 입력한 시크릿 키와 HMAC 16진수 다이제스트를 사용하여 요청 페이로드의 해시를 계산합니다.
2. 해시를 16진수 문자열로 변환합니다.
   * 환경에서 Fluentd 시작에 관해서는 [HMAC 해시 서명을 생성하기 위한 예제 코드 스니펫](#example-code-snippet-for-generating-the-hmac-hash-signature) 아래를 참조하십시오.
3. 요청 헤더에 16진수 문자열 값을 `{"<header name>": "sha256=<hex string>"}` 이전에 생성한 Snowflake 사용자 이름, 예를 들면 `{"<header name>": "sha1=<hex string>"}`선택한 해싱 알고리즘에 따라.

<details>

<summary>HMAC 해시 서명을 생성하기 위한 예제 코드 스니펫</summary>

다음 코드 스니펫은 `<hex_string>` 값(예: `sha256` 해싱 알고리즘을 사용한 경우):

```python
import hmac, hashlib

def signature(body: bytes, secret: bytes) -> str:
    sig = hmac.new(secret, body, hashlib.sha256).hexdigest()
    return f"sha256={sig}"
```

</details>

### Bearer

베어러 인증의 경우 소스 설정 중에 베어러 토큰 값을 정의합니다. Panther에 대한 `HTTP 원시 이벤트(HTTP Raw events)` 요청을 하는 엔터티는 다음 형식의 헤더를 포함해야 합니다. `Authorization: Bearer <token_value_here>`Panther는 일치하는 베어러 토큰을 가진 요청만 수락합니다.

### Basic

기본 인증의 경우 소스 설정 중에 사용자 이름과 비밀번호를 정의합니다. 요청을 하는 엔터티는 `HTTP 원시 이벤트(HTTP Raw events)` 요청을 하는 엔터티는 다음 형식의 헤더를 포함해야 합니다. `Authorization: Basic aGVsbG8=`키워드 뒤의 문자열은 `Basic` RFC 7617 [을 따릅니다. 즉, 전송자는](https://datatracker.ietf.org/doc/html/rfc7617#section-2)username:password `값을` base64 `로 인코딩해야 합니다.`Panther는 일치하는 사용자 이름과 비밀번호를 가진 요청만 수락합니다.

### **는 선택적**

강력히 권장되지는 않지만 인증 없이 엔드포인트를 구성하는 것이 가능합니다. 이는 Panther가 들어오는 요청에 대해 *어떠한* 인증 검사도 수행하지 않음을 의미하며, 사실상 URL이 모든 `HTTP 원시 이벤트(HTTP Raw events)` 요청에 열려 있게 됩니다.

{% hint style="warning" %}
엔드포인트에서 인증을 설정하는 것이 강력히 권장됩니다. **는 선택적** 발신자가 제공하는 헤더를 제어할 수 없는 상황에서 제공됩니다.
{% endhint %}

## Panther에서 HTTP 로그 소스 설정 방법

Panther에서 HTTP 로그 소스를 설정하려면 아래 단계를 따르십시오. 또한 HTTP 소스 설정에 대한 빠른 안내는 [데이터 수집 비디오 개요](https://docs.panther.com/ko/data-onboarding/..#video-overview) 를 참조하십시오.

### Panther에서 HTTP 로그 소스 생성하기

1. Panther 콘솔의 왼쪽 탐색 창에서 **구성** > **로그 소스**.
2. 오른쪽 상단에서 **새로 만들기.**
3. 을 클릭하세요 **HTTP** 타일을 클릭합니다.
4. 페이지에서 **구성** 페이지에서 **기본 정보** 섹션에서 다음 필드에 대한 값을 입력하십시오:
   * **소스 이름**: 소스에 대한 설명적인 이름을 입력하십시오.
   * **스키마 - 선택 사항**: 이 소스가 수집할 하나 이상의 로그 유형을 선택하십시오.
     * 이 필드는 선택 사항입니다. 소스가 생성된 후 스키마를 이 소스에 연결할 수 있습니다. 스키마가 연결되기 전에 HTTP 소스로 전송된 데이터는 [스키마를 추론하는 데](https://docs.panther.com/ko/custom-log-types#inferring-a-custom-schema-from-http-data-received-in-panther).
5. 일반 구성 **사용될 수 있습니다.** 인증 유형 선택 **인증 방법** 섹션에서 선택한 [인증 모드에 따라](#authentication)**.**\
   ![Under an Authentication header is the question: How would you like Panther to authenticate data sent to this log source? Then, in an open dropdown menu, are five options: Shared Secret, HMAC, Bearer, Basic, None](https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-f68f6d91615fa2f00f809e55ec249e246c80cebd%2FScreenshot%202023-09-12%20at%204.45.41%20PM.png?alt=media)
6. 다음 지침을 따르십시오: **인증 방법** 선택한
   * **공유 비밀(Shared Secret)**: 값을 입력하십시오 **헤더 이름**그리고 **공유 비밀 값**.
     * 생성하십시오. 귀하의 **공유 비밀 값**값을 안전하게 복사하여 안전한 장소에 저장하십시오. 이 값은 한 번만 표시됩니다. **공유 비밀 값**.
   * **HMAC**: 값을 입력하십시오 **헤더 이름**생성한 후 **가 설정됩니다.**&#xC744;(를) 생성하고 **해싱 알고리즘** 을 선택하십시오(다음 중 하나): **SHA 256** 이전에 생성한 Snowflake 사용자 이름, 예를 들면 **SHA 1**).
     * 생성하십시오. 귀하의 **가 설정됩니다.**&#xAC12;을 안전하게 복사하여 안전한 장소에 저장하십시오. 이 값은 한 번만 표시됩니다. **가 설정됩니다.**.
   * **Bearer**: 값을 입력하십시오 **베어러 토큰**.
     * 입력하는 값에는 "Bearer"를 포함하지 마십시오.
     * 귀하의 **베어러 토큰** 값을 안전하게 저장하십시오. Panther 콘솔에서는 표시되지 않습니다.
   * **Basic**: 입력 **사용자 이름** 와 **비밀번호** 값들.
     * 귀하의 **비밀번호** 값을 안전하게 저장하십시오. Panther 콘솔에서는 표시되지 않습니다.
   * **는 선택적**: 추가 구성 필요 없음.
7. 를 선택하고 Panther가 설치된 계정 ID를 입력하십시오. **설정**. 성공 화면으로 이동됩니다:\\

   <figure><img src="https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-e55cedf82c6a6adc66ec5c14ebdcb164c3b1dcca%2FScreenshot%202023-08-03%20at%204.33.30%20PM.png?alt=media" alt="The success screen reads, &#x22;Everything looks good! Panther will now automatically pull &#x26; process logs from your account&#x22;" width="281"><figcaption></figcaption></figure>

   * 귀하의 **HTTP 소스 URL**를 기록해 두십시오. 웹후크는 이 엔드포인트에 `HTTP 원시 이벤트(HTTP Raw events)` 요청을 해야 합니다.
   * 성공 화면으로 이동됩니다: [선택적으로 하나 이상의](https://docs.panther.com/detections/panther-managed/packs).
   * 입니다. 데이터가 일정 기간 이후에 로그 소스에서 흐르지 않으면 알림을 받으므로 이 옵션을 활성화된 상태로 두는 것을 권장합니다. 시간 범위는 구성 가능하며 기본값은 24시간입니다. **아직 하지 않았다면, 클릭하세요** 소스에 하나 이상의 스키마를 연결하려면 [데이터가 수신된 후 스키마를 추론할 수도 있습니다](https://docs.panther.com/ko/custom-log-types#how-to-infer-a-schema).
   * 사용자를 사용할 것이며, **가 활성화될 수 있습니다** "이벤트가 처리되지 않을 때 알러트를 트리거" **설정의 기본값은**. 로그 소스에서 일정 기간 동안 데이터 흐름이 중단되면 알림을 받으므로 이 옵션을 활성화 상태로 두는 것을 권장합니다. 시간 범위는 구성 가능하며 기본값은 24시간입니다.\\

   <figure><img src="https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-c48119abd559990173004bde99ff4907fdd2ded2%2FScreenshot%202023-08-03%20at%204.26.54%20PM.png?alt=media" alt="The &#x22;Trigger an alert when no events are processed&#x22; toggle is set to YES. The &#x22;How long should Panther wait before it sends you an alert that no events have been processed&#x22; setting is set to 1 Day" width="320"><figcaption></figcaption></figure>

   * 엔드포인트 생성에는 최대 5분이 걸릴 수 있으며 보통 3분 이내에 완료됩니다.
     * 생성 과정을 모니터링하려면 **로그 소스 보기**를 클릭하십시오. 그러면 소스의 세부 정보 페이지로 이동하며 해당 페이지에서 다음을 볼 수 있습니다: **소스 상태**:\\

       <figure><img src="https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-83a888aa60840ecabc2ed4376425d69ff3f1a5e8%2Fimage.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

## HTTP 로그 소스로 데이터 전송하기

HTTP 로그 소스를 생성한 후 해당 소스 URL로 `HTTP 원시 이벤트(HTTP Raw events)` 요청을 하여 Panther로 데이터를 전송할 수 있습니다.

요청이 소스에 대해 구성한 [인증 방법을 통과하는지 확인하십시오.](#authentication) curl --data '{ "hello": "world" }' \\

### 예시 사용 `curl`

```sh
-H "x-custom-secret: mysecret" \
    https://{YOUR_URL}
    오류 처리
```

## HTTP 엔드포인트가

4xx `또는` 이전에 생성한 Snowflake 사용자 이름, 예를 들면 `5xx` 상태 코드를 반환하면 Panther는 자동으로 요청을 재시도하지 않습니다. 송신자가 요청을 재시도하는 것이 권장됩니다. 서버 가용성과 관련된 일시적 문제일 수 있습니다. 오류가 지속되면 [Panther 지원팀에 문의하십시오.](https://docs.panther.com/ko/resources/help#contact-panther-support).

## 을 클릭하여 소스에 하나 이상의 스키마를 첨부하세요.

수집된 로그 보기 [로그 소스가 구성된 후에는 수집된 데이터를 사용하여 검색할 수 있습니다](https://docs.panther.com/ko/search/search-tool) 이전에 생성한 Snowflake 사용자 이름, 예를 들면 [panther\_monitor](https://docs.panther.com/ko/search/data-explorer).
