# 저장된 검색 및 예약 검색

## 개요

Panther의 [Data Explorer](/ko/search/data-explorer.md) 및 [Search](/ko/search/search-tool.md) 에서 동일한 검색을 반복해서 생성하는 일을 검색을 저장함으로써 피할 수 있습니다. 또한 Data Explorer에서 생성한 검색을 예약할 수 있으며, 이를 통해 결과를 룰에 대해 실행할 수 있습니다. 이 워크플로에는 다음 기능이 포함됩니다:

* [저장된 검색 만들기](#how-to-create-a-saved-search), 보존된 검색 표현식입니다.
* [예약된 검색 만들기](#how-to-create-a-scheduled-search), 지정된 간격으로 실행되도록 예약할 수 있는 저장된 검색입니다.
* [예약된 룰 만들기](/ko/detections/rules.md#how-to-write-scheduled-rules), 예약된 검색과 연결된 디택션입니다. 검색이 실행될 때마다 반환되는 데이터는 해당 디택션에 대해 실행되며, 일치 항목이 발견되면 알러트를 생성합니다.

기본적으로 각 Panther 계정은 활성 상태의 예약된 검색 10개로 제한됩니다. 이 제한은 예방 조치일 뿐이며, 지원 요청을 통해 늘릴 수 있습니다. Panther에서 이 제한을 높이는 데 추가 비용은 없지만, 처리되는 데이터 양에 따라 데이터베이스 백엔드에서 추가 비용이 발생할 수 있습니다.

{% hint style="info" %}
다음에서 [CLI 워크플로](https://github.com/panther-labs/panther-docs/blob/main/docs/gitbook/search/scheduled-searches/broken-reference/README.md), 저장된 검색과 예약된 검색은 흔히 쿼리라고도 합니다.
{% endhint %}

## 저장된 검색을 만드는 방법

저장된 검색은 보존된 검색 표현식입니다. 팀이 자주 실행하는 검색을 저장하면 중복 작업을 줄이는 데 도움이 됩니다. 저장된 검색은 Panther Console(검색 또는 Data Explorer에서), CLI 워크플로(PAT), 또는 Panther API를 사용해 만들 수 있습니다.

저장된 검색에 변수를 추가하여 템플릿형 쿼리를 만들 수도 있습니다. 자세한 내용은 다음을 참조하세요. [Templated Queries and Macros](/ko/search/scheduled-searches/templated-searches.md).

{% tabs %}
{% tab title="Console" %}
**Panther Console에서 저장된 검색을 만드는 방법**

Panther의 Data Explorer 또는 Search에서 검색을 저장할 수 있습니다. 두 도구에서 저장된 검색은 모두 저장된 검색으로 간주됩니다. 다음을 따르세요. [Data Explorer에서 검색을 저장하는 방법에 대한 이 지침](/ko/search/data-explorer.md#create-a-saved-or-scheduled-search-in-data-explorer), 그리고 [Search에서 검색을 저장하는 방법에 대한 이 지침](/ko/search/search-tool.md#creating-a-saved-search).
{% endtab %}

{% tab title="CLI (PAT)" %}
**CLI 워크플로에서 저장된 검색을 만드는 방법**

로컬에서 저장된 검색을 작성한다는 것은 자신의 머신에서 SQL 쿼리를 정의하는 파일을 만든 다음, 이를 Panther 인스턴스에 업로드하는 것을 의미합니다(일반적으로 [Panther Analysis Tool](/ko/resources/help/glossary.md#panther-analysis-tool-pat)).

로컬 디택션 파일은 GitHub 또는 GitLab과 같은 버전 관리 시스템에서 관리하는 것을 권장합니다.

{% hint style="info" %}
Panther의 [오픈 소스 분석 저장소](https://github.com/panther-labs/panther-analysis)를 포크해서 만드는 것이 모범 사례이지만, 처음부터 자체 리포지토리를 만들어도 됩니다.
{% endhint %}

**파일 설정**

각 저장된 검색은 다음으로 구성됩니다:

* YAML 파일(`.yml` 또는 `.json` 확장자)로, 다음을 포함합니다. [저장된 검색의 메타데이터 속성](#saved-search-specification-reference).

**폴더 설정**

쿼리를 폴더로 그룹화하는 경우, 업로드 중(PAT 또는 Console의 대량 업로더 사용 시) 찾을 수 있도록 각 폴더 이름에는 `queries` 가 포함되어야 합니다.

검색은 로그/리소스 유형을 기준으로 폴더에 그룹화하는 것을 권장합니다. 오픈 소스 [Panther Analysis](https://github.com/panther-labs/panther-analysis) 리포지토리를 참고 자료로 사용할 수 있습니다.

**저장된 검색 작성**

저장된 검색 파일(예: `new-saved-search.yml`)에 아래 템플릿을 따라 저장된 검색을 작성하세요.

사용 가능한 전체 필드 목록은 다음에서 확인하세요. [Saved Search specification reference](#saved-search-specification-reference).

```yaml
AnalysisType: saved_query
QueryName: MySavedQuery
Description: PAT용 저장된 쿼리 예시
Query: |-
    여기에 쿼리를 입력하세요
Tags:
  - 태그
```

**PAT로 콘텐츠 업로드**

* 다음 PAT 업로드 명령을 사용하세요:\
  `panther_analysis_tool upload --path <path-to-your-search> --api-token <your-api-token> --api-host https://api.<your-panther-instance-name>.runpanther.net/public/graphql`
  * 값 바꾸기:
    * `<api-token>` : 생성한 [API 키](https://docs.panther.com/panther-developer-workflows/api#step-1-creating-an-api-token) 입니다.
    * `<your-panther-instance-name>` : 인스턴스의 동화 같은 이름(예: **carrot-tuna**.runpanther.net)입니다.
    * `<path-to-your-query>` : 자신의 머신에 있는 저장된 검색 경로입니다.

저장된 검색이 업로드되면 Panther Console에서 일반적으로 입력하는 각 필드가 자동으로 채워집니다. 필수 및 선택 필드의 전체 목록은 다음을 참조하세요. [Saved Search Specification Reference](#saved-search-specification-reference) 를 참조하세요.
{% endtab %}

{% tab title="API" %}
**Panther API에서 저장된 검색을 만드는 방법**

* 다음을 참조하세요. `POST` 작업, 위치: [Queries](/ko/panther/api/rest/queries.md).
  {% endtab %}
  {% endtabs %}

## 예약된 검색을 만드는 방법

예약된 검색은 일정에 따라 실행되도록 구성된 저장된 검색입니다. Panther Console을 사용할 경우 현재는 Data Explorer에서 생성된 저장된 검색만 예약할 수 있습니다. Search에서 생성된 저장된 검색(SQL 및 [PantherFlow](/ko/pantherflow.md)) *에서 생성된 것 포함)은* 예약할 수 없습니다. 대신 CLI 워크플로 또는 Panther API를 사용하여 예약된 검색을 생성하고 업로드할 수 있습니다.

{% hint style="info" %}
예약된 검색에서는 `p_occurs_since` 를 사용하는 것을 강력히 권장합니다—[아래에서 자세히 알아보세요](#using-p_occurs_since-to-define-a-lookback-window).
{% endhint %}

예약된 검색만 생성한다고 해서 반환된 데이터가 디택션에 대해 실행되거나 [signals](/ko/detections/signals.md)이 생성되지는 않습니다. 이를 수행하려면 반드시 [예약된 룰 만들기](/ko/detections/rules.md#how-to-write-rules-and-scheduled-rules), 그리고 이를 예약된 검색과 연결해야 합니다.

{% hint style="warning" %}
[고객 구성 Snowflake](/ko/system-configuration/panther-deployment-types/legacy-configurations/snowflake-setup.md#customer-configured-snowflake) 계정: 예약된 검색이 실행될 때마다 귀사 데이터베이스 백엔드에 비용이 발생합니다. 검색이 지정된 시간 초과 기간 내에 완료될 수 있도록 확인해 주세요. 이는 Panther 관리형 Snowflake를 사용하는 계정에는 적용되지 않습니다.
{% endhint %}

{% tabs %}
{% tab title="Data Explorer" %}
**Data Explorer에서 예약된 검색을 만드는 방법**

Data Explorer에서 생성한 저장된 검색을 예약하는 방법을 알아보려면 아래 지침 중 하나를 따르세요:

* 아직 Data Explorer에서 저장된 검색을 만들지 않았다면, [Data Explorer에서 저장된 검색 또는 예약된 검색 만들기](/ko/search/data-explorer.md#create-a-saved-or-scheduled-search-in-data-explorer) 지침을 따르되, **예약된 검색 만들기** 의 4단계에 주의하세요.
* 이미 Data Explorer에서 검색을 저장했다면, [Data Explorer에서 저장된 검색 또는 예약된 검색 업데이트](/ko/search/data-explorer.md#update-a-saved-or-scheduled-search-in-data-explorer) 지침을 따르되 6단계에 주의하세요.
  {% endtab %}

{% tab title="CLI (PAT)" %}
**CLI 워크플로에서 예약된 검색을 만드는 방법**

로컬에서 예약된 검색을 작성한다는 것은 자신의 머신에서 SQL 쿼리를 정의하는 파일을 만든 다음, 이를 Panther 인스턴스에 업로드하는 것을 의미합니다(일반적으로 [Panther Analysis Tool](/ko/resources/help/glossary.md#panther-analysis-tool-pat)).

로컬 디택션 파일은 GitHub 또는 GitLab과 같은 버전 관리 시스템에서 관리하는 것을 권장합니다.

{% hint style="info" %}
Panther의 [오픈 소스 분석 저장소](https://github.com/panther-labs/panther-analysis)를 포크해서 만드는 것이 모범 사례이지만, 처음부터 자체 리포지토리를 만들어도 됩니다.
{% endhint %}

**파일 설정**

각 예약된 쿼리는 다음으로 구성됩니다:

* YAML 파일(`.yml` 또는 `.json` 확장자)로, 다음을 포함합니다. [예약된 검색의 메타데이터 속성](#scheduled-search-specification-reference).

다음 보기 [예약된 검색 YAML 파일 예시 여기](https://github.com/panther-labs/panther-analysis/blob/master/templates/example_scheduled_query.yml).

**폴더 설정**

검색을 폴더로 그룹화하는 경우, 각 폴더 이름에는 `queries` 가 포함되어야 합니다.

검색은 로그/리소스 유형을 기준으로 폴더에 그룹화하는 것을 권장합니다. 오픈 소스 [Panther Analysis](https://github.com/panther-labs/panther-analysis) 리포지토리를 참고 자료로 사용할 수 있습니다.

**예약된 쿼리 작성**

예약된 검색 파일(예: `new-scheduled-search.yml`)에 아래 템플릿을 따라 예약된 검색을 작성하세요.

사용 가능한 전체 필드 목록은 다음에서 확인하세요. [Scheduled Search specification reference](#scheduled-search-specification-reference).

```yaml
AnalysisType: scheduled_query
QueryName: ScheduledQuery_Example
Description: PAT용 예약된 쿼리 예시
Enabled: true
Query: |-
    Select 1
Tags:
  - 태그   
Schedule:
  CronExpression: "0 0 29 2 *"
  RateMinutes: 0
  TimeoutMinutes: 2
```

**PAT로 콘텐츠 업로드**

* 다음 PAT 업로드 명령을 사용하세요:\
  `panther_analysis_tool upload --path <path-to-your-search> --api-token <your-api-token> --api-host https://api.<your-panther-instance-name>.runpanther.net/public/graphql`
  * 값 바꾸기:
    * `<api-token>` : 생성한 [API 키](https://docs.panther.com/panther-developer-workflows/api#step-1-creating-an-api-token) 입니다.
    * `<your-panther-instance-name>` : 인스턴스의 동화 같은 이름(예: **carrot-tuna**.runpanther.net)입니다.
    * `<path-to-your-query>` : 자신의 머신에 있는 저장된 쿼리 경로입니다.

예약된 검색이 업로드되면 Panther Console에서 일반적으로 입력하는 각 필드가 자동으로 채워집니다. 다음을 참조하세요. [Scheduled Search Specification Reference](#scheduled-search-specification-reference) 를 참조하세요.
{% endtab %}

{% tab title="API" %}
**Panther API에서 예약된 검색을 만드는 방법**

* 다음을 참조하세요. `POST` 작업, 위치: [Queries](/ko/panther/api/rest/queries.md).
  {% endtab %}
  {% endtabs %}

### 사용 `p_occurs_since` 룩백 윈도우를 정의하기 위해

예약된 검색에서 룩백 윈도우를 정의하려면 Panther SQL 매크로를 사용하는 것을 강력히 권장합니다. [`p_occurs_since`](/ko/search/data-explorer.md#time-offset-from-present-p_occurs_since).

예약된 검색이 실행되면 `p_occurs_since` 의 "현재(now)" 시간은 실제 현재 시간이 아니라 예약된 시간으로 대체됩니다. 이렇게 하면 룩백 윈도우가 정확해집니다. 실행할 때마다 Search는 일정에 따라 시간을 앞으로 진행합니다.\
\
&#x20;`p_occurs_since` 를 사용하면 Snowflake 또는 클라우드 제공업체 장애로 인한 중단을 방지할 수 있습니다. 장애로 인해 예약된 검색을 실행할 수 없는 경우 예약된 시간은 앞으로 진행되지 않습니다. 장애가 복구되어 쿼리를 다시 실행할 수 있게 되면, 예약된 검색은 현재 일정에 따라잡아 더 이상 뒤처지지 않을 때까지 시간을 앞으로 진행합니다.

### 예약된 검색 crontab을 사용하는 방법

Panther의 예약된 검색 crontab은 분, 시, 일, 월, 요일의 다섯 필드로 구성된 표준 crontab 표기법을 사용합니다. 또한 검색 시간 초과 선택기(현재 최대값 10분)를 찾을 수 있습니다. 표현식은 UTC 기준으로 실행됩니다.

인터프리터는 표준 crontab 표기법의 하위 집합을 사용합니다:

```
┌───────── 분 (0 - 59)
│ ┌──────── 시 (0 - 23)
│ │ ┌────── 일 (1 - 31)
│ │ │ ┌──── 월 (1 - 12)
│ │ │ │ ┌── 요일 (0 - 6 => 일요일 - 토요일)
│ │ │ │ │               
↓ ↓ ↓ ↓ ↓
* * * * *
```

일별로 지정하려면 대시(`1-5` 는 월요일부터 금요일까지) 또는 쉼표로 요일을 구분할 수 있습니다. 예를 들어 `0,1,4` 에서 `요일` 필드에 있으면 명령은 일요일, 월요일, 목요일에만 실행됩니다. 현재는 이름이 지정된 요일이나 월 이름 사용을 지원하지 않습니다.

crontab을 사용하면 주기 빈도 옵션보다 일정에서 더 구체적으로 지정할 수 있습니다:

<figure><img src="/files/cb43971cc49ec85a8be50267571f03e72a5041a7" alt="The Cron expression screen displays options for selecting a time range for the scheduled query to run."><figcaption></figcaption></figure>

### 예약된 검색이 이메일 보고서를 생성하도록 구성하는 방법

예약된 검색이 실행될 때마다 이메일 보고서를 보내도록 구성할 수 있습니다. 이메일 보고서에는 결과 다운로드 링크(결과가 0개보다 많을 경우), Data Explorer의 검색 링크, 그리고 선택적으로 검색 결과가 포함된 CSV 첨부 파일이 포함됩니다. 예약된 검색이 어떤 예약된 룰과 연결되어 있다면, 해당 예약된 룰은 평소처럼 반환된 데이터를 처리합니다.

{% hint style="info" %}
이메일 보고서는 다음에서 발송됩니다. `do-not-reply@panther-notifications.email`. 이메일이 스팸으로 분류되지 않도록 이 주소를 개인 또는 조직 허용 목록에 추가하는 것을 권장합니다.
{% endhint %}

<figure><img src="/files/9628808da6b0bef43e91bdf9ed8106df5be3d706" alt="Under the Panther logo, a title reads, &#x22;1 events found by your scheduled search.&#x22; Below that is a &#x22;Download search results as CSV&#x22; button." width="563"><figcaption></figcaption></figure>

이메일 보고서에는 다음 매개변수가 적용됩니다:

* 각 이메일 보고서는 최대 10명의 수신자에게 보낼 수 있습니다.
* CSV 첨부 파일의 최대 크기는 10MB입니다. 쿼리 결과가 커서 CSV가 이 크기를 초과하면 CSV는 이메일에 첨부되지 않습니다.
* Panther 인스턴스의 모든 예약된 검색을 통틀어 하루에 최대 20개의 이메일 보고서를 보낼 수 있습니다.
  * 하루에 전송되는 이메일 보고서 수는 예약된 검색이 얼마나 자주 실행되는지에 따라 달라집니다.
  * 예를 들어 하루에 이메일 보고서 15개를 보내는 예약된 검색이 하나 있고, 하루에 이메일 보고서 5개를 보내는 다른 검색이 하나 있다면, 기존 구성의 빈도를 줄이지 않는 한 추가 예약된 검색이 이메일 보고서를 생성하도록 구성할 수 없습니다.

이메일 보고용으로 구성할 수 있는 것은 예약된 검색뿐입니다—왜냐하면 [Search](/ko/search/search-tool.md) 에서 수행된 검색은 [PantherFlow](/ko/pantherflow.md) 또는 [필터 표현식](/ko/search/search-tool.md#creating-filter-expressions) 과 함께 [저장할 수는 있지만 예약할 수는 없기](/ko/search/search-tool.md#creating-a-saved-search)때문에 이메일 보고서를 생성하도록 구성할 수 없습니다.

{% tabs %}
{% tab title="Console" %}
**Panther Console에서 예약된 검색이 이메일 보고서를 생성하도록 구성하는 방법**

1. 다음을 따르세요. [Data Explorer에서 저장된 검색 또는 예약된 검색 만들기](/ko/search/data-explorer.md#create-a-saved-or-scheduled-search-in-data-explorer) 지침을 따르면서, **예약된 검색 결과 이메일 전송** 토글이 **ON**.
   * 으로 설정되어 있는지 확인하세요. 기존 예약된 검색을 구성하려면, 해당 검색의 **검색 업데이트** 모달에 액세스하세요. 방법은 [저장된 검색의 메타데이터 업데이트](#update-a-saved-searchs-metadata) 지침을 따르고, **예약된 검색 결과 이메일 전송** 토글을 **ON**.

     <figure><img src="/files/16dbdc6a8b8903762e670a2a0a3c4ff8ef51be4e" alt="In a &#x22;Save Search&#x22; modal, various fields, such as &#x22;Tags&#x22; and &#x22;Description&#x22; are visible.  An &#x22;Email scheduled search results&#x22; toggle is circled." width="375"><figcaption></figcaption></figure>
2. 이메일 보고서 설정 구성:

   * **수신자**: 최대 10명의 수신자를 선택하거나 입력하세요. 드롭다운 목록의 값은 Panther Console의 사용자들이지만, 추가 이메일 주소를 직접 입력할 수도 있습니다.
   * **이메일에 CSV 데이터 첨부**: 쿼리 결과가 포함된 CSV 첨부 파일(최대 10MB)이 이메일 보고서에 포함되도록 하려면 **ON** 를 토글하세요.
   * **검색이 0개 결과를 반환하더라도 이메일 보내기**: 쿼리 결과가 포함된 CSV 첨부 파일(최대 10MB)이 이메일 보고서에 포함되도록 하려면 **ON** 예약된 검색이 0개의 결과를 생성하더라도 이메일 보고서가 전송되도록 하려면

   <figure><img src="/files/b5b153245472fe55ed6af081f482dd1e706b42d3" alt="Three toggles are shown: Email scheduled search results, Attach CSV data to the email, and Send an email even if search returns 0 results."><figcaption></figcaption></figure>

{% endtab %}

{% tab title="CLI (PAT)" %}
**CLI 워크플로에서 예약된 검색이 이메일 보고서를 생성하도록 구성하는 방법**

YAML 파일의 루트 수준에 `EmailConfig` 객체를 추가하고, 함께 `수신자`, `SendEmpty`, 그리고 `PreferAttachment` 중첩 필드를 추가하여 예약된 검색을 이메일 보고용으로 구성할 수 있습니다. 이러한 필드에 대한 자세한 내용은 아래의 [Scheduled Search specification reference](#scheduled-search-specification-reference).

```yaml
AnalysisType: scheduled_query
QueryName: ScheduledQuery_Example
Description: PAT용 이메일 보고서 예시
Enabled: true
Schedule:
  RateMinutes: 900
  TimeoutMinutes: 2
EmailConfig:
  Recipients:
    - myemail@example.com
    - otheruser@otherexample.com
  SendEmpty: true
  PreferAttachment: true
```

{% endtab %}

{% tab title="API" %}
**Panther API에서 예약된 검색이 이메일 보고서를 생성하도록 구성하는 방법**

* 다음을 참조하세요. `POST` 작업, 위치: [Queries](/ko/panther/api/rest/queries.md).
  {% endtab %}
  {% endtabs %}

## 저장된 검색과 예약된 검색 사용하기

### 저장된 검색을 삭제하거나 다운로드하는 방법

저장된 검색은 개별적으로 또는 일괄 삭제할 수 있습니다. 저장된 검색이 예약되어 있는 경우(즉, 예약된 검색인 경우), 삭제하려면 연결된 모든 예약된 룰과의 연결을 해제해야 합니다.

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요. **Investigate** > **Saved Searches**.
2. 저장된 검색 목록에서 다운로드하거나 삭제하려는 검색을 찾으세요. 각 검색 이름 왼쪽의 상자를 체크하세요.
3. 페이지 상단에서 다음 중 하나를 클릭하세요. **Download** 또는 **Delete**.\
   ![The top of the Saved Queries page is shown, with two buttons: "Download" and "Delete"](/files/ab06aa48d33df01c07352a5d066d669d00b43dbf)
   * 다음을 클릭한 경우 **Download**,  `saved_queries.zip` 파일이 다운로드됩니다.
   * 다음을 클릭한 경우 **Delete**,  **Attention!** 모달이 팝업됩니다. 다음을 클릭하세요. **Confirm**.\
     ![A modal titled "Attention!" is shown, with the text, "Are you sure you want to delete these (2) selected Saved Queries" and there are "Cancel" and "Confirm" buttons](/files/57a560b328e6af2a6142b8ab74ab009f28f762cd)

### 예약된 검색을 비활성화하는 방법

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요. **Investigate** > **Saved Searches**.
2. 비활성화하려는 예약된 검색을 찾고, 해당 타일의 오른쪽 상단 모서리에서 점 세 개 아이콘을 클릭하세요.\
   ![The image shows a query from the list of queries in the Panther Console. In the right side, there is a red arrow pointing to the 3 dots icon.](/files/141d9631d7f466331e159cb7ca55606e9539e97e)
3. 드롭다운 메뉴에서 다음을 클릭하세요. **Edit Search Metadata**.
4. 다음에서 **검색 업데이트** 양식에서 설정 **활성 상태인가요?** 를 **OFF** 로 전환하여 쿼리를 비활성화합니다.\
   ![The "Update Search" form is displayed. It contains fields for Search Name, Tags, Description, and Default Database. The toggle next to "Is it active?" is set to "Off."](/files/bf685cecccf5395723b189b498eec918fa279783)
5. 다음을 클릭하세요. **Update Query** 를 클릭하여 변경 사항을 저장하세요.

### 저장된 검색의 메타데이터 업데이트

저장된 검색의 이름, 태그, 설명, 기본 데이터베이스(그리고 예약된 검색의 경우 활성 여부, 빈도 및 [이메일 보고서 설정](#how-to-configure-a-scheduled-search-to-generate-an-email-report)):

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요. **Investigate** > **Saved Searches**.
2. 를 편집하려면 편집하려는 쿼리를 찾아 해당 타일 오른쪽 상단의 점 세 개 아이콘을 클릭하세요.\
   ![The 3 dots icon is expanded to a dropdown menu. The option "Edit Search Metadata" is highlighted.](/files/f3bc97086c7e5cc624ab9d3c58787d2a517148f9)
3. 드롭다운 메뉴에서 다음을 클릭하세요. **Edit Search Metadata**.
4. 다음에서 변경하세요. **검색 업데이트** 양식을 필요에 따라 수정하세요.
5. 다음을 클릭하세요. **검색 업데이트**.

### 저장된 검색 검색

저장된 검색 페이지에서 다음을 사용하여 쿼리를 검색할 수 있습니다:

* 쿼리 목록 상단의 검색 창
* 오른쪽 상단의 날짜 범위 선택기
* 오른쪽 상단의 **필터** 옵션
  * 쿼리가 예약되었는지 여부, 활성 상태인지 여부, 유형(**Native SQL**, **Search**, 또는 **PantherFlow Search**) 또는 최대 100개의 태그로 필터링할 수 있습니다.

<figure><img src="/files/3008957bce82fd2ecc512ea62002d801ae41e3b7" alt="in the Saved Searches list, use the date range or filters in the upper right corner to search for queries. In the image, the date range selector is circled and the Filters button is circled."><figcaption></figcaption></figure>

저장된 검색 이름을 클릭하면 해당 쿼리가 채워진 상태로 Data Explorer( **Native SQL** queries의 경우) 또는 Search( **Search** 및 **PantherFlow Search** searches의 경우)로 바로 이동합니다.

### 사용 `LIMIT`를 예약된 검색에서

Panther Data Lake 설정 페이지에서 예약된 검색에 `LIMIT` 절이 지정되어 있는지 확인하는 설정을 선택적으로 활성화할 수 있습니다. 예약된 검색이 의도치 않게 수천 개의 결과를 반환하여 알러트 지연, 다운스트림 시스템에 대한 서비스 거부(DoS), 그리고 잘못 조정된 쿼리로 인한 전반적인 정리 오버헤드를 초래할 가능성이 우려된다면 이 옵션을 사용하세요.

{% hint style="info" %}
시간 초과가 발생하는 예약된 검색은 [`System Error`](/ko/system-configuration/notifications/system-errors.md) 를 생성하여 예약된 검색이 성공하지 못했음을 식별합니다.
{% endhint %}

1. Panther Console 오른쪽 상단에서 톱니바퀴 아이콘을 클릭하세요. 나타나는 드롭다운 메뉴에서 다음을 클릭하세요. **General**.\
   ![The gear icon's dropdown menu is expanded, showing options for General, Users, User Roles, API Tokens, and API Playground.](/files/2d40b13ef2567a4de14f8098396603aa15f02e18)
2. 다음을 클릭하세요. **Data Lake** 탭.
3. 아래로 스크롤하여 **Scheduled Queries** 헤더로 이동하세요. 헤더 아래에서 LIMIT 절 토글 설정을 볼 수 있습니다:\
   ![At the top, a tab labeled Data Lake is selected. Near the bottom of the screen, there is a header called "Scheduled Queries." The option "LIMIT Clause for Scheduled Queries" is set to "Off."](/files/dcad915fda2eb8e08e37a626269d2140b941536b)
4. 다음을 토글하세요. **`LIMIT` 예약된 쿼리에 대한 절** 설정을 **ON** 로 설정하여 예약된 쿼리에서 LIMIT 적용을 시작하세요.\
   ![The toggle next to "LIMIT Clause for Scheduled Queries" is set to "On."](/files/01e59da0cd8a087688d695a5a2502941fc5781d2)

이 필드가 **ON**로 설정되면, 활성으로 표시된 새 예약된 검색은 쿼리 정의에 LIMIT 절이 지정되어 있지 않으면 저장할 수 없습니다.

![이미지에는 쿼리 생성 화면이 표시됩니다. 상단에는 "저장된 쿼리를 생성할 수 없습니다. 이 예약된 쿼리에는 SQL 표현식에 LIMIT 절이 포함되어 있지 않습니다. 이 예약된 쿼리를 저장하려면 SQL 표현식을 업데이트하여 LIMIT 절을 추가하세요."라고 적힌 빨간 배너가 있습니다.](/files/b9ea53d5026030d8d00fc038323d76c8222e0514)

LIMIT 절이 없는 기존 예약된 검색은 저장된 검색 목록에 경고 메시지와 함께 표시되며, LIMIT 절이 포함되지 않으면 편집 내용을 저장할 수 없습니다.

<figure><img src="/files/eab3de1e8cc3e550f62e3fa317541b46b8afd716" alt="A Scheduled Query without a LIMIT clause shows a warning banner that says &#x22;This Scheduled Query does not contain a LIMIT clause in the SQL expression.&#x22;"><figcaption></figcaption></figure>

이 설정은 저장된 검색 어디에든 LIMIT 절이 존재하는지만 확인합니다. 외부 LIMIT 절인지 여부를 구체적으로 확인하지는 않습니다.

### Panther Console에서 예약된 검색 내보내기

Panther Console에 있는 모든 디택션과 예약된 검색의 .zip 파일을 내보낼 수 있습니다:

1. Panther Console의 왼쪽 탐색 모음에서 다음을 클릭하세요. **Detections**.
2. 오른쪽 상단에서 다음을 클릭하세요. **Upload**.
3. 다음에서 **Bulk Uploader** 모달에서 다음을 클릭하세요. **Download all entities**.

## Saved Search specification reference

필수 필드는 **굵게**.

저장된 검색 사양 필드 전체 목록:

<table><thead><tr><th width="198.02310231023102">필드 이름</th><th width="395">설명</th><th width="291.976897689769">예상 값</th></tr></thead><tbody><tr><td><strong><code>AnalysisType</code></strong></td><td>이 분석이 룰, 정책, 예약된 검색, 저장된 검색 또는 전역인지 나타냅니다.</td><td><code>saved_query</code></td></tr><tr><td><strong><code>QueryName</code></strong></td><td>UI에 표시할 친숙한 이름입니다.</td><td>문자열</td></tr><tr><td><code>Tags</code></td><td>이 룰을 분류하는 데 사용되는 태그입니다.</td><td>문자열 목록</td></tr><tr><td><code>설명</code></td><td>룰에 대한 간단한 설명입니다.</td><td>문자열</td></tr><tr><td><strong><code>Query</code></strong></td><td>데이터 쿼리입니다.<br>SQL로 작성되어야 합니다(즉, <a href="/pages/804bd314c736e01a42c0fb6823aae3bee39f8e38">PantherFlow</a>).</td><td>문자열</td></tr></tbody></table>

## Scheduled Search specification reference

필수 필드는 **굵게**.

예약된 검색 사양 필드 전체 목록:

<table><thead><tr><th width="265.023102310231">필드 이름</th><th width="409">설명</th><th width="291.976897689769">예상 값</th></tr></thead><tbody><tr><td><strong><code>AnalysisType</code></strong></td><td>이 분석이 룰, 정책, 예약된 검색, 저장된 검색 또는 전역인지 나타냅니다.</td><td><code>scheduled_query</code></td></tr><tr><td><strong><code>QueryName</code></strong></td><td>UI에 표시할 친숙한 이름입니다.</td><td>문자열</td></tr><tr><td><strong><code>Enabled</code></strong></td><td>이 룰이 활성화되어 있는지 여부입니다.</td><td>부울</td></tr><tr><td><code>Tags</code></td><td>이 룰을 분류하는 데 사용되는 태그입니다.</td><td>문자열 목록</td></tr><tr><td><code>설명</code></td><td>룰에 대한 간단한 설명입니다.</td><td>문자열</td></tr><tr><td><strong><code>Query</code></strong></td><td>데이터 쿼리입니다.</td><td>문자열</td></tr><tr><td><strong><code>Schedule</code></strong></td><td><p>이 쿼리가 실행되어야 하는 일정입니다. CronExpression 또는 Rate Minutes로 표현됩니다. TimeoutMinutes는 예상보다 오래 걸릴 경우 쿼리를 해제하기 위해 필요합니다. cron과 rate minutes는 서로 동시에 사용할 수 없습니다.</p><pre><code>CronExpression: "0 0 29 2 *"
  RateMinutes: 0
  TimeoutMinutes: 2
</code></pre></td><td>맵</td></tr><tr><td><code>EmailConfig</code></td><td><p>제공되는 경우, <a href="#how-to-configure-a-scheduled-search-to-generate-an-email-report">이메일 보고서 생성</a> 을 예약된 검색에 대해 수행합니다. 세 개의 중첩 필드를 지원합니다:</p><ul><li>(필수) <code>수신자</code>: 각 항목에 이메일 보고서를 보낼 이메일 주소가 포함된 문자열 배열입니다. 최대 수신자 수는 10명입니다.</li><li>(선택 사항) <code>PreferAttachment</code>: 기본값이 <code>false</code>인 부울 필드입니다.  <code>true</code>로 설정하면 이메일 보고서에 예약된 검색 결과의 CSV 첨부 파일이 포함됩니다(결과가 10MB 첨부 파일 크기 제한 내에 들어가는 경우).</li><li>(선택 사항) <code>SendEmpty</code>: 기본값이 <code>false</code>인 부울 필드입니다.  <code>true</code>, 예약된 검색이 0개의 결과를 생성하더라도 이메일 보고서가 전송됩니다.</li></ul><pre class="language-yaml"><code class="lang-yaml">EmailConfig:
  Recipients:
    - myemail1@example.com
    - myemail2@example.com
  PreferAttachment: true
  SendEmpty: false
</code></pre></td><td>맵</td></tr></tbody></table>


---

# 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/search/scheduled-searches.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.
