Panther 분석 도구 명령어

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

개요

Panther 분석 도구(PAT)를 사용하여 Panther 탐지 콘텐츠를 관리할 수 있습니다. PAT를 사용하면 업로드, 테스트삭제 자산 등 다양한 작업을 수행할 수 있습니다.

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

PAT 명령

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

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

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

$ panther_analysis_tool -h
usage: panther_analysis_tool [-h] [--version] [--debug] [--skip-version-check] {release,test,publish,upload,delete,update-custom-schemas,test-lookup-table,validate,zip,check-connection,benchmark,enrich-test-data} ...

Panther Analysis Tool: Panther 정책 및 규칙을 관리하기 위한 커맨드 라인 도구입니다.

위치 인수:
  {release,test,publish,upload,delete,update-custom-schemas,test-lookup-table,validate,zip,check-connection,benchmark,enrich-test-data}
    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의 추가 보강을 사용하여 테스트 데이터를 보강합니다.

선택적 인수:
  -h, --help            이 도움말 메시지를 표시하고 종료합니다
  --version             프로그램의 버전 번호를 표시하고 종료합니다
  --debug
  --skip-version-check

테스트: 단위 테스트 실행

PAT를 사용하여 정의된 사양 파일을 로드하고 로컬에서 단위 테스트를 평가하세요:

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

circle-info

실행 중 pat test상관 규칙단순 탐지 에는 API 토큰이 필요합니다. 자세한 내용은 API 토큰으로 인증하기 를 참조하세요.

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

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

print 문 보기:

추적 정보와 함께 오류 보기:

benchmark: 규칙 성능 평가

다음을 사용하여 benchmark 기존 또는 초안 규칙을 한 시간 분량의 데이터에 대해 하나의 로그 유형으로 성능 테스트할 수 있습니다. 이는 타임아웃이 발생하는 규칙을 반복적으로 조정할 때 특히 유용할 수 있습니다. 이 명령은 수동으로 필요할 때 사용하는 장시간 실행 명령이며 정기적인 CI/CD 워크플로우에서 사용하도록 설계되지 않았습니다.

이 명령과 함께 사용하는 API 토큰에는 "Read Panther Metrics"(또는 SummaryRead) 및 "Manage Rules"(또는 RuleModify) 권한이 부여되어야 합니다. benchmark데이터 재생(Data Replay)의 확장이므로 동일한 제한.

이 명령에 단일 규칙을 제공해야 합니다 benchmark—작업 디렉터리에 규칙이 하나만 있거나 (./ 또는 --path), 또는 --ignore-files 또는 --filter.

