# 룰 및 예약 룰

## 개요

룰과 예약 룰은 로그 데이터를 실행하여 의심스러운 활동을 감지하고 신호를 생성하는 논리의 조각입니다 [신호](https://docs.panther.com/ko/detections/signals) (및 선택적으로 [알러트](https://docs.panther.com/ko/alerts)). 룰은 실시간 이벤트를 분석하는 반면, 예약 룰은 데이터 레이크에서 쿼리된 이벤트를 분석합니다. 이러한 디택션 유형은 클라우드 리소스 구성에 적용되는 [정책](https://docs.panther.com/ko/detections/policies)과는 다릅니다.

Panther는 다수의 [Panther 관리 룰 및 예약 룰](https://docs.panther.com/ko/detections/panther-managed) 을(를) Python으로 제공하며, 이는 이미 작성되어 지속적으로 업데이트됩니다. 콘솔에서 [심플 디텍션 빌더](https://docs.panther.com/ko/detections/rules/simple-detection-builder) 를 사용하거나 [Python](https://docs.panther.com/ko/detections/rules/python)을(를) 작성하여 커스텀 룰을 생성할 수 있습니다; CLI 워크플로우에서는 룰을 [심플 디텍션(YAML)으로](https://docs.panther.com/ko/detections/rules/writing-simple-detections) 또는 [Python](https://docs.panther.com/ko/detections/rules/python)로 작성할 수 있습니다. 예약 룰은 [Python](https://docs.panther.com/ko/detections/rules/python) (콘솔 또는 CLI 워크플로우에서)로 작성할 수 있습니다.

{% hint style="info" %}
다음 도구를 사용하세요: [AI 디텍션 빌더](https://docs.panther.com/ko/detections/rules/ai-builder) 자연어로부터 디텍션 코드를 생성하려면
{% endhint %}

만약 경고를 생성할 만큼 단독으로 가치가 없는(적어도 단독으로는) 작업을 위한 룰이나 예약 룰을 만들고 싶다면, [이들이 알러트를 생성하지 않도록 구성할 수 있습니다](https://docs.panther.com/ko/signals#how-to-create-a-rule-that-only-produces-signals) (오직 [신호](https://docs.panther.com/ko/detections/signals)만 생성하도록). 그런 다음 해당 룰들을 [상관 룰](https://docs.panther.com/ko/detections/correlation-rules).

룰은 [도출(derivation)](https://docs.panther.com/ko/detections/rules/derived)을 사용할 수 있으며, 이는 하나의 베이스 디텍션에서 하나 이상의 파생 디텍션을 생성할 수 있게 해줍니다. 또한 [Sigma 룰을 Panther 룰로 변환할 수 있습니다](https://docs.panther.com/ko/panther/converting-sigma-rules).

룰의 일반적인 예에는 로그를 분석하는 것이 포함됩니다:

* 알려지지 않았거나 예상치 못한 위치에서의 인증
* SaaS 서비스에 대한 관리 변경과 같은 민감한 API 호출
* 데이터베이스나 가상 머신과 같은 민감한 데이터 소스에 대한 네트워크 트래픽 접근

### 룰 vs 예약 룰

룰과 예약 룰은 모두 로그 이벤트를 실행하는 논리를 정의하지만—룰은 실시간 이벤트를 분석하는 반면 예약 룰은 데이터 레이크에서 쿼리된 이벤트를 분석합니다.

* **룰**
  * 룰은 Panther로 전송된 데이터를 분석하는 기본 메커니즘입니다. 룰은 [지원되는 로그 소스](https://docs.panther.com/ko/data-onboarding/supported-logs)같은 하나 이상의 정의된 로그 유형 세트를 수용하거나, 당신의 [커스텀 데이터](https://docs.panther.com/ko/data-onboarding/custom-log-types)를(을) 수용함으로써 작동합니다. 룰은 낮은 대기시간으로 디텍션 및 알러트를 제공한다는 장점이 있습니다.
  * 사용 사례: 다른 데이터와의 조인이 필요하지 않은 높은 신호성 로그.
  * 룰은 스트리밍 룰, 실시간 룰, 저지연 룰로도 알려질 수 있습니다.
* **예약 룰**
  * 예약 룰은 관련된 [예약 검색](https://docs.panther.com/ko/search/scheduled-searches).
  * 에서 출력된 개별 행을 수용하여 작동합니다. 사용 사례: 과거의 시간 창을 검색하거나, 데이터에 대한 통계 분석을 실행하거나, 별도의 데이터 스트림을 조인하는 경우.

### Python vs 심플 디텍션 YAML 사용

로컬에서 룰을 작성하는 경우(CLI 워크플로우에서) Python 또는 심플 디텍션으로 생성할 수 있습니다. (예약 룰은 Python으로만 작성할 수 있습니다.) 아래에 두 가지 룰 생성 방식의 장점이 설명되어 있습니다.

* [Python으로 룰 작성](https://docs.panther.com/ko/detections/rules/python) 다음과 같은 경우:
  * 논리의 복잡성이 매우 높거나, 디텍션이 현재 [심플 디텍션 YAML의 제한사항](https://docs.panther.com/ko/detections/writing-simple-detections#limitations-of-simple-detections-yaml).
* [으로 나열된 기능 중 하나를 필요로 하는 경우](https://docs.panther.com/ko/detections/rules/writing-simple-detections) 다음과 같은 경우:
  * 심플 디텍션으로 룰 작성 [심플 디텍션 빌더](https://docs.panther.com/ko/detections/rules/simple-detection-builder)기술 수준이 다른 팀 구성원 간의 협업을 촉진하고 싶을 때. CLI 워크플로우에서 작성된 심플 디텍션이 Panther에 업로드되면 콘솔에서

으로 표시됩니다. 그런 다음 심플 디텍션 빌더를 사용하여 콘솔에서 디텍션을 편집(또는 새로 생성)할 수 있습니다. [동일한 디텍션 로직이 Python과 YAML로 모두 작성된 예는 아래의](#rule-examples).

## 룰 예시

룰과 예약 룰은 모두 한 번에 하나의 이벤트를 분석합니다. 이들은 이벤트 임계값과 중복 제거를 사용하여 시간 창 내에서 이벤트 그룹화를 생성합니다.

최소한 각 룰과 예약 룰은 룰 로직을 정의해야 합니다. [Python 디텍션의 경우](https://docs.panther.com/ko/detections/rules/python)이는 각 디텍션이 반드시 `rule()` 함수를 포함해야 함을 의미합니다; [CLI 워크플로우에서 작성된 심플 디텍션의 경우](https://docs.panther.com/ko/detections/rules/writing-simple-detections)각각 적어도 하나의 `Detection` 키와 하나 이상의 [매치 표현식](https://docs.panther.com/ko/detections/rules/writing-simple-detections/match-expression).

을 포함해야 합니다. Python 룰은 또한 [동적 알러트 함수](https://docs.panther.com/ko/detections/python#alert-functions-in-python-detections)를 정의할 수 있고, 심플 디텍션은 [동적 알러트 키](https://docs.panther.com/ko/detections/writing-simple-detections#dynamic-alert-keys-in-simple-detections)를 사용할 수 있습니다. 둘 다 [인라인 필터](https://docs.panther.com/ko/detections/rules/inline-filters)를 사용할 수 있으며, 이는 디텍션 로직보다 먼저 실행됩니다.

{% hint style="warning" %}
룰은 15초 이상 실행될 수 없습니다. 이 경우 [룰 오류](#rule-errors-and-scheduled-rule-errors) 가 생성되고 처리가 종료됩니다. (이 제한은 예약 룰에는 적용되지 않습니다.)
{% endhint %}

룰과 예약 룰의 매치는 [신호](https://docs.panther.com/ko/detections/signals)를 생성합니다. 룰과 예약 룰에 알러트 기능이 활성화되어 있으면, 룰 매치가 생성되어 이벤트 임계값 및 중복 제거 구성에 따라 알러트를 생성할 수 있습니다. [신호, 룰 매치 및 알러트의 차이에 대해 더 알아보려면 여기](https://docs.panther.com/ko/detections/..#signals-vs.-rule-matches-vs.-alerts).

### 관련 알러트의 제목

디텍션에 알러트가 활성화되어 있을 때, 결과 알러트의 제목은 해당 디텍션의 구성에 의해 결정됩니다. 별도의 [중복 문자열](#deduplication-of-alerts) 이(가) 명시적으로 설정되지 않은 경우, 알러트 제목은 또한 알러트 중복 제거에 사용됩니다.

#### 알러트 제목이 설정되는 방법

알러트 제목 설정의 우선순위는 다음과 같습니다:

{% tabs %}
{% tab title="Python" %}
**Python에서의 알러트 제목 우선순위:**

1. 동적 [`title()`](https://docs.panther.com/ko/detections/python#title) 함수의 출력이 사용됩니다.
2. 만약 `title()` 이 정의되어 있지 않다면, 디텍션의 표시 이름 값이 사용됩니다. 이는 다음에 정의됩니다:
   * 콘솔에서: **Name** 필드
   * CLI 워크플로우에서는: `DisplayName` YAML 파일의 필드
3. 표시 이름이 정의되지 않은 경우, 디텍션의 ID가 사용됩니다. 이는 다음에 정의됩니다:
   * 콘솔에서: **ID** 필드
   * CLI 워크플로우에서는:`RuleID` 또는 `PolicyID` YAML 파일의 필드
     {% endtab %}

{% tab title="심플 디텍션" %}
**심플 디텍션 YAML에서의 알러트 제목 우선순위:**

1. 동적 알러트 제목이 사용됩니다. 이는 다음에 정의됩니다:
   * 콘솔에서: **선택적 필드** > **기본 제목은** > **으로 설정됩니다** 필드
   * 개발자 워크플로우에서는: [`AlertTitle`](https://docs.panther.com/ko/detections/writing-simple-detections#alerttitle) 필드
2. 동적 알러트 제목이 정의되지 않은 경우, 디텍션의 표시 이름 값이 사용됩니다. 이는 다음에 정의됩니다:
   * 콘솔에서: **Name** 필드
   * 개발자 워크플로우에서는: `DisplayName` 필드
3. 표시 이름이 정의되지 않은 경우, 디텍션의 ID가 사용됩니다. 이는 다음에 정의됩니다:
   * 콘솔에서: **ID** 필드
   * 개발자 워크플로우에서는:`RuleID` 또는 `PolicyID` 필드
     {% endtab %}
     {% endtabs %}

### 알러트 중복 제거

중복 제거 기간 내에 동일한 중복 문자열을 공유하는 동일한 디텍션을 트리거한 이벤트들은 하나의 알러트로 그룹화됩니다.

각 룰과 예약 룰은 기본 이벤트 임계값 `1` 과 중복 제거 기간 `1시간을 가집니다.` 이는 다음에서 `True` 를 반환하는 모든 이벤트들이 `rule` 함수(같은 중복 문자열을 가진)는 첫 생성 후 한 시간 이내에 하나의 알러트로 그룹화된다는 것을 의미합니다.

이벤트 임계값이 `5` 과 중복 제거 기간 `15분` 인 룰이나 예약 룰은 15분 기간 내에 다섯 개 이상의 이벤트(같은 중복 문자열을 가진)가 `rule` 함수에 전달되어 `True` 를 반환할 때까지 알러트를 트리거하지 않습니다.

중복 임계값이 1보다 큰 경우(즉, 알러트가 생성되기 전에 여러 이벤트가 매치되어야 하는 경우), *첫 번째* 매치된 이벤트가 Python 디텍션의 [알러트 함수에 대한 이벤트 파라미터로 사용되고](https://docs.panther.com/ko/detections/python#alert-functions-in-python-detections) 및 [심플 디텍션의 알러트 키](https://docs.panther.com/ko/detections/writing-simple-detections#dynamic-alert-keys-in-simple-detections).

#### 에 사용됩니다.

고유 값 임계값 지정 `Python 룰의 경우,` unique()

함수를 정의하여 고유 값 임계값 디텍션을 활성화할 수 있습니다. 이를 통해 룰이 총 이벤트 수가 아니라 고유 값의 개수에 기반하여 알러트하도록 할 수 있습니다. 예를 들어, 총 로그인 시도 5회 후가 아니라 서로 다른 IP 주소 5개 이상이 로그인 시도할 때 알러트하도록 설정할 수 있습니다. `Python 룰의 경우,` 함수가 존재할 때:

* 임계값은 `Python 룰의 경우,`.
* 이(가) 반환하는 고유 값의 추정 개수에 적용됩니다.
* 이벤트는 여전히 중복 문자열을 기반으로 정상적으로 중복 제거됩니다.

고유 카운트는 각 중복 제거 기간이 끝날 때 리셋됩니다. [자세한 예시와 사용법은](https://docs.panther.com/ko/detections/python#unique-value-threshold-detection) 고유 값 임계값 디텍션

#### 을 참조하세요.

중복 제거 기간

* 중복 제거 기간을 설정할 때 다음 제약이 적용됩니다: **Panther 콘솔의 디텍션 편집기에서 작업할 때 최소값은** 15분 **이고 최대값은**.
* 24시간 [입니다.](https://docs.panther.com/ko/panther/detections-repo/pat)대량 업로더나 `Panther 분석 도구 (PAT)` 를 통해 디텍션을 업로드할 때, `5` DedupPeriodMinutes

필드의 최소값은 *이고 최대값은 없습니다.* 중복 제거 기간은 알러트 상태 변경의 영향을 받지 않습니다. 예를 들어, 이벤트는 알러트의 상태가 `Resolved`.

#### 로 변경되더라도 중복 제거 기간 동안 동일한 알러트로 계속 그룹화됩니다.

중복 문자열이 설정되는 방법

{% tabs %}
{% tab title="Python" %}
**중복 문자열 설정의 우선순위는 다음과 같습니다:**

1. 동적 [`Python에서의 중복 문자열 우선순위:`](https://docs.panther.com/ko/detections/python#dedup) 함수의 출력이 사용됩니다.
2. 만약 `Python에서의 중복 문자열 우선순위:` dedup() [가 정의되어 있지 않다면, 알러트 제목이 사용됩니다. 알러트 제목은](#alert-title-precedence-in-python).
   {% endtab %}

{% tab title="심플 디텍션" %}
**여기 정의된 우선순위**

1. 에 의해 정의됩니다. [`심플 디텍션 YAML에서의 중복 문자열 우선순위:`](https://docs.panther.com/ko/detections/writing-simple-detections#groupby) GroupBy
2. 만약 `심플 디텍션 YAML에서의 중복 문자열 우선순위:` 키의 값이 사용됩니다. [가 정의되어 있지 않다면, 알러트 제목이 사용됩니다. 알러트 제목은](#alert-title-precedence-in-simple-detections-yaml).
   {% endtab %}
   {% endtabs %}

이 값이 존재하지 않으면 알러트 제목이 사용됩니다. 알러트 제목은

* 에 의해 정의됩니다. [`title()`](https://docs.panther.com/ko/detections/python#title) 또는 [`AlertTitle`](https://docs.panther.com/ko/detections/writing-simple-detections#alerttitle) 중복 문자열을 설정하는 방법은 알러트를 얼마나 세분화하여 그룹화할지에 따라 다릅니다:
* 특정 디텍션에 의해 생성된 알러트를 동일 디텍션에서 하나 이상의 이벤트 필드 값이 다른 알러트와 별도로 그룹화하려면, 동적으로 알러트 제목을 설정하여 결과적으로 중복 문자열을 동적으로 설정할 수 있습니다 (Python과 심플 디텍션 각각에 대해). *및* 특정 디텍션에 의해 생성된 알러트를 동일 디텍션에서 하나 이상의 이벤트 필드 값이 다른 알러트와 구별되게 그룹화하려면 `title()` 또는 `AlertTitle` 사용하지 않은 하나 이상의 이벤트 필드를 기준으로 알러트를 그룹화하려는 경우 (또는 전혀 `title()` 또는 `AlertTitle` 를 설정하지 않은 경우), [`Python에서의 중복 문자열 우선순위:`](https://docs.panther.com/ko/detections/python#dedup) 또는 [`심플 디텍션 YAML에서의 중복 문자열 우선순위:`](https://docs.panther.com/ko/detections/writing-simple-detections#groupby) Python 및 심플 디텍션 각각에 대해 중복 문자열을 설정하려면

## 다음을 사용할 수 있습니다.

룰 및 예약 룰 작성 방법 [심플 디텍션 빌더](https://docs.panther.com/ko/detections/rules/simple-detection-builder) 또는 [Python](https://docs.panther.com/ko/detections/rules/python)룰은 Panther 콘솔(사용하여 [)에서 또는 로컬(](https://docs.panther.com/ko/detections/rules/writing-simple-detections) 또는 [Python](https://docs.panther.com/ko/detections/rules/python)심플 디텍션 YAML [Python](https://docs.panther.com/ko/detections/rules/python) )에서 작성할 수 있습니다; 예약 룰은

{% hint style="info" %}
다음 도구를 사용하세요: [AI 디텍션 빌더](https://docs.panther.com/ko/detections/rules/ai-builder) (Panther 콘솔 또는 로컬에서)로 작성할 수 있습니다.
{% endhint %}

자연어로 룰을 생성 및 수정하려면 다음을 사용하세요. Panther AI는 디텍션 코드를 생성하고, 테스트 케이스를 추가하며, 룰 편집기에서 직접 디텍션 로직을 설명할 수 있습니다. [로컬에서 디텍션을 작성한다는 것은 자체 머신에서 Panther 디텍션을 정의하는 Python 및/또는 YAML 파일을 생성하는 것을 의미합니다. 로컬에서 디텍션을 작성한 후, 일반적으로](https://docs.panther.com/ko/panther/detections-repo/pat).

PAT `을(를) 통해 파일을 Panther 인스턴스에 업로드합니다.` 또는 `Python 코드에서` stdout

{% hint style="info" %}
stderr [로 출력되는 모든 내용은 CloudWatch에서 확인할 수 있습니다. SaaS/CPaaS 고객의 경우, Panther 직원이 정기적인 애플리케이션 모니터링 중에 이러한 CloudWatch 로그를 볼 수 있습니다.](https://docs.panther.com/ko/detections/panther-managed) 새 룰을 작성하기 전에 기존의 [Panther 관리 룰](https://docs.panther.com/ko/detections/rules/derived).
{% endhint %}

### 이(가) 있는지 확인하세요. 만약 당신(또는 Panther)이 이미 당신이 만들고자 하는 것과 유사한 룰을 생성한 경우,

파생 디텍션 [을 생성하는 것을 고려하세요.](#how-to-write-scheduled-rules).

룰 작성 방법

* [이 지침은 실시간 룰을 설정하는 방법을 설명합니다. 예약 룰을 구성하려면,](https://docs.panther.com/ko/detections/python#how-to-create-a-rule-in-python)
* [예약 룰 작성 방법](https://docs.panther.com/ko/detections/simple-detection-builder#how-to-create-a-rule-in-the-simple-detection-builder)
* [을 참조하세요.](https://docs.panther.com/ko/detections/writing-simple-detections#how-to-create-a-simple-detection-rule-in-yaml)

### 을 생성하는 것을 고려하세요.

아래 지침을 따라 룰 작성 방법을 배우세요: [Python으로 (콘솔 또는 CLI 워크플로우에서)](https://docs.panther.com/ko/search/scheduled-searches)콘솔의 심플 디텍션 빌더에서 [CLI 워크플로우에서 심플 디텍션으로](https://docs.panther.com/ko/search/scheduled-searches#how-to-create-a-scheduled-search) 예약 룰은 하나 이상의

예약 검색

{% hint style="info" %}
과 연관됩니다. 아직 예약 검색을 생성하지 않았다면, 먼저 [예약 검색](https://docs.panther.com/ko/search/scheduled-searches)저장된 및 예약된 검색 생성 방법
{% endhint %}

지침을 따르고, 그런 다음 이 지침으로 돌아와 예약 룰을 생성하세요.

* [이 지침은 실시간 룰을 설정하는 방법을 설명합니다. 예약 룰을 구성하려면,](https://docs.panther.com/ko/detections/python#how-to-create-a-scheduled-rule-in-python)

## 예약 검색이 여러 행을 반환하면, 각 행은 룰 로직에 의해 별도의 이벤트로 처리됩니다. 트리거되는 알러트 수는 예약 룰에 구성한 중복 제거 설정에 따라 달라집니다.

룰 성능을 개선하고 데이터베이스 최적화를 활용하려면 가능한 한 많은 데이터 처리를 SQL(즉, [)에서 수행하는 것이 권장됩니다.](https://docs.panther.com/ko/alerts) 아래 지침을 따라 예약 룰 작성 방법을 배우세요:

* 룰 오류 및 예약 룰 오류
* 룰 오류 및 예약 룰 오류는 다음과 같은 유형의

디텍션 오류 [로 생성됩니다:](https://docs.panther.com/ko/alerts/destinations) 디텍션의 코드가 예외를 발생시킬 때. [룰 또는 예약 룰의 Python 처리 시간이 15초를 초과할 때.](https://docs.panther.com/ko/alerts/destinations#routing-order-precedence) 만약 어떤

알러트 대상지 [예약 검색](https://docs.panther.com/ko/search/scheduled-searches) 로 룰 오류(또는 예약 룰 오류)를 받을 수 있도록 구성되지 않았다면, 룰 오류(또는 예약 룰 오류)에 대한 알러트는 해당 룰 또는 예약 룰의 알러트에 사용될 대상지와 동일한 대상지로 라우팅됩니다. 자세한 내용은 [알러트 대상지의 라우팅 우선순위](https://docs.panther.com/ko/system-configuration/notifications/system-errors) 를 참조하세요.

## 타임아웃이 발생한 경우,

시스템 오류 [가 생성됩니다.](https://github.com/panther-labs/panther-analysis/tree/master/templates).

룰 예시 [panther-analysis GitHub 리포지토리에서 룰 및 예약 룰 템플릿을 참조하세요.](https://docs.panther.com/ko/detections/rules/python) 및 [디텍션 작성에 대한 심층 정보는 다음을 참조하세요:](https://docs.panther.com/ko/detections/rules/writing-simple-detections).

### Python 디텍션 작성

심플 디텍션 작성

{% tabs %}
{% tab title="Python" %}
**Auth0 다중요소 인증 정책 비활성화**

하나의 디텍션이 Python과 심플 디텍션으로 모두 어떻게 표현되는지 확인하세요: [Python에서의 Auth0 다중요소 인증 정책 비활성화 디텍션](https://github.com/panther-labs/panther-analysis/blob/13e49e6589b1160928ec85678884da0e72e986f3/rules/auth0_rules/auth0_mfa_policy_disabled.py).

```python
이 디텍션 전체를 보려면
GitHub의 panther-analysis 리포지토리에서


from panther_auth0_helpers import auth0_alert_context, is_auth0_config_event
    from panther_base_helpers import deep_get
    def rule(event):
        data_description = deep_get(event, "data", "description", default="<NO_DATA_DESCRIPTION_FOUND>")
    )
    request_path = deep_get(
    event, "data", "details", "request", "path", default="<NO_REQUEST_PATH_FOUND>")
        [
            request_body = deep_get(event, "data", "details", "request", "body", default=[-1])
            return all(
            data_description == "Set the Multi-factor Authentication policies",
            request_path == "/api/v2/guardian/policies",
        ]
    )
```

{% endtab %}

{% tab title="request\_body == \[]," %}
**is\_auth0\_config\_event(event),**

```yaml
심플 디텍션
  YAML에서의 Auth0 다중요소 인증 정책 비활성화 디텍션 (심플 디텍션)
      Detection:
      - DeepKey:
    - data
    - description
  YAML에서의 Auth0 다중요소 인증 정책 비활성화 디텍션 (심플 디텍션)
      Detection:
      Condition: Equals
      Value: Set the Multi-factor Authentication policies
      - details
    - data
    - request
  YAML에서의 Auth0 다중요소 인증 정책 비활성화 디텍션 (심플 디텍션)
      Detection:
      Condition: Equals
      Value: Set the Multi-factor Authentication policies
      - path
    Value: /api/v2/guardian/policies
  YAML에서의 Auth0 다중요소 인증 정책 비활성화 디텍션 (심플 디텍션)
      Detection:
      Condition: Equals
      Value: Set the Multi-factor Authentication policies
      - body
    - data
    Condition: IsNullOrEmpty
```

{% endtab %}
{% endtabs %}

### - channel

Value: '<https://manage.auth0.com/>'

웹 서버에서 관리자 패널에 접근할 때 감지 및 알러트 보내기

```javascript
{
  예시로, 웹 서버에서 관리자 패널에 접근할 때 알러트를 보내는 룰을 작성해 보겠습니다.
  다음과 같은 NGINX 로그를 가정합니다:
  "httpReferer": "https://domain1.com/?p=1",
  "httpUserAgent": "Chrome/80.0.3987.132 Safari/537.36",
  "remoteAddr": "180.76.15.143",
  "request": "GET /admin-panel/ HTTP/1.1",
}
```

"status": 200,

* "time": "2019-02-06 00:00:38 +0000 UTC"
* 우리가 만들고자 하는 디텍션은 다음을 수행합니다:
* "admin-panel"이 포함된 모든 URL에 대한 200(성공) 웹 요청을 찾습니다

{% tabs %}
{% tab title="Python" %}

```python
from panther_auth0_helpers import auth0_alert_context, is_auth0_config_event
  특정 IP 주소에서 성공적인 관리자 패널 로그인 발생을 알리는 알러트 제목을 생성합니다

    
IP 주소를 기준으로 이벤트를 중복 제거합니다
  return event.get('status') == 200 and 'admin-panel' in event.get('request')


def title(event):
  return f"Successful admin panel login detected from {event.get('remoteAddr')}"
```

{% endtab %}

{% tab title="request\_body == \[]," %}

```yaml
심플 디텍션
  def dedup(event):
    - data
    return event.get('remoteAddr')
  - KeyPath: status
    Value: 200
    - KeyPath: request

Condition: Contains

Value: 'admin-panel'
  AlertTitle: "Successful admin panel login detected from {remoteAddr}"
```

{% endtab %}
{% endtabs %}

GroupBy:

1. \- KeyPath: remoteAddr [그 후, 다음과 같은 일이 발생합니다:](https://docs.panther.com/ko/alerts/destinations)연관된 대상지 집합에 알러트가 생성되어 전송됩니다
2. 대상지는 기본적으로 룰 심각도에 따라 결정됩니다. `알러트의 제목은 다음과 같습니다:`.
3. Successful admin panel login detected from 180.76.15.143 `180.76.15.143` 같은 중복 문자열인
   * 을(를) 가진 유사한 이벤트들은 동일한 알러트에 추가됩니다.
4. 각 고유 중복 문자열에 대해 고유한 알러트가 생성됩니다. 이 경우에는 요청자의 IP가 중복 문자열입니다. [알러트 수신자는 Panther에 로그인하여 모든 알러트 메타데이터와 이벤트 요약을 보고 추가 분석을 수행하기 위해](https://docs.panther.com/ko/search) 검색

## 을(를) 실행할 수 있습니다.

### 참고

알러트 심각도

<table data-header-hidden><thead><tr><th width="133.26171875">알러트 심각도 수준을 정의하기 위해 다음 지침을 따르는 것을 권장합니다:</th><th width="128.59765625">심각도</th><th width="202.296875">악용 가능성</th><th>설명</th></tr></thead><tbody><tr><td>알러트 심각도 수준을 정의하기 위해 다음 지침을 따르는 것을 권장합니다:</td><td>심각도</td><td>악용 가능성</td><td>설명</td></tr><tr><td><code>예시</code></td><td>정보(Info)</td><td>해당 없음</td><td>위험 없음, 단지 정보성</td></tr><tr><td><code>운영 인식 확보</code></td><td>낮음(Low)</td><td>어려움</td><td>악용 시 거의 또는 전혀 위험 없음</td></tr><tr><td><code>시스템 시간 및 OS 버전과 같은 민감하지 않은 정보 누출</code></td><td>낮음(Low)</td><td>중간(Medium)</td><td>중간 수준의 위험</td></tr><tr><td><code>악용 시 중간 정도의 위험</code></td><td>만료된 자격증명, 우발적 데이터 유출에 대한 보호 미비, 암호화 설정, 감사 도구의 모범 사례 설정</td><td>높음(High)</td><td>중간</td></tr><tr><td><code>악용 시 매우 심각한 피해</code></td><td>가시성의 큰 공백, 직접적으로 취약한 인프라, 데이터 노출과 직접 관련된 잘못된 구성</td><td>치명적(Critical)</td><td>쉬움(예: 쉬운 악용) 또는 용이함이라고 해석될 수 있음","t337":"악용 시 극심한 피해를 초래함","t338":"공개된 데이터/시스템 사용 가능, 유출된 접근 키"}}monary</td></tr></tbody></table>
