> 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).

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

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

{% hint style="info" %}
1.42 버전부터 Panther는 알려진 고정 IP 주소에서 알러트를 보냅니다. 이를 통해 고객은 이 IP 주소에서 온 알러트를 허용하도록 대상지를 구성할 수 있습니다.\
\
다음과 같이 표시된 주소를 찾을 수 있습니다. `Gateway Public 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 (Custom 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와 같은 추가 제3자 서비스(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 Console에 로그인합니다.
2. 왼쪽 사이드바 메뉴에서 다음을 클릭합니다: **알러트 대상**.
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), 또는 [대상 재정의 필드](#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()` 함수가 정의되어 있지만 다음을 반환하는 경우 `None`, 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>

"재정의"는 이 대상 정의 방법이 다음보다 우선한다는 의미입니다 [시나리오 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" %}
다음 **로그 유형** 알러트 대상의 필터는 규칙(또는 "실시간 규칙")과 상관 규칙에만 적용됩니다.**.** 로그 유형별 필터링은 예약 규칙, 정책 또는 시스템 오류에서는 사용할 수 없습니다.
{% 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 사용자 잠김”이라는 룰을 만들었습니다:

    ```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')} is locked out."

    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],
   "버전": 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": "INFO",
  "type": "룰",
  "link": "https://runpanther.io/alerts/b90c19e66e160e194a5b3b94ec27fb7c",
  "title": "새 알러트: [123.123.123.123]에서 의심스러운 트래픽이 감지됨",
  "name": "의심스러운 IP 모니터링",
  "alertId": "b90c19e66e160e194a5b3b94ec27fb7c",
  "description": "이 룰은 IP 주소 허용 목록 외의 모든 활동에 대해 알러트를 발생시킵니다",
  "runbook": "",
  "태그": [
    "네트워크 모니터링",
    "위협 인텔"
  ],
  "버전": "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.
