Panther Analysis Tool 명령

PAT를 사용하여 Panther 콘텐츠 관리하기

개요

Panther Analysis Tool(PAT)을 사용하여 Panther 디택션 콘텐츠를 관리할 수 있습니다. PAT를 사용하면 업로드, 테스트, 그리고 삭제 자산 등을 수행할 수 있습니다.

PAT 명령 각각은 특정 옵션을허용합니다. 예를 들어, --filter 를 여러 명령과 함께 사용하여 작업 범위를 좁힐 수 있습니다.

PAT 명령

다음 코드 블록에서 사용 가능한 PAT 명령의 전체 목록을 확인하세요. 그 아래에서 여러 명령에 대한 추가 정보를 찾을 수 있습니다.

PAT 명령은 다음을 사용하여 실행할 수 있습니다 panther_analysis_tool 또는 pat. 이 별칭에 대해 자세히 알아보려면 여기를 참조하세요.

각 PAT 명령을 실행하는 데 필요한 Panther 권한을 이해하려면 다음을 참조하세요 명령별로 필요한 권한.

$ pat --help
                                                                                                                                       
사용법: pat [OPTIONS] COMMAND [ARGS]...                                                                                                
                                                                                                                                       
Panther Analysis Tool: Panther 정책 및 룰을 관리하기 위한 명령줄 도구입니다.                                                   
                                                                                                                                       
                                                                                                                                       
╭─ 옵션 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --version                     버전을 표시하고 종료                                                                             │
│ --debug                       디버그 모드 활성화                                                                                     │
│ --skip-version-check          Panther 버전 확인 건너뛰기                                                                            │
│ --install-completion          현재 셸에 completion을 설치합니다.                                                             │
│ --show-completion             현재 셸의 completion을 표시하여 복사하거나 설치를 사용자 지정할 수 있습니다.                      │
│ --help                        이 메시지를 표시하고 종료합니다.                                                                           │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ 명령 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ release                 panther 디택션이 포함된 저장소용 릴리스 자산을 생성합니다. 다음 이름의 파일을 생성합니다                 │
│                         panther-analysis-all.zip 및 선택적으로 panther-analysis-all.sig를 생성합니다                                  │
│ test                    분석 사양을 검증하고 정책 및 룰 테스트를 실행합니다.                                             │
│ debug                   디버그 환경에서 단일 룰 테스트를 실행합니다. 이를 통해 print 문을 확인하고             │
│                         중단점을 사용할 수 있습니다.                                                                                                │
│ publish                 새 릴리스를 게시하고, 릴리스 자산을 생성한 뒤 업로드합니다. 다음 이름의 파일을 생성합니다            │
│                         panther-analysis-all.zip 및 선택적으로 panther-analysis-all.sig를 생성합니다                                  │
│ upload                  지정된 정책과 룰을 Panther 배포에 업로드합니다.                                                │
│ delete                  Panther 배포에서 정책, 룰 또는 저장된 쿼리를 삭제합니다.                                         │
│ update-custom-schemas   Panther 배포에서 사용자 지정 스키마를 업데이트하거나 생성합니다.                                                    │
│ test-lookup-table       Lookup Table 사양 파일을 검증합니다.                                                                          │
│ validate                Panther 인스턴스에 대한 대량 업로드를 검증합니다.                                                   │
│ zip                     Panther에 업로드하기 위해 로컬 정책과 룰의 아카이브를 생성합니다.                                     │
│ check-connection        Panther API 연결을 확인합니다                                                                           │
│ benchmark               하나의 룰을 해당 로그 유형 중 하나와 비교하여 성능 테스트합니다. 룰은 작업       │
│                         디렉터리에서 유일한 항목이거나 --path, --ignore-files, 및 --filter로 지정되어야 합니다. 이 기능은 Data Replay │
│                         의 확장 기능이며 동일한 제한 사항이 적용됩니다.                                                                     │
│ enrich-test-data        Panther API의 추가 enrichment로 테스트 데이터를 보강합니다.                                          │
│ check-packs             팩에 누락된 탐지가 없는지 확인합니다.                                                            │
│ init                    새로운 panther 프로젝트를 초기화합니다                                                                            │
│ update                  Panther Analysis의 최신 콘텐츠를 가져와 자신의 콘텐츠와 업데이트 및 병합합니다. 콘텐츠를 업데이트하고 싶을 때마다 이 명령을 다시 실행하세요.    │
│                         Panther Analysis 항목과 동일한 ID와 BaseVersion 필드를 가진 항목은 최신 Panther Analysis 항목과 병합됩니다.      │
│                         병합 충돌이 있는 항목은 건너뛰고 `merge` 명령으로 수동 해결해야 합니다. 모든 병합         │
│                         충돌을 건너뛰지 않고 각각의 파일에 쓰려면 --write-merge-conflicts 플래그를 사용하세요.                                               │
│ install                 Panther Analysis의 분석 항목을 로컬 저장소에 설치하고 활성화합니다.                         │
│ explore                 최신 Panther Analysis 콘텐츠를 탐색합니다                                                                 │
│ merge                   분석 항목을 최신 Panther Analysis 콘텐츠와 병합합니다                                      │
│ migrate                 BaseVersion 필드를 추가하고 최신 상태로 맞춤으로써 Panther Analysis 콘텐츠를 기반으로 한 모든 분석 항목을 마이그레이션합니다.    │
│                         getting them up to date.                                                                                    │
│ fmt                     현재 디렉터리의 코드를 형식화하고 표준화하여 다른 명령에서 변경 사항이 덜 발생하도록 돕습니다.          │
│                         commands.                                                                                                   │
init
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

