# 알러트 런북

## 개요

알러트를 유발하는 문제를 조사하고 해결하기 위한 지침 모음을 알러트 런북이라고 합니다. 설명적인 런북을 제공하는 것이 권장되며, [Panther AI 알러트 트리아지](/ko/alerts.md#panther-ai-alert-triage) 에서 이를 고려합니다. 효과적인 런북 작성 방법 알아보기 [아래](#tips-for-writing-an-effective-runbook).

런북은 디택션에 정의됩니다:

* Python 디택션에서는 동적 [`runbook()` 함수](/ko/detections/rules/python.md#runbook) 또는 정적 [`Runbook` 필드](/ko/detections/rules/python.md#python-rule-specification-reference).
* Simple Detections에서는 정적 [`Runbook` 필드](/ko/detections/rules/writing-simple-detections.md#simple-detection-rule-specification-reference).
* correlation 룰에서는 정적 [`Runbook` 필드](/ko/detections/correlation-rules/correlation-rule-reference.md#correlation-rule-top-level-fields).

{% hint style="info" %}
정적 **Runbook** 필드는 저장 시 적용되며 최대 10,000자까지 지원하는 반면, 동적 `runbook()` 함수는 모든 이벤트에 대해 런타임에 평가되며 1,000자로 제한됩니다. 더 엄격한 제한이 `runbook()` 에 존재하는 이유는 파이프라인 성능을 위한 안전장치이기 때문입니다.
{% endhint %}

Panther는 여러 [Panther 관리형 디택션](/ko/detections/panther-managed.md)에 대한 알러트 런북을 제공합니다—다음에서 확인하세요 [`panther-analysis` 리포지토리](https://github.com/panther-labs/panther-analysis).

### 런북 예시

```python
def runbook(event):
    user_arn = event.deep_get("userIdentity", "arn", default="이 사용자")
    source_ip = event.deep_get("sourceIPAddress", default="이 IP 주소")
    
    return f"""
    1. 알러트 발생 전 24시간 동안 {user_arn}의 모든 API 호출 찾기
    2. 소스 IP {source_ip}가 알려진 클라우드 제공업체 IP 범위 또는 VPN 엔드포인트와 연관되어 있는지 확인
    3. 지난 7일 동안 {user_arn} 또는 {source_ip}의 다른 알러트 찾기
    """
```

<details>

<summary>추가 런북 예시</summary>

{% hint style="info" %}
이 섹션의 런북 예시는 YAML `Runbook` 필드 값으로 작성되었지만 Python `runbook` 함수로 변환할 수 있습니다.
{% endhint %}

사용자 행동 분석 런북:

```yaml
Runbook: |
  1. 일반적인 행동을 파악하기 위해 알러트 발생 전 24시간 동안 사용자 ARN의 모든 API 호출 찾기
  2. 이 작업이 지난 90일 동안 이 사용자에 의해 수행된 적이 있는지 식별
  3. 지난 7일 동안 이 사용자의 다른 알러트 또는 의심스러운 활동 확인
```

리소스 액세스 패턴 런북:

```yaml
Runbook: |
  1. 알러트 전후 1시간 범위에서 이 S3 버킷에 대한 모든 액세스 시도 조회
  2. 지난 30일 활동을 기준으로 액세스 주체가 이 버킷에 대한 정당한 액세스 권한을 가지고 있는지 확인
  3. 액세스된 객체 키가 민감한 데이터 패턴과 일치하는지 확인
```

네트워크/IP 분석 런북:

```yaml
Runbook: |
  1. 알러트 전후 6시간 동안 소스 IP의 모든 API 호출 찾기
  2. 해당 IP가 알려진 클라우드 제공업체, VPN 또는 기업 네트워크 범위와 연관되어 있는지 확인
  3. 이 사용자의 로그인 위치에서 지리적 불일치가 있는지 확인
```

권한 상승 조사 런북:

```yaml
Runbook: |
  1. 알러트 발생 전 48시간 동안 이 사용자 또는 역할의 IAM 정책 변경 조회
  2. 정책 변경 후 24시간 동안 새로 부여된 권한을 사용한 모든 API 호출 찾기
  3. 사용자가 지난 90일 동안 유사한 권한 상승 작업을 수행한 적이 있는지 확인
```

데이터 유출 조사 런북:

```yaml
Runbook: |
  1. 알러트 전후 24시간 동안 이 사용자가 외부 대상으로 전송한 총 데이터 양 계산
  2. 데이터 전송량을 사용자의 30일 평균 기준선과 비교
  3. 대상 IP 또는 도메인이 클라우드 스토리지 또는 파일 공유 서비스와 연관되어 있는지 식별
```

인증 실패 분석 런북:

```yaml
Runbook: |
  1. 첫 실패 전 1시간 동안 이 사용자의 인증 실패 시도 횟수 계산
  2. 다른 IP에서 실패한 시도 이후 성공적인 인증이 발생했는지 확인
  3. 알러트 전후 24시간 동안 이 사용자의 비밀번호 재설정 또는 MFA 변경 사항 확인
```

</details>

## 효과적인 런북 작성을 위한 팁

Panther AI 또는 인간 분석가가 따를 수 있는 효과적인 런북을 작성하려면:

* 서로 이어지는 2\~3개의 집중된 조사 단계를 제공하세요.
  * 단계가 구체적이고, 명확하며, 실행 가능하도록 하세요. 예:
    * **좋음(구체적이고 실행 가능함)**: "수행된 작업을 식별하기 위해 이 알러트 전후 6시간 동안 {user\_arn}의 모든 API 호출을 AWS CloudTrail에서 조회합니다."
    * **나쁨(모호하고 명확한 결과가 없음)**: "관련 사용자 활동을 검색합니다."
  * 맥락을 수집하고 서사를 구성하는 데 도움을 주기 위해, 다음에 답할 수 있는 단계를 사용하는 것을 고려하세요:
    1. **무슨 일이 일어났나요?** (즉각적인 맥락)
    2. **이것이 정상인가요?** (기준선 비교)
    3. **또 무엇이 의심스럽나요?** (상관관계)
* 모호함을 피하기 위해 특정 알러트 필드를 이름으로 참조하세요.
  * 예를 들어, `sourceIPAddress` 를 "그 IP" 대신 사용하고 `userIdentity:arn` 를 "그 사용자" 대신 사용하세요.
* 데이터 검색을 위한 시간 범위를 명시하세요(예: "이전 24시간" 또는 "전후 30분"). 얼마나 많은 시간을 검색할지 결정할 때는 다음 지침을 사용하세요:
  * 최근의 의심스러운 활동 찾기: 전/후 1\~6시간
  * 행동 기준선 설정: 30\~90일의 기록
  * 상관관계 검색 실행: 24시간\~7일
  * 장기 패턴 검색: 90일

<details>

<summary>런북 템플릿</summary>

{% hint style="info" %}
섹션의 런북 템플릿은 YAML `Runbook` 필드 값으로 작성되었지만 다음으로 변환할 수 있습니다 [Python `runbook` 함수](/ko/detections/rules/python.md#runbook).
{% endhint %}

일반 런북 템플릿:

```yaml
Runbook: |
  1. [작업] [특정 필드] 기준 [시간 범위]
  2. [확인/비교/검증] [특정 조건]
  3. [검색/확인] [관련 활동] [시간 범위]
```

AWS CloudTrail 런북 템플릿:

```yaml
Runbook: |
  1. [시간 범위] 동안 [userIdentity:arn]의 모든 API 호출을 CloudTrail에서 조회
  2. [sourceIPAddress]가 알려진 [조건]과 일치하는지 확인
  3. [시간 범위] 동안 이 [사용자/리소스/작업]에 대한 다른 알러트 찾기
```

인증 런북 템플릿:

```yaml
Runbook: |
  1. [알러트 전 시간 범위] 동안 [사용자]의 [인증 이벤트] 수 계산
  2. [IP/위치/장치에 대한 조건] 확인
  3. [시간 범위] 동안 [성공한 인증/비밀번호 변경/계정 수정] 찾기
```

</details>

## Panther AI가 알러트 런북을 사용하는 방법

언제 [Panther AI가 알러트를 트리아지할 때](/ko/alerts.md#panther-ai-alert-triage), 알러트 런북을 읽고 자율적으로 실행합니다. 다음에 따라 런북을 작성하면 [위의 팁](#tips-for-writing-an-effective-runbook) Panther AI가 가능한 한 강력한 알러트 트리아지를 수행하는 데 도움이 될 수 있습니다.

[디택션의 데모 보기 `runbook` 여기에서 AI 알러트 트리아지에 영향을 주는](/ko/ai/examples.md#using-a-detection-runbook-to-direct-ai-alert-triage).

<details>

<summary>Panther AI의 런북 지시형 알러트 트리아지 기능</summary>

언제 [알러트를 트리아지하고](/ko/alerts.md#panther-ai-alert-triage) 디택션의 `runbook`를 실행할 때, Panther AI는 다음을 통해 여러 기능에 접근할 수 있습니다 [도구](/ko/ai.md#tools) (도구 이름을 지정할 필요는 없습니다—Panther AI가 어떤 것을 사용할지 결정하도록 둘 수 있습니다):

<table><thead><tr><th width="155.81253051757812">기능/도구</th><th>수행하는 작업</th><th>예시 런북 단계</th></tr></thead><tbody><tr><td>로그 검색</td><td>필터를 사용하여 모든 로그 유형의 이벤트 검색</td><td>"알러트 발생 전 24시간 동안 사용자 ARN의 모든 AWS CloudTrail 이벤트를 찾기"</td></tr><tr><td>구조화된 쿼리</td><td>SQL 유사 구문으로 데이터 레이크 테이블 조회</td><td>"지난 1시간 동안 이 버킷의 모든 GetObject 작업에 대해 S3 서버 액세스 로그를 조회하기"</td></tr><tr><td>디택션 세부 정보</td><td>디택션 룰 소스 코드 및 메타데이터 가져오기</td><td>"이 알러트를 트리거한 임계값이 무엇인지 이해하기 위해 디택션 룰 로직 검토하기"</td></tr><tr><td>관련 알러트</td><td>룰, 사용자, IP 또는 기타 필드로 알러트 찾기</td><td>"지난 30일 동안 동일한 사용자에 대해 이 룰의 다른 모든 알러트 찾기"</td></tr><tr><td>알러트 세부 정보</td><td>완전한 알러트 컨텍스트 및 이벤트 가져오기</td><td>"모든 이벤트와 컨텍스트 필드를 포함한 전체 알러트 세부 정보 가져오기"</td></tr><tr><td>과거 AI 분석</td><td>과거 AI 트리아지 응답 검색</td><td>"유사한 권한 상승 패턴이 이전에 분석된 적이 있는지 확인하기"</td></tr><tr><td>스키마 정보</td><td>로그 유형 필드 정의 가져오기</td><td>"상관관계에 사용할 수 있는 필드를 이해하기 위해 Okta SystemLog 스키마 검토하기"</td></tr><tr><td>인디케이터 강화</td><td>IP, 도메인, 해시 평판 확인</td><td>"소스 IP가 알려진 위협 행위자 또는 프록시 서비스와 연관되어 있는지 확인하기"</td></tr><tr><td>데이터 프로파일링</td><td>열 값 분포 분석</td><td>"지난 7일 동안 이 사용자에게 가장 일반적인 이벤트 이름 요약하기"</td></tr></tbody></table>

</details>


---

# Agent Instructions: 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:

```
GET https://docs.panther.com/ko/alerts/alert-runbooks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
