GitHub Actions를 통한 Panther 콘텐츠 관리
GitHub Actions를 사용한 CI/CD 워크플로로 Panther에서 탐지 및 스키마 관리하기
개요
GitHub Actions를 구성하여 테스트를 자동화하고, 탐지를 사용자화하며, GitHub 리포지토리에서 Panther 콘솔로 탐지 파이프라인을 업로드할 수 있습니다. 이 가이드는 다음을 안내합니다:
GitHub Actions를 통한 사용자 정의 워크플로우 생성
사용자 정의 스키마 및 탐지 테스트
스키마 및 탐지를 Panther 콘솔에 업로드
조직의 요구에 맞게 GitHub Actions 워크플로우 사용자화
참조 Panther 콘텐츠용 CI/CD Panther로 CI/CD 워크플로우를 시작하는 방법에 대한 정보는 다음을 참조하세요.
필수 조건
GitHub Actions를 사용하여 Panther 탐지 및 스키마를 관리하려면 다음이 필요합니다:
Panther API 토큰
참조 API 토큰 생성에 대한 이 지침그리고 해당 토큰이 올바른 권한 을(를) 각 명령에 대해 가지고 있는지 확인하세요.
이 API 토큰을
panther_analysis_tool명령에 인수로 전달하여 탐지 업로드/삭제, 사용자 정의 스키마, 저장된 쿼리 등과 같은 작업을 수행합니다. 사용 예시는 이 섹션을 참조하세요.
Panther API 호스트 이름
Panther API 호스트 이름은 다음과 같은 형식입니다:
https://api.<your-panther-instance-name>.runpanther.net/public/graphql
GitHub 비밀(Secrets)에
API_TOKEN이라는 이름으로 추가된 Panther API 토큰 토큰을 Secrets에 추가하려면 다음을 따르세요GitHub 문서: 리포지토리용 암호화된 비밀 생성
이 비밀은 이 문서에서 나중에.
자세한 내용은 Panther 분석 도구
구성
Panther용 GitHub Actions Panther 탐지 리포지토리 사용하기.
1단계: panther-analysis GitHub 리포지토리의 Panther 관리형 탐지 사용
panther-analysis GitHub 리포지토리에서 Panther 관리형 탐지를 사용하는 방법에 대한 문서를 따르세요:
2단계: 새 GitHub 워크플로우 생성 자동화를 설정하려는 GitHub 리포지토리로 이동하세요.

리포지토리 내에서 Actions..

리포지토리 내에서 를 클릭하세요.