: Panther 디렉터리 준비 중이 명령은 Panther 디렉터리를 처음 설정할 때 한 번만 실행해야 합니다.

이 작업은 다음을 수행합니다:

다음을 생성합니다

  • .gitignore 파일, 필요한 경우, 그리고 여기에 추가합니다 활성화합니다

  • git rerere .cache

  • .gitignore 디렉터리, 여기에는 로컬에 콘텐츠를 저장합니다 panther-analysis 빠른 로드를 위해 최신 콘텐츠를 가져옵니다

    • migrate 빠른 로드를 위해

: 레거시 관리 흐름에서 콘텐츠 전환PAT가 향후 업데이트를 위해 기존 분석 항목을 추적하기 시작하도록 지시합니다.

: 레거시 관리 흐름에서 콘텐츠 전환 실행하면

pat migrate 저장소를 살펴보고 다음을 수행합니다: ID가 다음의 ID와 일치하는 각 분석 항목에 대해

  • 다음을 추가합니다 빠른 로드를 위해:

    • BaseVersion 필드를 YAML 파일에 추가합니다. 항목을 최신 버전과 병합합니다

    • 병합 충돌이 있으면 PAT는 항목을 병합하지 않은 상태로 둡니다. 충돌을 해결하려면 다음을 실행하세요 빠른 로드를 위해.

      • pat migrate <ID> 선택적으로 다음을 사용할 수 있습니다.

      • --auto-accept 플래그를 사용하면 병합 충돌을 완전히 피할 수 있습니다. 참고:

        는 아직 마이그레이션 중인 동안 병합 충돌을 해결하기 위한 것입니다. 다음 중 병합 충돌이 발생한 항목은 선택적으로 다음을 사용할 수 있습니다 아직 마이그레이션되지 않았습니다. 이는 다음과 매우 유사합니다 저장소를 살펴보고 다음을 수행합니다: pat merge <ID> 이며, 다음을 실행한 후 병합 충돌을 해결하는 데 사용됩니다pat update }. 그 병합 명령은 마이그레이션 단계에서 사용해서는 안 됩니다.

  • ID가 다음 항목의 ID와 일치하지 않는 각 분석 항목에 대해 빠른 로드를 위해, 해당 항목은 사용자 지정 항목으로 간주되므로 변경되지 않습니다.

이 명령의 출력은 다음에 저장됩니다. ./migration_status.md.

업데이트: 최신 panther-analysis 콘텐츠를 가져와 병합합니다

콘텐츠를 업데이트하려면 이 작업을 원할 때마다 다시 실행하세요.

