Panther 분석 도구 명령어

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

개요

Panther 분석 도구(PAT)를 사용하여 Panther 디텍션 콘텐츠를 관리할 수 있습니다. PAT를 사용하면 다음을 수행할 수 있습니다 업로드, Dependabot은 종속성을 업데이트하기 위해 PR을 열 수 있습니다. 그러나 Dependabot은 리포지토리의 시크릿에 접근할 수 없습니다. 이는 API 시크릿이 필요한 GitHub 워크플로우(예:삭제 자산 등 여러 작업.

각 PAT 명령은 특정 옵션. 예를 들어, 여러 명령에서 범위를 좁히기 위해 --filter 를 사용할 수 있습니다.

PAT 명령

다음 코드 블록에서 사용 가능한 모든 PAT 명령의 전체 목록을 참조하세요. 그 아래에는 몇몇 명령에 대한 추가 정보가 있습니다.

PAT 명령은 다음을 사용하여 실행할 수 있습니다 panther_analysis_tool 이전에 생성한 Snowflake 사용자 이름, 예를 들면 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

Dependabot은 종속성을 업데이트하기 위해 PR을 열 수 있습니다. 그러나 Dependabot은 리포지토리의 시크릿에 접근할 수 없습니다. 이는 API 시크릿이 필요한 GitHub 워크플로우(예:: 유닛 테스트 실행

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

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

circle-info

실행 중 pat test for 상관 규칙심플 디텍션 는 API 토큰이 필요합니다. 참조: API 토큰으로 인증하기 을 참조하세요.

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

port debug 디버그 모드에서 특정 유닛 테스트를 실행하려면:

print 문 보기:

traceback 정보를 포함한 오류 보기:

benchmark: 룰 성능 평가

다음 도구를 사용할 수 있습니다 benchmark 기존 또는 초안 룰을 한 로그 타입의 한 시간 분량 데이터에 대해 성능 테스트하려면. 타임아웃이 발생하는 룰을 반복적으로 개선할 때 특히 유용할 수 있습니다. 이 명령은 수동으로 필요할 때 사용하는 장시간 실행되는 명령이며 정기적인 CI/CD 워크플로우에서 사용하기 위한 것이 아닙니다.

이 명령과 함께 사용되는 API 토큰은 "Read Panther Metrics"(또는 SummaryRead) 및 "Manage Rules"(또는 RuleModify) 권한이 부여되어야 합니다. 이유는 benchmark 가의 확장 기능이기 때문에 중복 제거 창와 동일한 제한 사항.

를 준수합니다. benchmark단일 룰을./ 이전에 생성한 Snowflake 사용자 이름, 예를 들면 --path에 제공해야 합니다. 이는 작업 디렉터리에 룰이 하나만 있거나 ( ), 또는 이전에 생성한 Snowflake 사용자 이름, 예를 들면 --filter.

--ignore-files 를 통해 제공하는 경우입니다.특정 시간을 지정하지 않으면 시스템은 데이터 양이 가장 많은 과거의 한 시간을 선택합니다. 특정 시간을 지정하려면 --hour을 사용하세요. (대부분의 일반적인 시간 형식이 지원됩니다. 예:

—분, 초 등은 잘려나갑니다). 예: panther_analysis_tool benchmark --hour <datetime>AI 면책 조항

의 출력은 두 개의 서브시스템으로 흐릅니다: benchmark --log-type 을 사용하여 지정해야 합니다. 옵션.

panther_analysis_tool benchmark --log-type <log-type>출력은 stdout과

port panther_analysis_tool benchmark --log-type <log-type> --out 로 지정된 디렉터리에 모두 기록됩니다. enrich-test-data 룩업 테이블: 인리치먼트 콘텐츠로 테스트 데이터 인리치

panther_analysis_tool benchmark --log-type <log-type> 룰 및 스케줄된 룰의 테스트 콘텐츠를 연결된

  • 인리치먼트 제공자

  • 및 사용자 정의

  • 의 데이터로 인리치하기 위해 사용합니다. 이를 통해 인리치먼트 콘텐츠에 의존하는 디텍션에 대해 보다 정교한 테스트 케이스를 구축할 수 있습니다.

    • 명령은 사용하기 간단하지만 분석 YAML 파일에 상당한 변경을 도입할 수 있습니다. 명령은 다음 기준에 따라 파일을 수정합니다:

    • 룰 또는 스케줄된 룰에 테스트 케이스가 없으면 YAML 파일은 수정되지 않습니다.

로그 타입이 인리치먼트를 지원하지 않으면 YAML 파일은 수정되지 않습니다. panther_analysis_tool benchmark --log-type <log-type> 로그 타입이 인리치먼트를 지원하고 테스트 케이스가 있는 경우: panther-analysis 인라인 JSON 콘텐츠로 표현된 테스트 케이스는 YAML로 다시 포맷됩니다.

YAML 파일은 일반적인 YAML 관습에 따라 들여쓰기 두 칸을 사용하여 포맷됩니다. panther_analysis_tool benchmark --log-type <log-type> 다른 명령과 유사하게,

다음 명령을 사용하여 PAT 버전 0.26 이상에서

를 실행할 수 있습니다:panther_analysis_tool enrich-test-data

사용자를 사용할 것이며, 를 실행할 수 있습니다: 명령의 출력은 stdout에 기록되며 인리치된 룰 또는 스케줄된 룰 목록이 포함됩니다. 를 실행할 수 있습니다: validate

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

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

  2. PAT를 사용하여 Panther 인스턴스에 대해 디텍션을 검증하려면:

    아직 생성하지 않았다면,

    다음 명령을 실행하세요:

    • {% code fullWidth="false" %} panther_analysis_tool validate --path <path-to-your-detections> --api-token <your-api-token> --api-host https://api.<your-panther-instance-name>.runpanther.net/public/graphql{% endcode %} 다음 옵션들을 제외할 수 있습니다: --api-token --api-host

환경 변수나 구성 파일을 사용하는 등 다른 방법으로구성 값을 설정하는 경우에는

옵션을 제외할 수 있습니다.

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

  1. [PASS] User MFA not enabled fails compliance 디텍션.

  2. 을 클릭하세요 업로드 [INFO]: Zipping analysis packs in tests/fixtures/valid_policies/ to tmp

  3. [INFO]: <current working directory>/tmp/panther-analysis-2020-03-23T12-48-18.zip Panther 콘솔의 왼쪽에서, 오른쪽 상단의.

업로드버튼을 클릭하세요.

circle-info

페이지에 .zip 파일을 드래그 앤 드롭하거나 업로드 파일 선택

: 패키지를 Panther에 직접 업로드 PAT 버전 0.22.0부터, API 토큰으로 인증한 상태에서 명령을 실행하면 시간 초과 문제를 방지하기 위해 비동기 대량 업로드가 자동으로 수행됩니다. PAT 버전 0.22.0부터, API 토큰으로 인증한 상태에서 API 토큰으로 인증하지 않은 경우,

--batch

인 필드는 연결 연산에 사용할 수 없습니다. 업로드:

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

  2. 다음 명령을 실행하세요: panther_analysis_tool test 옵션을 사용할 수 있습니다. 이

  3. PAT를 사용하여 Panther 인스턴스에 대해 디텍션을 검증하려면: 옵션은 PAT 버전 0.19.0 이후에서만 사용할 수 있습니다.

    • {% code fullWidth="false" %} panther_analysis_tool validate --path <path-to-your-detections> --api-token <your-api-token> --api-host https://api.<your-panther-instance-name>.runpanther.net/public/graphql{% endcode %} 다음 옵션들을 제외할 수 있습니다: --api-token --api-host

upload 명령은 디텍션 콘텐츠를 Panther 인스턴스에 업로드합니다. 업로드단위 테스트가 통과하는지 확인하려면 삭제 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 인스턴스에서 자동으로 삭제되지 않습니다—삭제하려면 true명령(또는 Panther 콘솔에서 수동 삭제)을 사용해야 합니다. CLI 워크플로우를 사용할 때는 디텍션을 삭제하는 대신 해당 디텍션의

속성을 로 설정하는 것이 권장됩니다. 이전에 생성한 Snowflake 사용자 이름, 예를 들면 엔터티의 ID(예:RuleId 업로드PolicyId 삭제 )를 업데이트하고 삭제 를 사용하지만, 오래된 엔터티를 수동으로 제거하기 위해

사용자를 사용할 것이며, CreatedBy 디텍션 필드

를 사용하지 않으면 두 버전이 모두 Panther 인스턴스에 존재하게 됩니다. ID를 업데이트하면서 중복 디텍션을 생성하지 않으려면 이전 ID로 )로 룰을 작성할 수 있습니다; 예약된 룰은 를 사용하세요. REST API기본적으로 CLI 워크플로우로 업로드된 디텍션(즉, 디텍션 또는

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

를 통해)은 Panther 콘솔의 목록 페이지에 Panther가 생성한 항목으로 표시됩니다: CLI 워크플로우로 업로드된 디텍션에 대해 CreatedBy Created By CreatedBy 다음일 수 있습니다:

사용자를 사용할 것이며, CreatedBy 를 사용하여 조회할 수 있습니다.

임의의 텍스트 값: Panther 콘솔에서 제공된 값은

  • (외부) CreatedBy.

  • 와 함께 표시됩니다.

    • 키는 Python 룰, 스케줄된 룰, 상관 룰, 간단한 디텍션 및 정책 정의에서 사용할 수 있습니다. CreatedByPanther 콘솔에서 디텍션을 다운로드하면: CreatedBy.

    • 콘솔에서 생성된 경우, CreatedBy를 포함하지 않습니다. CreatedBy.

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

로 업로드된 경우, 를 포함합니다. 없이 업로드된 경우, 를 포함하지 않습니다.: 룰, 정책 또는 저장된 쿼리 삭제 를 포함하지 않습니다.panther_analysis_tool upload --path <directory>는 <directory> 의 모든 것을 업로드하지만, 단순히 로컬 파일을

panther_analysis_tool delete

panther_analysis_tool delete --analysis-id MyRuleId

update-custom-schemas이 명령은 삭제 전에 대화형으로 확인을 요청합니다. 확인 없이 삭제하려면 다음 명령을 사용할 수 있습니다:

port update-custom-schemas panther_analysis_tool delete --analysis-id MyRuleId --no-confirm

circle-exclamation

명령별 필요한 권한

사용자 정의 스키마를 생성하거나 업데이트하려면.

이 명령을 사용하여 스키마를 생성한 후에는 새 스키마를 참조하는 디텍션을 업로드하기 전에 최소 15분을 기다리세요.
아래는 각 명령에 필요한 권한 매핑입니다.

다음 명령 실행

명령

Dependabot은 종속성을 업데이트하기 위해 PR을 열 수 있습니다. 그러나 Dependabot은 리포지토리의 시크릿에 접근할 수 없습니다. 이는 API 시크릿이 필요한 GitHub 워크플로우(예: 필요한 권한 인라인 필터arrow-up-right)

Read Panther Settings Info

benchmark

(디텍션 테스트 시 사용하는 경우

를 실행할 수 있습니다:

Bulk Upload OR Bulk Upload Validate OR View Rules

업로드

Read Panther Metrics

삭제

Bulk Upload Validate OR Bulk Upload

update-custom-schemas

Bulk Upload

Manage Policies Manage Rules Manage Saved Searches

View Log Sources Manage Log Sources PAT 명령 옵션.

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

스키마 검증 중에 유효한 것으로 간주해야 하는 정규화된 테이블 이름들(표준 Panther/Snowflake 테이블 외에도), 공백으로 구분합니다. '*'를 0개 이상의 문자를 매치하는 와일드카드로 허용합니다. 예: foo.bar.baz bar.baz.* foo.*bar.baz baz.* *.foo.* 옵션이 여러 인수를 허용하는 경우, 각 값을 옵션과 함께 개별적으로 전달해야 합니다. 예를 들어 두 개의 인수를 전달하려면:

  • --valid-table-names 올바른 예:

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

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

  • --valid-table-names ), 각 항목은 플래그에 대해 개별적으로 전달되어야 합니다(단, 인수 값은 여전히 쉼표로 구분된 배열로 표현될 수 있음). 예:

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

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

사용자를 사용할 것이며, Dependabot은 종속성을 업데이트하기 위해 PR을 열 수 있습니다. 그러나 Dependabot은 리포지토리의 시크릿에 접근할 수 없습니다. 이는 API 시크릿이 필요한 GitHub 워크플로우(예:, 환경 변수나 구성 파일을 사용하는 등 다른 방법으로, 업로드릴리스 : PAT 명령 필터링 --filter 모든 명령은 필터링을 지원합니다. 필터링은 다중 인수 옵션이플래그에

형식으로 지정된 필터 목록을 전달하여 작동합니다. 키는 정책 또는 룰의 유효한 필드 여럿 중 하나일 수 있습니다. 필터를 사용할 때 지정된 각 필터와 일치하는 분석 유형만 고려됩니다. AnalysisType 예를 들어, 다음 명령은 심각도 정책의

[INFO]: Testing analysis packs in tests/fixtures/valid_policies AnalysisType AWS.IAM.BetaTest 심각도 다음 명령은

panther_analysis_tool test --path tests/fixtures/valid_policies --filter AnalysisType=policy,rule --filter Severity=High AWS.CloudTrail.MFAEnabled 글로벌

분석 유형을 참조하는 정책이나 룰을 작성할 때는 필터에 이를 포함해야 합니다. 필터 값으로 빈 문자열을 포함할 수 있으며, 해당 필드는 존재하는 경우에만 필터가 적용된다는 의미입니다.

[ERROR]: [('tests/fixtures/valid_policies/example_policy.yml', ModuleNotFoundError("No module named 'panther'"))]

panther_analysis_tool test --path tests/fixtures/valid_policies --filter AnalysisType=policy,global --filter Severity=Critical,"" 환경 변수나 구성 파일을 사용하는 등 다른 방법으로, 업로드릴리스 필터는 Dependabot은 종속성을 업데이트하기 위해 PR을 열 수 있습니다. 그러나 Dependabot은 리포지토리의 시크릿에 접근할 수 없습니다. 이는 API 시크릿이 필요한 GitHub 워크플로우(예: 명령에서도

명령에서 작동하는 방식과 동일한 방식으로 작동합니다.--minimum-tests

: 특정 수의 유닛 테스트 요구 명령에서 작동하는 방식과 동일한 방식으로 작동합니다. 다음 플래그로 최소 유닛 테스트 수를 설정할 수 있습니다: 명령에서 작동하는 방식과 동일한 방식으로 작동합니다. 값이 다음으로 설정되어 있습니다 2 해당 최소 테스트 수를 갖지 않은 디텍션은 실패로 간주됩니다. 만약 비율이 이거나 그보다 크면, 적어도 하나의 테스트가 )..

를 반환하고 하나는

마지막 업데이트

도움이 되었나요?