새 워크플로우
자체적으로 워크플로우 설정 →다음 페이지에서 기본 파일 이름(main.yml.
)을 설명적인 이름으로 바꾸세요. 예:
panther-workflow.yml
# (Optional) Add `--filter Enabled=true` to command below to only upload Enabled detections
run: pipenv run panther_analysis_tool upload --skip-tests다음 환경 변수의 값을 업데이트해야 합니다:39PANTHER_API_HOSTon line: 다음을 교체하세요
<your-panther>
API_TOKEN을(를) Panther 인스턴스의 공개 GraphQL URL로 바꾸세요. 필수 조건.이 워크플로우는 Panther API 토큰을
이라는 이름으로 GitHub 시크릿에 추가했다고 가정합니다.아직 추가하지 않았다면 다음의 지침을 따르세요원한다면 이 워크플로우가 특정 폴더 내 콘텐츠 업데이트에서만 트리거되도록on.push이라는 이름으로 GitHub 시크릿에 추가했다고 가정합니다.내에 paths.
를 추가할 수 있습니다. 에 대해 자세히 알아보려면
GitHub의 문서
를 참조하세요.
git push.
이렇게 하면 생성한 테스트가 탐지에 대해 실행된 후 테스트에 통과하면 모든 Panther 콘텐츠(룩업 테이블, 데이터 모델 및 탐지)가 업로드됩니다. git push 4단계: 변경 사항 푸시 이라는 이름으로 GitHub 시크릿에 추가했다고 가정합니다. 실행
GitHub Actions 워크플로우가 완료되면 다음 번에
panther_analysis_tool.를 사용하여 워크플로우의
섹션 내 폴더를 변경할 때 다음이 발생합니다:
사용자 정의 탐지는 로 테스트됩니다 성공하면 탐지가 Panther 콘솔로 업로드됩니다. Panther 제공 GitHub 워크플로우 panther-analysis workflows 디렉터리 에는 즉시 사용 가능한 여러 GitHub 워크플로우 가 포함되어 있으며, 리포지토리를 클론
하거나 포크한 후 사용할 수 있습니다.이름에 "(Internal)"이 포함된 워크플로우(예: "
Pre-Release Upload to GA (Internal)
")는 고객 사용을 위한 것이 아닙니다. 자체 리포지토리에서 이러한 워크플로우를 실행하려고 하면 예기치 않은 결과가 발생할 수 있습니다.아래 워크플로우는 새 풀 리퀘스트(PR)가 생성될 때 트리거되도록 구성되어 있습니다:
Lint: 코드가 올바르게 포맷되었고 명백한 보안 취약점이 없음을 보장합니다.
MITRE ATT&CK 매핑 형식 확인: 탐지에 있는 MITRE 매핑의 형식이 유효한지 확인합니다.
Test.: panther_analysis_tool test를 사용하여 탐지 및 글로벌 헬퍼에 대한 모든 단위 테스트를 실행합니다.Validate
: panther_analysis_tool validate를 사용하여 사용자 정의 로그 유형 및 쿼리에서 사용되는 데이터 레이크 테이블 이름의 존재 여부를 포함해 Panther 백엔드에 대해 콘텐츠를 검증합니다..Validate는 PR이 승인된 후에만 실행됩니다. 이는 Panther에 대한 장기 실행 API 요청을 필요로 하므로 PR당 여러 번 실행하기에 적합하지 않기 때문입니다.
Build Docker Image (Deprecated): 향후 워크플로우가 내부에서 실행할 새 도커 컨테이너를 빌드합니다.
다음 워크플로우는 PR 외부에서 트리거됩니다:
Sync Panther Analysis from Upstream: panther-analysis 업스트림 리포지토리의 최신 변경사항을 리포지토리에 추가하는 새 PR을 엽니다. 이 워크플로우를 사용하여 클론하거나 포크한 리포지토리를 Panther 관리형 콘텐츠의 업데이트와 동기화하세요.
이 워크플로우는 매주 수요일 15:00 UTC에 실행되며 수동으로도 트리거할 수 있습니다.
Upload: panther_analysis_tool upload를 사용하여 리포지토리의 전체 콘텐츠를 Panther 인스턴스에 업로드합니다.
Upload 워크플로우의 트리거는 사용자가 구성해야 합니다. 일반적으로 PR이 main에 병합될 때마다 이 워크플로우가 실행되도록 구성하는 것이 권장되지만, 필요에 따라 다를 수 있습니다..선택 사항: 사용자 정의 스키마용 워크플로우 빌드
사용자 정의 스키마를 만드는 경우 다음 YAML 코드를 사용하여 워크플로우에 스키마를 포함하세요:스키마가 포함된 GitHub 워크플로우 YAML
paths:
- 'schemas/**'
# (Optional) Add `--filter Enabled=true` to command below to only upload Enabled detections
run: pipenv run panther_analysis_tool upload --skip-tests다음 환경 변수의 값을 업데이트해야 합니다:79PANTHER_API_HOSTon line: 다음을 교체하세요
라인에서 위치를 업데이트하세요
변경 사항 푸시이제 다음 번에11,44, 및99.<your-panther>
API_TOKEN을(를) Panther 인스턴스의 공개 GraphQL URL로 바꾸세요. 필수 조건.
를 사용하면 다음이 발생합니다:
를 참조하세요.
git push.
사용자 정의 로그 스키마는 git push 4단계: 변경 사항 푸시 이라는 이름으로 GitHub 시크릿에 추가했다고 가정합니다. 실행
pantherlog
로 테스트됩니다.GitHub Actions 워크플로우가 완료되면 다음 번에
panther_analysis_tool.성공하면 스키마와 탐지가 Panther 콘솔로 업로드됩니다.
선택 사항: Panther에서 GitHub 워크플로우 사용자화
원하면 이 워크플로우를 확장하거나 사용자화하여 조직에 더 적합하게 만들 수 있습니다. 다음은 Panther와 함께 자주 사용하는 워크플로우 사용자화 예입니다:
다음에 대해 린팅 수행
.py파일특정 폴더로의 푸시 대신 승인된 PR로부터 트리거되도록 설정합니다.
선택 사항: Dependabot 사용
Dependabot 는 리포지토리의 종속성을 지속적으로 감사하여 보안 위험 및 사용 가능한 업데이트를 확인하는 GitHub에서 널리 사용되는 통합입니다. Panther는 상위 런타임 환경(예: 로 테스트됩니다)을 관리하지만 추가 보안 계층으로 Dependabot을 사용할 수 있습니다. Panther 리포지토리에 Dependabot을 설정하려면 GitHub Dependabot 빠른 시작 가이드.
Dependabot은 종속성을 업데이트하기 위해 PR을 열 수 있습니다. 그러나 Dependabot은 리포지토리의 시크릿에 접근할 수 없습니다. 이는 API 시크릿이 필요한 GitHub 워크플로(예: test 워크플로)가 Dependabot이 연 PR에 대해 실패한다는 의미입니다.
이를 해결하려면 GitHub Dependabot 전용으로 별도의 리포지토리 시크릿을 저장하는 방법에 대한 지침을 따르세요. 이 방법을 사용하면 API_HOST 및 API_TOKEN 을 시크릿으로 추가해야 합니다.
Last updated
Was this helpful?