이 명령은 최신 빠른 로드를 위해 콘텐츠를 가져와 자신의 콘텐츠에 병합합니다. PAT는 분석 항목이 다음 항목의 ID와 동일한지 확인하여 항목을 업데이트해야 하는지 판단하며 빠른 로드를 위해 그리고 필드를 YAML 파일에 추가합니다. 가 다음 항목의 최신 버전보다 작은지 확인합니다 빠른 로드를 위해. 항목의 ID가 다음의 항목과 같지만 빠른 로드를 위해 필드가 없으면 업데이트되지 않습니다. 마찬가지로, 항목에 다음과 일치하는 ID가 없지만 필드를 YAML 파일에 추가합니다. 그리고 빠른 로드를 위해 필드가 있으면 업데이트되지 않습니다. 필드를 YAML 파일에 추가합니다. 병합 충돌이 있는 항목은

의 일부로 업데이트되지 않으며 }명령으로 수동으로 해결해야 합니다. 병합 충돌이 있었던 모든 항목의 목록은 다음의 출력에 인쇄됩니다. 병합 명령의 업데이트 .

다음으로 인해 병합 충돌이 발생한 경우 }이를 다음으로 해결할 수 있습니다 pat merge (단, 성공적으로 업데이트된 콘텐츠를 테스트하고 업로드하는 데 필수는 아닙니다).

다음을 사용하세요 --write-merge-conflicts 플래그를 사용하여 모든 병합 충돌을 건너뛰지 않고 각 해당 파일에 기록합니다(충돌 해결에 AI를 사용하는 경우 유용할 수 있습니다). 다음을 사용하세요 --auto-accept panthers 또는 --auto-accept yours 를 사용하여 병합 충돌을 자동으로 해결합니다(충돌을 해결한 후에도 항목에 문제가 있거나 테스트가 실패할 수 있으므로, 각 항목은 해결 후 검토해야 합니다).

다음을 사용하세요 --preview 플래그를 사용하여 업데이트를 드라이 रन으로 실행합니다. 이 플래그를 사용하면 명령이 업데이트될 항목과 병합 충돌이 발생할 항목의 ID를 파일을 업데이트하지 않고 출력합니다.

탐색: 사용 가능한 빠른 로드를 위해 콘텐츠 보기

실행 pat explore 를 사용하여 빠른 로드를 위해 콘텐츠를 다음의 디렉터리, 여기에는 로컬에 콘텐츠를 저장합니다 디렉터리에서 확인하세요. (이 명령은 최신 p-a 릴리스와 비교해 구버전인 경우 새 p-a 콘텐츠를 가져옵니다.) 콘텐츠 ID, 유형 또는 설명으로 검색할 수 있습니다.

다음에 접근할 수 있습니다 분석 콘텐츠 트리를 다음을 사용하여 하십시오 enter 를 분석 유형에서 누르면 해당 유형으로 필터링됩니다. 누르세요 enter 임의의 단일 analysis ID를 기준으로 필터링합니다.

검색창을 사용하여 표의 항목을 필터링할 수 있습니다. 일반 텍스트를 검색하면 YAML 또는 Python 파일에 해당 텍스트가 포함된 항목을 대소문자 구분하여 필터링합니다. 명령줄에서 사용할 수 있는 필터를 사용하여 검색할 수도 있습니다. 예를 들어, data "prod env" AnalysisType=룰 Severity=Critical,High 를 검색하면 YAML 또는 Python 파일에 data 가 포함되어 있고, prod env 가 포함되어 있으며, 분석 유형이 이고 심각도가 Critical 또는 High인 모든 항목을 대소문자 구분하여 검색합니다. 검색에서 단어나 구를 함께 묶으려면 작은따옴표 또는 큰따옴표를 사용할 수 있습니다. 모든 따옴표는 검색이 적용되려면 짝이 맞는 닫는 따옴표가 있어야 합니다. 큰따옴표는 백슬래시(\)를 사용해 이스케이프할 수 있습니다. 작은따옴표는 이스케이프할 수 없습니다.

를 누르면 enter 특정 항목의 소스 코드를 엽니다. YAML 및 Python 파일이 있는 분석 유형의 경우 두 파일이 나란히 표시됩니다.

특정 항목을 볼 때 ^v 를 사용하여 별도의 pat install 명령을 사용하지 않고도 설치 및 활성화할 수 있습니다.