를 사용하여. 특정 시간을 지정하지 않으면 시스템은 데이터 양이 가장 많은 과거의 한 시간을 선택합니다. 특정 시간을 지정하려면--hour 를 사용하세요. (대부분의 일반적인 시간 형식이 지원됩니다. 예:2023-07-31T09:00:00-7:00

panther_analysis_tool benchmark --hour <datetime> 여러 로그 유형을 가진 규칙의 경우 하나의 로그 유형을--log-type

panther_analysis_tool benchmark --log-type <log-type> benchmark 의 출력은 stdout과 --out 옵션으로 지정된 디렉터리 둘 다에 기록됩니다.

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

다음을 사용하세요 enrich-test-data 다음을 사용하여 규칙 및 예약 규칙의 테스트 콘텐츠를 연결된 보강 제공자 및 사용자 지정 사용자 정의 로그 유형에서 가져온 데이터로 보강할 수 있습니다. 이는 보강 콘텐츠에 의존하는 탐지를 위한 보다 정교한 테스트 사례를 구축할 수 있게 합니다.

enrich-test-data 는 사용하기 쉽지만 분석 YAML 파일에 실질적인 변경을 초래할 수 있습니다. 명령은 다음 기준에 따라 파일을 수정합니다:

  • 규칙 또는 예약 규칙에 테스트 케이스가 없으면 YAML 파일은 수정되지 않습니다.

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

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

    • 인라인 JSON 콘텐츠로 표현된 테스트 케이스는 YAML로 재포맷됩니다.

    • YAML 파일은 일반적인 YAML 관습에 따라 두 칸 들여쓰기를 사용하여 포맷됩니다.

다른 명령과 유사하게, enrich-test-data 는 현재 디렉터리에서 재귀적으로 작동합니다. 명령을 panther-analysis 복사본의 루트 디렉터리에서 실행하면 모든 규칙 및 예약 규칙을 보강하려고 시도합니다. 단일 디렉터리의 내용만 보강하려면 명령을 실행하기 전에 해당 디렉터리로 이동하세요.

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

명령의 출력은 보강된 규칙 또는 예약 규칙 목록을 포함하여 stdout에 기록됩니다.

validate: 탐지 콘텐츠가 업로드 준비가 되었는지 확인하기

를 입력하세요 validate 명령은 업로드 프로세스 중에 수행되는 것과 동일한 검사를 실행하여 탐지 콘텐츠가 Panther 인스턴스에 업로드할 준비가 되었는지 확인합니다. 이 검사 중 일부는 Panther 인스턴스의 구성 정보를 필요로 하기 때문에, validate 는 API 호출을 수행합니다.

PAT를 사용하여 Panther 인스턴스에 대해 탐지를 검증하려면:

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

    {% code fullWidth="false" %}

    {% endcode %}

zip: Panther 콘솔에 업로드할 패키지 생성하기

Panther 콘솔에 수동으로 업로드할 패키지를 생성하려면 다음 명령을 실행하세요:

Panther 콘솔에 콘텐츠 업로드하기

  1. Panther 콘솔의 왼쪽 사이드에서 클릭하세요 탐지(Detections).

  2. 알림 요약 보기 업로드(Upload) 버튼은 오른쪽 상단에 있습니다.

  3. .zip 파일을 페이지로 드래그 앤 드롭하거나 클릭하세요 파일 선택(Select file).

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

circle-info

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

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

upload 명령은 탐지 콘텐츠를 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

사용할 때 업로드에는 기존 ID를 가진 탐지와 Lookup Table이 덮어쓰여집니다. 로컬에서 삭제된 탐지는 업로드 시 Panther 인스턴스에서 자동으로 삭제되지 않으며—삭제하려면 삭제 명령(또는 Panther 콘솔에서 수동 삭제)을 사용해야 합니다. CLI 워크플로우를 사용할 때는 탐지를 삭제하는 대신 해당 탐성의 Enabled 속성을 false로 설정하는 것이 권장됩니다.

엔터티의 ID(예: RuleId 또는 PolicyId)를 업데이트하고 업로드를 사용하지만 오래된 엔터티를 수동으로 제거하기 위해 삭제 를 사용하지 않으면, 두 버전이 모두 Panther 인스턴스에 존재하게 됩니다. ID를 업데이트하면서 중복 탐지를 만들지 않으려면 이전 ID로 삭제 를 사용하세요.

를 입력하세요 CreatedBy 탐지 필드

기본적으로 CLI 워크플로우(즉, PAT 또는 REST API)로 업로드된 탐지는 Panther 콘솔의 탐지(Detections) 목록 페이지에 Panther가 생성한 것으로 표시됩니다:

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

업로드된 탐지의 Created By 값을 사용자화하려면 탐지의 YAML 파일에 CreatedBy 키를 추가할 수 있습니다. CreatedBy 의 값은 다음일 수 있습니다:

  • Panther 사용자 이메일 주소: 콘솔에서 Created By 필드는 연결된 사용자를 표시합니다.

  • Panther 사용자의 고유 ID: 콘솔에서 Created By 필드는 연결된 사용자를 표시합니다.

  • 임의의 텍스트 값: Panther 콘솔에서 제공된 값에 (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.

를 입력하세요 CreatedBy 키는 Python 규칙, 예약 규칙, 상관 규칙, 단순 탐지 및 정책 정의에서 사용할 수 있습니다.

Panther 콘솔에서 탐지를 다운로드한 경우:

  • 콘솔에서 생성된 항목이라면 CreatedBy.

  • 을 포함하지 않습니다.

    • CLI 워크플로우에서 업로드된 경우: CreatedBy를 사용하여 업로드된 경우 CreatedBy.

    • 를 포함합니다. CreatedBy를 사용하지 않고 업로드된 경우 CreatedBy.

삭제을 포함하지 않습니다.

: 규칙, 정책 또는 저장된 쿼리 삭제하기 반면에 panther_analysis_tool upload --path <directory> <directory> 에서 모든 것을 업로드하지만, 로컬 파일을 단순히 에서 제거한다고 해서 Panther 인스턴스의 항목을 삭제하지는 않습니다. 대신에 명시적으로 Panther 인스턴스에서 탐지를 삭제하려면 panther_analysis_tool delete

panther_analysis_tool delete --analysis-id MyRuleId

panther_analysis_tool delete --analysis-id MyRuleId --no-confirm

update-custom-schemasPAT를 사용하면 한 번에 최대 1000개의 탐지를 삭제할 수 있습니다.

다음을 사용하세요 update-custom-schemas : 사용자 지정 스키마 생성 또는 업데이트

circle-exclamation

명령별 필요한 권한

아래는 각 명령에 필요한 권한 매핑입니다.

명령
필요한 권한

check-connection

Panther 설정 정보 읽기(Read Panther Settings Info)

테스트 (Inline Filters를 사용하는 탐지를 테스트할 때) 인라인 필터(Inline Filters)arrow-up-right)

대량 업로드(Bulk Upload) OR 대량 업로드 검증(Bulk Upload Validate) OR 규칙 보기(View Rules)

benchmark

Panther 지표 읽기(Read Panther Metrics)

validate

대량 업로드 검증(Bulk Upload Validate) OR 대량 업로드(Bulk Upload)

업로드

로그 소스 관리(만약

삭제

정책 관리(Manage Policies) 규칙 관리(Manage Rules) 저장된 검색 관리(Manage Saved Searches)

update-custom-schemas

로그 소스 보기(View Log Sources) 로그 소스 관리(Manage Log Sources)

PAT 명령 옵션

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

chevron-right의 예시 출력 pat test -hhashtag

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

  • 에 전달하려면, 정확한 예:

  • --valid-table-names table1 --valid-table-names table2 잘못된 예:

--valid-table-names table1 table2 다중 인수 옵션이 KEY=VALUE1,VALUE2 --filter형식의 값을 허용하는 경우(예:

  • 에 전달하려면, ) 각 값은 플래그에 대해 별도로 전달되어야 합니다(인수의 값은 여전히 쉼표로 구분된 배열로 표현될 수 있음). 예:

  • --valid-table-names table1 --valid-table-names table2 --filter AnalysisType=policy,rule --filter Severity=High

--filter--filter AnalysisType=policy,rule Severity=High

를 입력하세요 테스트, zip, 업로드: PAT 명령 필터링 release --filter 명령은 모두 필터링을 지원합니다. 필터링은 다중 인수 옵션이플래그에

형식으로 필터 목록을 전달하여 작동합니다. 키는 정책이나 규칙의 유효한 필드여야 합니다. 필터를 사용할 때는 지정된 각 필터와 일치하는 분석 유형만 고려됩니다. 예를 들어, 다음 명령은 AnalysisType 이 policy 이고 Severity

AWS.IAM.BetaTest 예를 들어, 다음 명령은 다음 명령은 이 policy 이고 정책 OR 규칙(또는)을 대상으로 하며, 그리고

panther_analysis_tool test --path tests/fixtures/valid_policies --filter AnalysisType=policy,rule --filter Severity=High AWS.CloudTrail.MFAEnabled 글로벌(global) 분석 유형을 참조하는 정책이나 규칙을 작성할 때는 필터에 그것들을 포함해야 합니다. 필터 값으로 빈 문자열을 포함할 수 있으며, 이는 해당 필드가 존재할 때만 필터가 적용됨을 의미합니다.

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

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

필터는 zip, 업로드: PAT 명령 필터링 명령에 대해 테스트 명령과 동일한 방식으로 작동합니다.

--minimum-tests: 특정 수의 단위 테스트 요구하기

다음 플래그로 최소 단위 테스트 수를 설정할 수 있습니다: --minimum-tests 최소 테스트 수를 만족하지 못하는 탐지는 실패로 간주됩니다. 만약 --minimum-tests2 또는 그 이상으로 설정되면, 최소 하나의 테스트가 True 를 반환하고 하나는 False.

를 반환해야 한다는 것을 강제합니다.

Last updated

Was this helpful?