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 분석 도구

구성

Panther용 GitHub Actions Panther 탐지 리포지토리 사용하기.

1단계: panther-analysis GitHub 리포지토리의 Panther 관리형 탐지 사용

  1. panther-analysis GitHub 리포지토리에서 Panther 관리형 탐지를 사용하는 방법에 대한 문서를 따르세요:

  2. 2단계: 새 GitHub 워크플로우 생성 자동화를 설정하려는 GitHub 리포지토리로 이동하세요. The image shows the panther-analysis repo on Github. There is a red circle around the "Actions" tab.

  3. 리포지토리 내에서 Actions.. The image shows the Panther-analysis repo in Github. There is a red circle around the "New Workflow" button on the left.

  4. 리포지토리 내에서 를 클릭하세요. The image shows the panther-analysis repo on Github. The "Actions" tab is open. Under "Choose a workflow," there is a red circle around "Set up a workflow yourself."

  5. 새 워크플로우자체적으로 워크플로우 설정 →다음 페이지에서 기본 파일 이름( main.yml.

)을 설명적인 이름으로 바꾸세요. 예:

  • panther-workflow.yml

chevron-right3단계: 탐지 테스트 및 데이터 업로드용 워크플로우 구성hashtag
  • # (Optional) Add `--filter Enabled=true` to command below to only upload Enabled detections

    • run: pipenv run panther_analysis_tool upload --skip-tests 다음 환경 변수의 값을 업데이트해야 합니다: 39PANTHER_API_HOST on line : 다음을 교체하세요

  • <your-panther> API_TOKEN을(를) Panther 인스턴스의 공개 GraphQL URL로 바꾸세요. 필수 조건.

  • 이 워크플로우는 Panther API 토큰을 이라는 이름으로 GitHub 시크릿에 추가했다고 가정합니다. 아직 추가하지 않았다면 다음의 지침을 따르세요 원한다면 이 워크플로우가 특정 폴더 내 콘텐츠 업데이트에서만 트리거되도록on.push 이라는 이름으로 GitHub 시크릿에 추가했다고 가정합니다. 내에 pathsarrow-up-right.

를 추가할 수 있습니다. 에 대해 자세히 알아보려면

GitHub의 문서

  • 를 참조하세요. git push.

이렇게 하면 생성한 테스트가 탐지에 대해 실행된 후 테스트에 통과하면 모든 Panther 콘텐츠(룩업 테이블, 데이터 모델 및 탐지)가 업로드됩니다. git push 4단계: 변경 사항 푸시 이라는 이름으로 GitHub 시크릿에 추가했다고 가정합니다. 실행

  • GitHub Actions 워크플로우가 완료되면 다음 번에 panther_analysis_tool.

  • 를 사용하여 워크플로우의

섹션 내 폴더를 변경할 때 다음이 발생합니다:

사용자 정의 탐지는 로 테스트됩니다 성공하면 탐지가 Panther 콘솔로 업로드됩니다.arrow-up-right Panther 제공 GitHub 워크플로우 panther-analysisarrow-up-right workflows 디렉터리 에는 즉시 사용 가능한 여러 GitHub 워크플로우 가 포함되어 있으며, 리포지토리를 클론

circle-exclamation

Pre-Release Upload to GA (Internal)

다음 워크플로우는 PR 외부에서 트리거됩니다:

paths:

- 'schemas/**'

chevron-rightdownload_pantherlog_tool:hashtag
  • # (Optional) Add `--filter Enabled=true` to command below to only upload Enabled detections

    • run: pipenv run panther_analysis_tool upload --skip-tests 다음 환경 변수의 값을 업데이트해야 합니다: 79PANTHER_API_HOST on 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로부터 트리거되도록 설정합니다.

  • 최신 태그로 로 테스트됩니다arrow-up-right 리포지토리를 포크한 경우, 포크 동기화arrow-up-right 가 Panther 탐지를 최신으로 유지하는 데 어떻게 도움이 되는지 알아보세요. 태그별로 주간 동기화를 권장합니다.

circle-info

GitHub 워크플로우에 대한 자세한 내용은 다음을 참조하세요 pathsarrow-up-right.

선택 사항: Dependabot 사용

Dependabotarrow-up-right 는 리포지토리의 종속성을 지속적으로 감사하여 보안 위험 및 사용 가능한 업데이트를 확인하는 GitHub에서 널리 사용되는 통합입니다. Panther는 상위 런타임 환경(예: 로 테스트됩니다arrow-up-right)을 관리하지만 추가 보안 계층으로 Dependabot을 사용할 수 있습니다. Panther 리포지토리에 Dependabot을 설정하려면 GitHub Dependabot 빠른 시작 가이드arrow-up-right.

Dependabot은 종속성을 업데이트하기 위해 PR을 열 수 있습니다. 그러나 Dependabot은 리포지토리의 시크릿에 접근할 수 없습니다. 이는 API 시크릿이 필요한 GitHub 워크플로(예: testarrow-up-right 워크플로)가 Dependabot이 연 PR에 대해 실패한다는 의미입니다.

이를 해결하려면 GitHub Dependabot 전용으로 별도의 리포지토리 시크릿을 저장하는 방법에 대한 지침arrow-up-right을 따르세요. 이 방법을 사용하면 API_HOSTAPI_TOKEN 을 시크릿으로 추가해야 합니다.

Last updated

Was this helpful?