다음으로 탐색기 GUI를 종료할 수 있습니다. ctrl+q 또는 ctrl+c.

설치: 하나의 빠른 로드를 위해 항목을 복사하여 활성화

실행 pat install빠른 로드를 위해 에서 자신의 저장소로 항목을 복사할 수 있습니다. (설치하려는 내용을 이해하려면 다음을 실행하는 것이 좋습니다. pat explore.)

종속성(예: 전역 헬퍼 또는 데이터 모델)이 있는 분석 항목을 설치하면 종속성도 함께 설치됩니다(자신의 저장소에 복제됨).

fmt: 코드를 포맷하고 표준화

현재 디렉터리의 코드를 포맷하고 표준화하려면 실행합니다. PAT를 사용하는 데 필요한 포맷 변경 사항이 있습니다. 이 명령을 사용하면 도구가 수행하는 다른 모든 변경 사항과 별도로 포맷 변경 사항을 쉽게 적용할 수 있습니다. PAT와 작업하는 동안 논리 변경과 포맷 변경을 서로 독립적으로 유지하려면 이를 사용하세요.

YAML 파일에 적용하는 변경 사항은 다음과 같습니다:

  • 모든 불리언 대문자 사용을 정규화합니다(예: True -> true)

  • 모든 들여쓰기를 2칸으로 표준화합니다

  • 명시적인 null값을 빈 값으로 바꿉니다(예: Field: null -> Field: )

  • 인라인 스타일 필드를 모두 블록 스타일로, JSON을 블록 스타일로 바꿉니다

  • 명시적인 여러 줄 표식이 없는 문자열 내부의 모든 줄바꿈을 제거합니다(예: |>)

병합: 최신 Panther Analysis 버전의 항목과 분석 항목을 병합

이며, 다음을 실행한 후 병합 충돌을 해결하는 데 사용됩니다 는 다음 이후의 병합 충돌을 해결하기 위한 것입니다. }. 아직 코드를 마이그레이션 중이라면 다음을 사용하세요. 선택적으로 다음을 사용할 수 있습니다 병합 충돌이 있는 항목을 마이그레이션합니다.

실행한 후 }, 분석 항목이 깔끔하게 업데이트되지 못하게 하는 병합 충돌이 발생할 수 있습니다. Panther Analysis의 최신 버전과 항목을 병합하고 병합 충돌을 해결하려면 다음을 실행하세요. 이며, 다음을 실행한 후 병합 충돌을 해결하는 데 사용됩니다, 다음과 같이 ID 는 병합 충돌을 해결하려는 분석 항목의 ID입니다.

YAML 병합 충돌은 사용자 지정 YAML 병합 충돌 해결 도구 내에서 해결됩니다. 이를 통해 필드별로 항목을 빠르게 비교하여 충돌을 해결할 때 사용자의 버전 또는 Panther의 버전을 선택할 수 있습니다. 이 도구는 줄 단위가 아니라 필드 단위로 변경 사항을 비교하므로, 서식 변경으로 인해 발생하는 병합 충돌을 피할 수 있습니다. YAML의 최상위 필드만 비교합니다.

YAML 충돌을 모두 처리한 후에는 이 명령으로 Python 병합 충돌을 해결할 수 있습니다. 기본적으로 이는 vi. 사용하려는 다른 편집기를 제공하여 지정할 수 있습니다. --editor 플래그 또는 설정하는 EDITOR 환경 변수입니다. 편집기는 사용 가능한 CLI 명령으로 제공되어야 합니다. 일부 편집기는 기본적으로 CLI 명령을 설치하지 않으므로, 선호하는 편집기를 CLI를 통해 사용할 수 있는지 확인하시기 바랍니다.

병합 충돌을 성공적으로 해결한 후, 명령은 필드를 YAML 파일에 추가합니다. 필드를 YAML에서 업데이트해 드립니다.

