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를 사용하여 정의된 사양 파일을 로드하고 로컬에서 단위 테스트를 평가하세요:
규칙이나 정책을 특정 속성을 기준으로 필터링하려면:
debug: print 문과 중단점을 사용하여 테스트를 디버그합니다
debug: print 문과 중단점을 사용하여 테스트를 디버그합니다다음을 사용하세요 debug 디버그 모드에서 특정 단위 테스트를 실행하려면:
print 문 보기:
추적 정보와 함께 오류 보기:
benchmark: 규칙 성능 평가
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 다음을 사용하여 규칙 및 예약 규칙의 테스트 콘텐츠를 연결된 보강 제공자 및 사용자 지정 사용자 정의 로그 유형에서 가져온 데이터로 보강할 수 있습니다. 이는 보강 콘텐츠에 의존하는 탐지를 위한 보다 정교한 테스트 사례를 구축할 수 있게 합니다.
enrich-test-data 는 사용하기 쉽지만 분석 YAML 파일에 실질적인 변경을 초래할 수 있습니다. 명령은 다음 기준에 따라 파일을 수정합니다:
규칙 또는 예약 규칙에 테스트 케이스가 없으면 YAML 파일은 수정되지 않습니다.
로그 유형이 보강을 지원하지 않으면 YAML 파일은 수정되지 않습니다.
로그 유형이 보강을 지원하고 테스트 케이스가 있는 경우:
인라인 JSON 콘텐츠로 표현된 테스트 케이스는 YAML로 재포맷됩니다.
YAML 파일은 일반적인 YAML 관습에 따라 두 칸 들여쓰기를 사용하여 포맷됩니다.
다른 명령과 유사하게, enrich-test-data 는 현재 디렉터리에서 재귀적으로 작동합니다. 명령을 panther-analysis 복사본의 루트 디렉터리에서 실행하면 모든 규칙 및 예약 규칙을 보강하려고 시도합니다. 단일 디렉터리의 내용만 보강하려면 명령을 실행하기 전에 해당 디렉터리로 이동하세요.
다음을 실행할 수 있습니다 enrich-test-data PAT 버전 0.26 이상에서 다음 명령을 사용하여:
명령의 출력은 보강된 규칙 또는 예약 규칙 목록을 포함하여 stdout에 기록됩니다.
validate: 탐지 콘텐츠가 업로드 준비가 되었는지 확인하기
validate: 탐지 콘텐츠가 업로드 준비가 되었는지 확인하기를 입력하세요 validate 명령은 업로드 프로세스 중에 수행되는 것과 동일한 검사를 실행하여 탐지 콘텐츠가 Panther 인스턴스에 업로드할 준비가 되었는지 확인합니다. 이 검사 중 일부는 Panther 인스턴스의 구성 정보를 필요로 하기 때문에, validate 는 API 호출을 수행합니다.
PAT를 사용하여 Panther 인스턴스에 대해 탐지를 검증하려면:
아직 하지 않았다면, Panther 콘솔에서 API 토큰을 생성하세요.
다음 명령을 실행하세요:
{% code fullWidth="false" %}
{% endcode %}
다음
명령줄에서 호스트와 토큰을 전달하려면및--api-token옵션은 생략할 수 있습니다. 만약 다른 방법으로 구성 값을 설정하고 있다면, 즉 환경 변수나 구성 파일을 사용하여 설정하는 경우입니다.
zip: Panther 콘솔에 업로드할 패키지 생성하기
zip: Panther 콘솔에 업로드할 패키지 생성하기Panther 콘솔에 수동으로 업로드할 패키지를 생성하려면 다음 명령을 실행하세요:
Panther 콘솔에 콘텐츠 업로드하기
Panther 콘솔의 왼쪽 사이드에서 클릭하세요 탐지(Detections).
알림 요약 보기 업로드(Upload) 버튼은 오른쪽 상단에 있습니다.
.zip 파일을 페이지로 드래그 앤 드롭하거나 클릭하세요 파일 선택(Select file).

