> For the complete documentation index, see [llms.txt](https://docs.panther.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.panther.com/ko/alerts/destinations.md).

# 알러트 대상

## 개요

대상은 룰과 정책에서 알러트를 수신하는 통합입니다.

기본적으로 알러트는 심각도에 따라 라우팅되며 여러 대상에 동시에 전송될 수 있습니다. 예를 들어, 하나의 알러트가 Jira 티켓을 만들고, PagerDuty 인시던트를 생성하며, [Amazon Simple Notification Service(SNS)를 통해 이메일을 보냅니다](/ko/alerts/destinations/sns.md#optional-creating-email-notifications).

디택션의 Python 함수나 메타데이터에서 대상을 설정하여 룰별 또는 정책별로 대상을 재정의할 수 있습니다. 라우팅이 어떻게 결정되는지에 대한 자세한 설명은 다음을 참조하세요 [알러트 라우팅 시나리오](#alert-routing-scenarios) 아래.

알러트에서 해당 알러트를 대상에 수동으로 라우팅하도록 선택할 수 있습니다. 알러트를 수동으로 라우팅하려는 각 대상에는 수동 알러트 라우팅이 활성화되어 있어야 합니다. 자세한 내용은 다음을 참조하세요 [수동 전송](#scenario-4-manual-alert-dispatch) 아래 시나리오.

{% hint style="info" %}
1.42 버전 이상부터 Panther는 알려진 고정 IP 주소에서 알러트를 보냅니다. 이를 통해 고객은 이 IP 주소에서 오는 알러트를 허용하도록 대상을 구성할 수 있습니다.\
\
다음과 같이 표시된 주소를 찾을 수 있습니다 `Gateway 공용 IP`, Panther Console에서 다음으로 이동하여 **설정** > **일반 설정** > **주요 정보 및 기본 설정** 그리고 다음에서 찾을 수 있습니다 **인프라** 섹션.
{% endhint %}

## 대상 구성 방법

특정 알러트 대상을 설정하는 방법은 아래 페이지를 따라 확인하세요.

### 지원되는 대상

Panther는 다음 대상에 대한 지원되는 통합을 제공합니다:

* [Amazon SNS](/ko/alerts/destinations/sns.md)
* [Amazon SQS](/ko/alerts/destinations/sqs.md)
* [Asana](/ko/alerts/destinations/asana.md)
* [Blink Ops](/ko/alerts/destinations/blink-ops.md)
* [Discord](/ko/alerts/destinations/discord.md)
* [Expel](/ko/alerts/destinations/expel.md)
* [GitHub](https://docs.panther.com/destinations/github)
* [Google Pub/Sub](/ko/alerts/destinations/pubsub.md)
* [Incident.io](/ko/alerts/destinations/incident.io.md)
* [Jira Cloud](/ko/alerts/destinations/jira.md)
* [Jira Data Center](/ko/alerts/destinations/jira-data-center.md)
* [Microsoft Teams](https://docs.panther.com/destinations/microsoft-teams)
* [Mindflow](/ko/alerts/destinations/mindflow.md)
* [OpsGenie](https://docs.panther.com/destinations/opsgenie)
* [PagerDuty](https://docs.panther.com/destinations/pagerduty)
* [Rapid7](/ko/alerts/destinations/rapid7.md)
* [ServiceNow(사용자 지정 Webhook을 통해)](/ko/alerts/destinations/servicenow.md#overview)
* [Slack(Webhook)](/ko/alerts/destinations/slack.md)
* [Slack Bot](/ko/alerts/destinations/slack-bot.md)
* [Splunk](/ko/alerts/destinations/splunk.md)
* [Tines](/ko/alerts/destinations/tines.md)
* [Torq](/ko/alerts/destinations/torq.md)

### 기본적으로 지원되지 않는 대상을 설정하기

Panther에서 기본적으로 지원하지 않는 대상으로 알러트를 받으려면 Custom Webhook 또는 API 워크플로를 사용하는 것을 고려하세요.

#### Panther의 Custom Webhook

Panther의 [Custom Webhook](/ko/alerts/destinations/custom_webhook.md) 대상은 Tines, TheHive 또는 SOCless와 같은 추가 타사(API 사용 가능)에 연결하는 데 사용됩니다.

#### Panther API

연결하려는 대상에 공개 API가 없는 경우(예: 내부 애플리케이션), 다음을 폴링하여 알러트를 받을 수 있습니다 [Panther API](/ko/panther/api.md) 정해진 일정에 따라 알러트를 확인하세요. 다음에서 알러트를 조회하고 조작할 수 있는 사용 가능한 API 작업을 참조하세요 [알러트](/ko/panther/api/rest/alerts.md) (REST) 및 [알러트 및 오류](/ko/panther/api/graphql/alerts-and-errors.md) (GraphQL).

하지만 알러트는 Panther에서 매번 가져오기 때문에 `n` 몇 분 또는 몇 시간, 그러니까—Custom Webhook 및 지원되는 통합처럼 생성되자마자 대상지로 전송되는 대신—이 방법은 지연을 초래할 수 있습니다.

### 대상 수정 또는 삭제

1. Panther 콘솔에 로그인합니다.
2. 왼쪽 사이드바 메뉴에서 **설정 > 알러트 대상**.
3. 대상 오른쪽의 점 3개 아이콘을 클릭합니다.

   * 표시되는 드롭다운 메뉴에서 클릭합니다 **삭제** 대상을 삭제하려면
   * 다음을 클릭합니다: **편집** 표시 이름, 심각도 수준 및 기타 구성을 수정하려면

   <figure><img src="/files/f5341028109b99d3a2e21885b20b9b43ba2a54ef" alt=""><figcaption></figcaption></figure>

## 알러트 라우팅 시나리오

알러트가 라우팅되는 대상(들)은 디택션에 대상 구성이 있으면 그 구성에, 그렇지 않으면 대상 자체의 구성에 따라 달라집니다.

{% hint style="info" %}
특정 대상을 하나의 특정 디택션에서만 알러트를 받도록 하려면, 심각도 수준이나 로그 유형이 없는 대상을 만든 다음 디택션이 해당 대상을 가리키도록 구성할 수 있습니다(다음을 사용하여 [`destinations()`](#scenario-1-dynamically-defined-destination-s-on-the-detection), [`OutputIds`](#scenario-2-statically-defined-destination-s-on-the-detection), 또는 [Destination Overrides 필드](#scenario-2-statically-defined-destination-s-on-the-detection)). 자세한 내용은 Panther의 KB 문서를 참조하세요: [단일 Panther 알러트를 특정 알러트 대상으로 라우팅하려면 어떻게 해야 하나요?](https://help.panther.com/Alerts_and_Destinations/Routing/How_do_I_route_a_single_Panther_alert_to_a_specific_alert_destination%3F)
{% endhint %}

라우팅 시나리오는 아래에 가장 높은 우선순위에서 가장 낮은 우선순위 순으로 설명되어 있습니다. 한 시나리오가 충족되면 알러트 라우팅은 중지됩니다(즉, 다음 시나리오는 호출되지 않습니다).

### 시나리오 1: 디택션에서 동적으로 정의된 대상(들)

Python 디택션은 [`destinations()` 함수](/ko/detections/rules/python.md#destinations) 어떤 대상(들)이 알러트를 받아야 하는지를 결정하는 것입니다. 이렇게 정의된 대상은 다른 모든 구성보다 우선합니다.

다음이 없으면 `destinations()` 디택션의 Python 본문에 정의된 함수가 없거나 *있거나* 하나의 `destinations()` 함수가 정의되어 있지만, 반환값이 `없음`이면, Panther는 다음 [시나리오 2](#scenario-2-statically-defined-destination-s-on-the-detection)으로 넘어가 알러트 대상을 찾습니다.

다음이 반환한 목록이 `destinations()` 함수의 결과가 비어 있으면 (`[]`), 알러트는 어떤 대상으로도 라우팅되지 않습니다.

<figure><img src="/files/8789a7cb6c664392d57360b3c024e884aa52008a" alt="Under a &#x22;Detect&#x22; header, rule() and destinations() functions are shown." width="563"><figcaption></figcaption></figure>

### 시나리오 2: 디택션에서 정적으로 정의된 대상(들)

Panther는 다음 경우 이 시나리오로 넘어갑니다: [시나리오 1](#scenario-1-dynamically-defined-destination-s-on-the-detection) 이 충족되지 않을 때.

정적 대상 재정의는 디택션의 YAML 파일 안이나 Console에서 정의할 수 있습니다:

* CLI 워크플로에서는 디택션의 YAML 파일에서 다음을 설정하여 대상을 정적으로 정의할 수 있습니다 `OutputIds` 필드에 붙여넣습니다.
  * 자세한 내용은 `OutputIds` 룰 사양 참조의 [Python 디택션에 대해서는 여기에서](/ko/detections/rules/python.md#python-rule-specification-reference), 그리고 [YAML 디택션에 대해서는 여기에서](/ko/detections/rules/writing-simple-detections.md#yaml-rule-specification-reference).
* Console에서 대상은 디택션의 **룰 설정**, 다음을 사용하여 **대상 재정의** 필드에 붙여넣습니다.

<figure><img src="/files/6b74922c98d83e2e84b68248448b0faac346f494" alt="" width="563"><figcaption></figcaption></figure>

"Overrides"는 이 대상 정의 방법이 [시나리오 3](#scenario-3-destination-configuration), 아래에서.

### 시나리오 3: 대상 구성

디택션에 대상이 정의되어 있지 않으면(에서 설명한 대로 [시나리오 1](#scenario-1-dynamically-defined-destination-s-on-the-detection) 그리고 [2](#scenario-2-statically-defined-destination-s-on-the-detection)), 대상 자체의 구성이 적용됩니다. 알러트가 특정 대상으로 라우팅되려면 다음 조건이 충족되어야 합니다:

* 해당 **심각도 수준** 대상에 구성된 심각도 수준에 알러트의 심각도 수준이 포함되어 있어야 합니다.
  * 알러트의 심각도는 디택션 내에서 정적으로 정의되거나 `심각도` 키이거나, 디택션에 의해 동적으로 정의됩니다 [`severity()` 함수](https://docs.panther.com/writing-detections#severity) (Python 디택션의 경우) 또는 [`DynamicSeverities`](/ko/detections/rules/writing-simple-detections.md#dynamicseverities) 값(YAML 디택션의 경우).
* 해당 **알러트 유형** 대상에 구성된 설정에는 알러트 유형이 포함되어야 합니다.
* 대상이 특정 항목의 알러트만 수락하도록 구성된 경우 **로그 유형**, 해당 목록에는 알러트와 연결된 로그 유형이 포함되어야 합니다.

{% hint style="warning" %}
해당 **로그 유형** 알러트 대상의 필터는 룰(또는 "실시간 룰") 및 상관 룰에만 적용됩니&#xB2E4;**.** 로그 유형별 필터링은 예약된 룰, 정책 또는 시스템 오류에는 사용할 수 없습니다.
{% endhint %}

<figure><img src="/files/70ad53dad08e1e8e2db191d52246532012adee54" alt=""><figcaption></figcaption></figure>

### 시나리오 4: 수동 알러트 전송

대상으로 알러트를 수동 전송하려는 이유는 여러 가지가 있습니다. 때때로 자동으로 전달되기를 의도했던 모든 대상에 전달되지 않은 알러트를 받을 수 있습니다. 이는 잘못된 구성, 알러트가 일회성 특수 사례인 경우, 또는 대상을 테스트하기 위한 것일 수 있습니다.

대상으로 알러트를 수동 전송할 수 있도록 하려면:

1. 다음으로 이동: **구성** > **알러트 대상**.
2. 수동 전송을 활성화하려는 대상을 클릭합니다.
3. 다음을 활성화합니다 **수동 전송 허용** 토글.

<figure><img src="/files/1c4afad99bc5c1eb4c385b992ea577a6d1d66bac" alt=""><figcaption></figcaption></figure>

4. 팝업에서 다음을 클릭합니다 **활성화**.

<figure><img src="/files/dfec381afb78b07932a1d11f2f03111561a81db9" alt=""><figcaption></figcaption></figure>

5. 하단에서 다음을 클릭합니다 **대상 업데이트**.

이제 이 대상으로 알러트를 수동 전송할 수 있습니다. 다음을 참조하세요 [알러트 수동 전송](/ko/alerts.md#manual-alert-dispatch) Dispatch 알러트 사용 방법에 대한 정보는 여기에서 확인하세요.

## 대상 예시

다음 예시는 사용자가 Okta에 여러 번 로그인 실패를 시도한 것을 기반으로 대상으로 알러트를 수신하는 방법을 보여줍니다.

다음을 구성했습니다:

* 대상:
  * [Slack](/ko/alerts/destinations/slack.md), 룰 일치에 대한 알러트를 수신하도록 구성되었습니다.
  * Tines(다음을 통해 설정됨 [Custom Webhook](/ko/alerts/destinations/custom_webhook.md)), 룰 일치에 대한 알러트를 수신하도록 구성되었습니다.
* 로그 소스:
  * Panther 인스턴스가 다음을 수집하고 있습니다 [Okta](/ko/data-onboarding/supported-logs/okta.md) 로그.
* 디택션:
  * 로그인 실패가 너무 많아 사용자가 Okta에서 잠겼을 때 알러트를 보내도록 “Okta User Locked Out”이라는 룰을 만들었습니다:

    ```python
    from panther_base_helpers import deep_get
    def 룰(event):
        return deep_get(event, 'outcome', 'reason') == 'LOCKED OUT'

    def title(event):
        return f"{deep_get(event, 'actor', 'alternateId')}이 잠겼습니다."

    def destinations(event):
        if deep_get(event, 'actor', 'alternateId') == "username@example.com":
            return ['dev-알러트-destinations', 'tines-okta-user-lock-out']
        return ['dev-general'] 

    def 알러트_context(event):
        return {
            "actor": deep_get(event, "actor", "displayName"),
            "id": deep_get(event, "actor", "id")
        }
    ```
  * 해당 `알러트_context()` 사용자 이름과 사용자의 Okta ID 값을 포함합니다.

#### 1. 이벤트가 발생합니다

사용자 중 한 명이 Okta에 여러 번 로그인하려 했지만 실패합니다. 결국 해당 계정이 잠깁니다.

#### 2. Panther가 로그를 수집하고 구성한 룰과 일치하는 이벤트를 감지합니다

Okta 감사 로그가 Panther 인스턴스를 통해 스트리밍되는 동안, “Okta User Locked Out” 룰은 사용자가 잠겼음을 감지합니다.\
![An alert in the Panther Console shows that a user is locked out. The triggered rule is called "Okta User Locked Out."](/files/d79c22c0b7f8132639a32762fa3a855093ac7579)

#### 3. 룰 일치가 알러트를 트리거합니다

감지된 룰 일치가 Slack 대상과 Tines 대상으로 알러트를 트리거합니다.

이벤트가 발생한 지 몇 분 안에 알러트가 대상으로 구성한 Slack 채널에 표시됩니다:

<div align="left"><figure><img src="/files/2ebe42c1d7cc08e3245950a87e654c9e1ce1ddd6" alt="A Slack app posts a Panther alert that says a user is locked out. The alert includes a link to the Panther UI, a Runbook that recommends verifying IPs, a Severity of Low, and Alert Context that includes the &#x22;actor&#x22; and &#x22;id&#x22; parameters." width="380"><figcaption></figcaption></figure></div>

알러트는 또한 다음을 통해 Tines로 전송됩니다. [Custom Webhook](/ko/alerts/destinations/custom_webhook.md) 대상으로 구성해 둔 것입니다. Tines는 다음의 값을 수신합니다. `알러트_context()` 함수이며, 사용자의 Okta 계정 잠금을 자동으로 해제한 다음 Slack에 확인 메시지를 보내도록 설정되어 있습니다.

<div align="left"><figure><img src="/files/e94e0b2a65b4fa906430458075068bf1afa41044" alt="The automated process in Tines shows the sequence of events: Receive Alert from Panther, Wait 10 minutes, Unlock Okta user by ID via HTTP Request, Send Unlock message to Slack via HTTP Request." width="411"><figcaption></figcaption></figure></div>

## 대상 스키마

### 워크플로 자동화

알러트 페이로드는 일반적으로 다음 형식을 따릅니다. 사용자 지정 웹훅, SNS, SQS 또는 기타 워크플로 자동화가 많이 사용되는 대상의 경우, 이는 알러트를 어떻게 처리할지 정의하는 데 중요합니다.

Jira나 Slack 같은 기본 제공 통합의 경우, 이는 대상이 이해할 수 있는 형식으로 자동 처리됩니다.

```typescript
{
   "id": 문자열,
   "createdAt": AWSDateTime,
   "severity": 문자열,
   "type": 문자열,
   "link": 문자열,
   "title": 문자열,
   "name": 문자열,
   "alertId": 문자열,
   "description": 문자열,
   "runbook": string,
   "tags": [string],
   "version": string
}
```

해당 [AWSDateTime](https://docs.aws.amazon.com/appsync/latest/devguide/scalars.html) 스칼라 타입은 유효한 확장 ISO 8601 DateTime 문자열을 나타냅니다. 다음 형식의 datetime 문자열을 허용합니다 `YYYY-MM-DDThh:mm:ss.sssZ`. 초 필드 뒤의 필드는 나노초 필드입니다. 1자리에서 9자리 사이의 숫자를 허용할 수 있습니다. 초 및 나노초 필드는 선택 사항입니다. 이 스칼라에서는 시간대 오프셋이 필수입니다. 시간대 오프셋은 다음 중 하나여야 합니다 `Z` (UTC 시간대를 나타냄) 또는 다음 형식이어야 합니다 `±hh:mm:ss`. 시간대 오프셋의 초 필드는 ISO 8601 표준의 일부는 아니지만 유효한 것으로 간주됩니다.

### 예시 JSON 페이로드:

```javascript
{
  "id": "AllLogs.IPMonitoring",
  "createdAt": "2020-10-13T03:35:24Z",
  "severity": "정보",
  "type": "룰",
  "link": "https://runpanther.io/알러트/b90c19e66e160e194a5b3b94ec27fb7c",
  "title": "새 알러트: [123.123.123.123]에서 의심스러운 트래픽이 감지됨",
  "name": "의심스러운 IP 모니터링",
  "alertId": "b90c19e66e160e194a5b3b94ec27fb7c",
  "description": "이 룰은 IP 주소 화이트리스트 밖의 모든 활동에 대해 알러트를 발생시킵니다", 
  "runbook": "",
  "tags": [
    "네트워크 모니터링",
    "위협 인텔리전스"
  ],
  "version": "CJm9PiaXV0q8U0JhoFmE6L21ou7e5Ek0"
}
```

## 알러트 대상 문제 해결

Panther Knowledge Base를 방문하여 [알러트 대상에 대한 문서 보기](https://help.panther.com/collections/6996653098-destinations) 자주 묻는 질문에 답하고 일반적인 오류와 문제를 해결하는 데 도움이 됩니다.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.panther.com/ko/alerts/destinations.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