병합 충돌을 다른 방식으로 해결하고 싶다면 다음 플래그를 사용할 수 있습니다:

  • 플래그를 사용하면 병합 충돌을 완전히 피할 수 있습니다.: 다른 명령에서와 동일하게 작동합니다. 다음을 허용합니다 당신의 것 또는 표범들 값으로. 병합의 한쪽을 자동으로 해결하여 병합 충돌을 피합니다.

  • --write-merge-conflicts: 모든 병합 충돌을 해결되지 않은 상태로 해당 파일에 기록합니다. 이렇게 해도 어떤 충돌도 해결되지 않으며, 공백 YAML 충돌도 피할 수 없습니다. 필드를 YAML 파일에 추가합니다. 업데이트될 것입니다.

테스트: 단위 테스트 실행 중

정의된 사양 파일을 불러오고 로컬에서 단위 테스트를 평가하려면 PAT를 사용하세요:

특정 속성을 기준으로 규칙 또는 정책을 필터링하려면:

pat migrate pat test 에 대한 상관 규칙단순 탐지 API 토큰이 필요합니다. 참고하십시오 API 토큰으로 인증하기 자세한 내용은.

디버그: print 문과 중단점을 사용하여 테스트를 디버그합니다

사용 디버그 특정 단위 테스트를 디버그 모드로 실행하려면 다음을 사용하세요:

인쇄 문장을 참조하세요:

트레이스백 정보와 함께 오류를 확인하세요:

벤치마크: 룰 성능 평가

다음을 사용할 수 있습니다 벤치마크 기존 룰 또는 초안 룰의 성능을 한 시간 분량의 데이터에 대해, 하나의 로그 유형에 대해 테스트할 수 있습니다. 시간 초과가 발생하는 룰을 반복적으로 개선할 때 특히 유용할 수 있습니다. 이는 장시간 실행되는 명령으로, 정기적인 CI/CD 워크플로가 아니라 필요할 때 수동으로 사용하도록 նախատեսված 것입니다.

이 명령과 함께 사용되는 API 토큰에는 "View Overview"(다음으로도 알려짐 SummaryRead) 및 "Manage Rules"(다음으로도 알려짐 RuleModify) 권한이 부여되어 있어야 합니다. 왜냐하면 벤치마크Data Replay의 확장이므로 동일한 제한 사항.

에 대해 단일 룰을 제공해야 합니다 벤치마크, 즉 작업 디렉터리에 룰이 하나만 있거나(./ 또는 --path) 또는 --ignore-files 또는 --filter.

를 사용해야 합니다. 특정 시간의 데이터를 지정하지 않으면 시스템이 데이터 볼륨이 가장 큰 과거의 시간을 선택합니다. 실행할 특정 시간을 지정하려면 --hour를 사용하십시오. (가장 일반적인 시간 형식이 지원됩니다. 예: 2023-07-31T09:00:00-7:00—분, 초 등은 잘립니다). 예를 들면 다음과 같습니다:

여러 로그 유형을 가진 룰의 경우, 다음을 사용하여 하나를 지정해야 합니다 --log-type. 예를 들면 다음과 같습니다:

다음의 출력은 벤치마크 표준 출력(stdout)과 --out 옵션으로 지정된 디렉터리에 모두 기록됩니다.

enrich-test-data: 보강 콘텐츠로 테스트 데이터 보강

사용 enrich-test-data 연결된 Enrichment providers 및 사용자 지정 Lookup Tables의 데이터로 룰과 Scheduled Rule의 테스트 콘텐츠를 보강하는 데 사용됩니다. 이를 통해 보강 콘텐츠에 의존하는 탐지를 위한 보다 정교한 테스트 사례를 작성할 수 있습니다.

enrich-test-data 사용하기는 간단하지만 분석 YAML 파일에 상당한 변경을 초래할 수 있습니다. 이 명령은 다음 기준에 따라 파일을 수정합니다:

  • 룰 또는 Scheduled Rule에 테스트 사례가 없으면 YAML 파일은 수정되지 않습니다.

  • 로그 유형이 보강을 지원하지 않으면 YAML 파일은 수정되지 않습니다.

  • 로그 유형이 보강을 지원하고 테스트 사례가 있는 경우:

    • 인라인 JSON 콘텐츠로 표현된 테스트 사례는 YAML로 다시 형식이 지정됩니다.

    • YAML 파일은 일반적인 YAML 규칙에 따라 들여쓰기에 두 칸을 사용하여 형식이 지정됩니다.