업로드: 패키지를 Panther에 직접 업로드하기
업로드: 패키지를 Panther에 직접 업로드하기upload 명령은 탐지 콘텐츠를 Panther 인스턴스로 업로드합니다.
사용하려면 업로드:
아직 하지 않았다면, Panther 콘솔에서 API 토큰을 생성하세요.
다음을 실행하세요
panther_analysis_tool test단위 테스트가 통과하는지 확인하세요.다음 명령을 실행하세요:
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옵션은 생략할 수 있습니다. 만약 다른 방법으로 구성 값을 설정하고 있다면, 즉 환경 변수나 구성 파일을 사용하여 설정하는 경우입니다.
사용할 때 업로드에는 기존 ID를 가진 탐지와 Lookup Table이 덮어쓰여집니다. 로컬에서 삭제된 탐지는 업로드 시 Panther 인스턴스에서 자동으로 삭제되지 않으며—삭제하려면 삭제 명령(또는 Panther 콘솔에서 수동 삭제)을 사용해야 합니다. CLI 워크플로우를 사용할 때는 탐지를 삭제하는 대신 해당 탐성의 Enabled 속성을 false로 설정하는 것이 권장됩니다.
엔터티의 ID(예: RuleId 또는 PolicyId)를 업데이트하고 업로드를 사용하지만 오래된 엔터티를 수동으로 제거하기 위해 삭제 를 사용하지 않으면, 두 버전이 모두 Panther 인스턴스에 존재하게 됩니다. ID를 업데이트하면서 중복 탐지를 만들지 않으려면 이전 ID로 삭제 를 사용하세요.
를 입력하세요 CreatedBy 탐지 필드
CreatedBy 탐지 필드기본적으로 CLI 워크플로우(즉, PAT 또는 REST API)로 업로드된 탐지는 Panther 콘솔의 탐지(Detections) 목록 페이지에 Panther가 생성한 것으로 표시됩니다:

업로드된 탐지의 Created By 값을 사용자화하려면 탐지의 YAML 파일에 CreatedBy 키를 추가할 수 있습니다. CreatedBy 의 값은 다음일 수 있습니다:
Panther 사용자 이메일 주소: 콘솔에서 Created By 필드는 연결된 사용자를 표시합니다.
Panther 사용자의 고유 ID: 콘솔에서 Created By 필드는 연결된 사용자를 표시합니다.
이 값은 다음을 사용하여 조회할 수 있습니다: 사용자 목록 REST API 엔드포인트.
임의의 텍스트 값: Panther 콘솔에서 제공된 값에 (External) 가 추가되어 표시됩니다.

를 입력하세요 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-schemasPAT를 사용하면 한 번에 최대 1000개의 탐지를 삭제할 수 있습니다.다음을 사용하세요 update-custom-schemas : 사용자 지정 스키마 생성 또는 업데이트
사용자 지정 스키마를 생성하거나 업데이트하려면. 업로드 이 명령을 사용하여 스키마를 생성한 후에는 새 스키마를 참조하는 탐지를 업로드하기 전에 최소 15분을 기다리세요.
명령별 필요한 권한
아래는 각 명령에 필요한 권한 매핑입니다.
check-connection
Panther 설정 정보 읽기(Read Panther Settings Info)
테스트 (Inline Filters를 사용하는 탐지를 테스트할 때) 인라인 필터(Inline Filters))
대량 업로드(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.
옵션이 여러 인수를 받으면 각 값을 옵션과 함께 개별적으로 전달해야 합니다. 예를 들어 두 개의 인수를 --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
--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-tests 최소 테스트 수를 만족하지 못하는 탐지는 실패로 간주됩니다. 만약 --minimum-tests 가 2 또는 그 이상으로 설정되면, 최소 하나의 테스트가 True 를 반환하고 하나는 False.
를 반환해야 한다는 것을 강제합니다.
Last updated
Was this helpful?