다른 명령과 마찬가지로 enrich-test-data 현재 디렉터리에서 재귀적으로 작동합니다. 루트 디렉터리에서 이 명령을 실행하면 빠른 로드를 위해 복사본의 모든 룰과 Scheduled Rule을 보강하려고 시도합니다. 단일 디렉터리의 콘텐츠를 보강하려면 명령을 실행하기 전에 해당 디렉터리로 이동하십시오.

다음을 실행할 수 있습니다 enrich-test-data PAT 버전 0.26 이상에서 다음 명령을 사용하여:

명령의 출력은 stdout에 기록되며, 강화된 모든 Rules 또는 Scheduled Rules의 목록을 포함합니다.

validate: 디택션 콘텐츠가 업로드할 준비가 되었는지 확인

The validate 명령은 업로드 프로세스에서 발생하는 것과 동일한 검사를 실행하여 디택션 콘텐츠가 Panther 인스턴스에 업로드할 준비가 되었는지 확인합니다. 이러한 검사 중 일부는 Panther 인스턴스의 구성 정보가 필요하므로, validate API 호출을 수행합니다.

PAT를 사용하여 Panther 인스턴스에서 디택션을 검증하려면:

  1. 다음 명령을 실행하세요:

    {% code fullWidth="false" %}

    {% endcode %}

    • 다음을 생략할 수 있습니다. --api-token--api-host 다음을 구성 값 설정 환경 변수 또는 구성 파일을 사용하는 등 다른 방법으로 하는 경우.

zip: Panther Console에 업로드할 패키지 만들기

Panther Console에 수동으로 업로드할 패키지를 만들려면 다음 명령을 실행하세요:

Panther Console에서 콘텐츠 업로드

  1. Panther Console의 왼쪽에서 Detections.

  2. 을 클릭합니다. Upload 버튼을 오른쪽 상단 모서리에서 클릭하세요.

  3. .zip 파일을 페이지에 끌어다 놓거나 파일 선택.

업로드: Panther에 패키지를 직접 업로드

PAT 버전 0.22.0부터는 API 토큰으로 인증한 다음 업로드 명령을 실행하면 타임아웃 문제를 방지하기 위해 비동기식 대량 업로드가 자동으로 수행됩니다.

인증에 API 토큰을 사용하지 않았다면, --batch 옵션을 사용할 수 있습니다. --batch 옵션은 PAT 0.19.0 이후 버전에서만 사용할 수 있습니다.

업로드 명령은 디택션 콘텐츠를 Panther 인스턴스에 업로드합니다.

사용하려면 업로드:

  1. 실행 panther_analysis_tool test 를 사용하여 단위 테스트가 통과하는지 확인하세요.

  2. 다음 명령을 실행하세요: panther_analysis_tool upload --path <path-to-your-detections> --api-token <your-api-token> --api-host https://api.<your-panther-instance-name>.runpanther.net/public/graphql

    • 다음을 생략할 수 있습니다. --api-token--api-host 다음을 구성 값 설정 환경 변수 또는 구성 파일을 사용하는 등 다른 방법으로 하는 경우.

다음을 사용할 때 업로드기존 ID가 있는 디택션과 Lookup Tables는 덮어쓰기됩니다. 로컬에서 삭제된 디택션은 업로드 시 Panther 인스턴스에서 자동으로 삭제되지 않습니다. 이들은 삭제 명령으로 제거해야 합니다(또는 Panther Console에서 수동으로 삭제해야 합니다). CLI 워크플로를 사용할 때는 디택션의 Enabled 속성을 false로 설정하고 삭제하지 않는 것이 권장됩니다.

엔터티의 ID(즉, RuleId 또는 PolicyId의 값)를 업데이트하고 업로드을 사용하지만, 이전 엔터티를 수동으로 제거하기 위해 삭제 도 함께 사용하지 않으면 Panther 인스턴스에 두 버전이 모두 존재하게 됩니다. 중복 디택션을 만들지 않고 ID를 업데이트하려면 삭제 를 사용하여 이전 ID를 지정하세요.

The CreatedBy 디택션 필드

기본적으로 CLI 워크플로에서 업로드된 디택션(즉, PAT 또는 REST API를 통해 업로드된 경우)은 Panther Console의 Detections 목록 페이지에 Panther에 의해 생성된 것으로 표시됩니다:

A table with headers and one row is shown. A header/row value pair (Created By / Panther) is circled.

디택션에 대한 Created By 값을 사용자 지정하려면, CLI 워크플로에서 업로드된 디택션에 CreatedBy 키를 디택션의 YAML 파일에 추가할 수 있습니다. CreatedBy 의 값은 다음과 같을 수 있습니다:

  • Panther 사용자의 이메일 주소: Console에서 Created By 필드에 연결된 사용자가 표시됩니다.

  • Panther 사용자의 고유 ID: Console에서 Created By 필드에 연결된 사용자가 표시됩니다.

  • 임의의 텍스트 값: Panther Console에서 제공된 값이 (External) 이 추가된 형태로 표시됩니다.

    A table with headers and four row values is shown. A "Created By" column with the values in the first three rows is circled.

The CreatedBy 키는 Python 규칙, 예약 규칙, 상관 규칙, simple detections 및 정책의 정의에 사용할 수 있습니다.

Panther Console에서 디택션을 다운로드하는 경우:

  • Panther Console에서 생성된 경우, 다음을 포함하지 않습니다. CreatedBy.

  • CLI 워크플로에서 업로드된 경우:

    • 다음을 사용하면 CreatedBy을 포함합니다. CreatedBy.

    • 다음이 없으면 CreatedBy을 포함하지 않습니다. CreatedBy.

삭제: 규칙, 정책 또는 저장된 쿼리 삭제

동안 panther_analysis_tool upload --path <directory> 는 다음의 모든 항목을 업로드하지만 <directory>에서 로컬 파일을 단순히 제거한다고 해서 Panther 인스턴스에서 아무것도 삭제되지는 않습니다. <directory>. 대신 다음을 사용할 수 있습니다. panther_analysis_tool delete Panther 인스턴스에서 디택션을 명시적으로 삭제하는 명령입니다. 특정 디택션을 삭제하려면 다음 명령을 실행할 수 있습니다:

이 명령은 디택션을 삭제하기 전에 확인을 위해 대화형으로 묻습니다. 확인 없이 삭제하려면 다음 명령을 사용할 수 있습니다:

PAT를 사용하면 한 번에 최대 1000개의 디택션을 삭제할 수 있습니다.

update-custom-schemas: 사용자 지정 스키마 생성 또는 업데이트

사용 update-custom-schemas 사용자 지정 스키마를 생성하거나 업데이트합니다.

명령별로 필요한 권한

아래는 각 명령에 필요한 권한의 매핑입니다. 다음을 참조하세요: 콘솔 및 API의 권한 이름 자세한 내용은.

명령
필요한 권한

check-connection

GeneralSettingsRead

테스트 (다음을 사용하는 디택션을 테스트할 때 Inline Filters)

BulkUpload 또는 BulkUploadValidate 또는 ViewRules

벤치마크

SummaryRead, RuleRead, RuleModify

validate

BulkUpload 또는 BulkUploadValidate

업로드

BulkUpload

삭제

PolicyModify, RuleModify, DataAnalyticsModify

update-custom-schemas

LogSourceRead, LogSourceModify

enrich-test-data

PolicyModify, RuleModify

zip

RuleRead, BulkUpload, BulkUploadValidate

디버그

RuleRead, BulkUpload, BulkUploadValidate

PAT 명령 옵션

각 PAT 명령에는 옵션(플래그라고도 함)이 있으며, 다음을 실행하여 확인할 수 있습니다 $ pat <command> -h.

예시 출력: pat test -h

옵션이 여러 인수를 받는 경우, 각 값을 해당 옵션과 함께 개별적으로 전달해야 합니다. 예를 들어, 다음에 두 개의 인수를 전달하려면 --valid-table-names:

  • 올바름: --valid-table-names table1 --valid-table-names table2

  • 잘못됨: --valid-table-names table1 table2

다중 인수 옵션이 다음 형식의 값을 허용하는 경우 KEY=VALUE1,VALUE2 (예: --filter)와 같이 각 항목은 플래그에 개별적으로 전달해야 합니다(인수의 값 자체는 여전히 쉼표로 구분된 배열로 표현할 수 있음). 예:

  • 올바름: --filter AnalysisType=policy,룰 --filter Severity=High

  • 잘못됨: --filter AnalysisType=policy,룰 Severity=High

--filter: PAT 명령 필터링

The 테스트, zip, 업로드, 그리고 릴리스 명령은 모두 필터링을 지원합니다. 필터링은 --filter 형식으로 지정된 필터 목록과 함께 플래그를 전달하여 작동합니다. KEY=VALUE1,VALUE2. 키는 policy 또는 룰의 모든 유효한 필드가 될 수 있습니다. 필터를 사용할 때는 지정된 각 필터와 일치하는 분석 유형만 고려됩니다.

예를 들어, 다음 명령은 AnalysisType 이 policy이고 Severity 가 High인 항목만 테스트합니다:

다음 명령은 AnalysisType policy 또는 룰이고, 그리고 Severity High:

다음을 참조하는 정책 또는 룰을 작성할 때 global 분석 유형인 경우, 필터에 반드시 포함하세요. 필터의 값으로 빈 문자열을 포함할 수 있으며, 이는 해당 필드가 존재할 때만 필터가 적용됨을 의미합니다.

다음 명령은 오류를 반환합니다. 해당 정책이 global을 import하지만 global에는 severity가 없어서 필터에 의해 제외되기 때문입니다:

이 쿼리가 예상대로 작동하려면 severity 필드가 없을 수 있도록 허용해야 합니다:

필터는 zip, 업로드, 그리고 릴리스 명령에서와 동일한 방식으로 테스트 .

--minimum-tests: 일정 수의 단위 테스트를 요구함

다음 옵션을 사용하여 최소 단위 테스트 수를 설정할 수 있습니다 --minimum-tests . 최소 테스트 수를 충족하지 못하는 디택션은 실패한 것으로 간주됩니다. 만약 --minimum-tests2 이거나 더 큰 값으로 설정되면, 최소한 하나의 테스트는 True 를 반환하고 하나는 False.

아래 예시에서는 각 룰 테스트가 통과했더라도, 올바른 테스트 커버리지가 없기 때문에 여전히 실패한 것으로 간주됩니다:

자주 묻는 질문

저는 versions.yml 파일이 저장소에 필요한가요?

아니요, 저장소에 versions.yml 를 유지하거나 포함할 필요는 없습니다.

상위 소스에서 디택션을 업데이트한 후, PAT가 내 변경 사항을 인식하도록 별도로 해야 할 일이 있나요?

아니요. 다음이 존재하는 한 변경 사항은 유지됩니다 필드를 YAML 파일에 추가합니다. 디택션에 있습니다. PAT는 필드를 YAML 파일에 추가합니다. 를 사용해 사용자 지정의 기반이 되는 상위 소스 버전을 추적하므로, 수동으로 업데이트할 필요가 없습니다. 자세한 내용은 Panther가 관리하는 디택션의 업데이트 받기 를 참조하세요.

스키마 업로드와 테스트에 현재 권장되는 도구는 무엇인가요?

사용 panther_analysis_tool update-custom-schemas 를 사용해 커스텀 스키마를 생성하거나 업데이트하세요. 로컬 스키마 테스트에는 pantherlog 도구.

저는 indexes/ 폴더가 저장소에 필요한가요?

아니요. 저장소에 indexes/ 폴더를 포함하거나 유지할 필요는 없습니다. 이 폴더에는 각 로그 유형별로 어떤 Panther가 관리하는 디택션이 존재하는지, 그리고 무엇을 디택션하는지에 대한 사람이 읽을 수 있는 참고 문서가 들어 있습니다. 언제든지 다음에서 찾아볼 수 있습니다 공개 panther-analysis 저장소.

PAT를 통해 업로드할 때 저장된 쿼리는 이름 기준으로 서로 덮어쓰나요?

네. 쿼리 이름은 고유 식별자로 작동합니다. 같은 이름의 쿼리를 업로드하면 업데이트됩니다. 사용하세요 --query-id 와 함께 pat delete 저장소에서 쿼리를 관리하려면.

마지막 업데이트

도움이 되었나요?