프라이빗 클론
Panther가 관리하는 Python 디텍션을 귀하의 CI/CD 워크플로우 내에서 활용하기 위해 사용할 수 있는 한 가지 방법은 panther-analysis.
조직에서 디텍션 모음 및 기타 관련 Panther 구성요소를 비공개로 유지하려는 경우, panther-analysis 의 비공개 복제 저장소가 최선의 선택입니다. 이 모델에서는 로컬 저장소 설정이 내부 콘텐츠에 대한 접근 권한을 제어합니다.
아래에 설명된 대로 비공개 복제 저장소를 구성한 후에는 브랜치를 만들고 풀 리퀘스트를 활용하여 디텍션 모음에 커스터마이징을 반영할 수 있습니다.
저장소의 공개 포크를 만드는 방법에 대한 정보는 공개 포크.
panther-analysis 저장소의 비공개 복제본 구성
다음은 현재 지원되는 기능을 기반으로 권장하는 구성입니다.
GitHub에서 비공개 저장소를 만드세요.
지침은 GitHub 문서: 저장소 만들기. 저장소 가시성을 설정할 때, 비공개(Private).
기본 설정을 유지하세요 - 저장소를 어떤 콘텐츠로도 초기화하지 마세요.
복제 panther-analysis 그리고
git push --mirror를 사용하여 업스트림의 git 콘텐츠와 히스토리로 비공개 복제 저장소를 초기화하세요.gh repo clone panther-labs/panther-analysiscd panther-analysisgit checkout maingit push --mirror https://github.com/your_org/your_private_repo.git저장소의 미러를 유지하는 방법에 대한 자세한 내용은 다음을 참조하세요. GitHub 문서: 저장소 복제하기.
GitHub에서 저장소에 대해 올바른 워크플로 권한을 활성화하세요.
비공개 저장소 내에서 다음으로 이동하세요: 설정 > Actions > 일반.
다음 항목들을 워크플로 권한 이벤트 이름
전환 읽기 및 쓰기 권한 에 대해 선택하세요.
체크 GitHub Actions가 풀 리퀘스트를 생성하고 승인하도록 허용.
를 선택하고 Panther가 설치된 계정 ID를 입력하십시오. "Resource": "<secret ARN>".
로컬에서 비공개 저장소를 복제하고 새 브랜치를 만든 다음 기존 rules/ 디렉터리 내에 로컬 디텍션 콘텐츠를 위한 디렉터리를 생성하세요:
git checkout -b feat/my_first_branchmkdir rules/my_local_rules
샘플 룰을 추가하세요:
에서 templates/에서 example_rule.py 와 example_rule.yml.
이를 rules/my_local_rules/.
에 복사하세요: cp templates/example_rule.* rules/my_local_rules
다음 명령을 실행하세요:
make venv그런 다음make test를 실행하여 로컬 Python 환경을 설정하고 테스트 스위트를 실행하세요.파일에 변경 사항이 없었다면 다음과 유사한 오류가 표시되어야 합니다:
Key 'LogTypes' error: LOG_TYPE_REGEX does not match 'LogType.Name'
이전 단계 후에 나타난 오류를 해결하세요:
를
로그 유형Panther의 알려진 로그 소스(예:)로 변경하세요. AWS.CloudTrail 에서 example_rule.yml를
파일 이름내의 example_rule.yml 에서 example_rule.py.
현재 브랜치에서 변경 사항을 원격에 커밋하세요. (
git rev-parse –abbrev-ref HEAD는 현재 브랜치를 제공하며, 이 값을 직접 제공하도록 선택할 수도 있습니다.)git add rules/my_local_rulesgit commit -m "feat: new example rules"git push origin`git rev-parse --abbrev-ref HEAD`이 명령은 출력에 링크를 제공합니다.
이전 단계의 출력에서 제공된 링크를 사용하여
git push브랜치에 대한 풀 리퀘스트를 생성하세요.풀 리퀘스트를 병합하고 원하면 브랜치를 삭제하세요.
비공개 클론을 업스트림 panther-analysis 업데이트와 동기화 상태로 유지하기
업스트림 변경사항과 동기화를 유지하려면, Sync Panther Analysis from Upstream GitHub Action을 사용하는 것이 권장됩니다. 이 Action은 주기적으로 panther-analysis의 최신 변경사항으로 기본 브랜치에 대한 풀 리퀘스트를 엽니다.
이 Action을 구성하려면:
다음 권한을 가진 GitHub 토큰을 생성하세요:
Administration - ReadContents - Read and writeMetadata - ReadPull Requests - Read and writeWorkflows - Read and write
포크한 저장소에서 다음 이름의 새 시크릿을 추가하세요:
PANTHER_SYNC_UPSTREAM그리고 이전 단계에서 생성한 토큰을 해당 값으로 설정하세요.
이 단계를 건너뛰면, 업스트림 저장소가 .github/workflows 디렉터리 내에 변경 사항이 있을 때마다 Action이 PR을 열지 못하고 실패합니다.
포크를 업스트림 저장소와 처음으로 동기화하여 Action을 처음 트리거하려면, GitHub의 저장소에서 Actions > Sync Panther Analysis from Upstream.
를 선택하고 Panther가 설치된 계정 ID를 입력하십시오. Run Workflow > Run workflow.
Action이 완료되면 워크플로 실행 옆에 녹색 원이 표시됩니다. 변경 사항이 있으면 GitHub Actions가 작성한 새 오픈 풀 리퀘스트가 표시됩니다. 변경 사항이 없으면 "Local repo already synced to latest release."와 유사한 메시지가 표시됩니다.
사용자를 사용할 것이며, Sync Panther Analysis from Upstream Action은 매주 화요일 15:00Z에 크론 스케줄로 실행되도록 구성되어 있습니다. 이 스케줄은
.github/workflows/sync-from-upstream.yml.
의 6번째 줄에서 수정할 수 있습니다.
풀 리퀘스트를 일반 풀 리퀘스트와 동일한 방식으로 기본 브랜치에 병합하세요.
저장소는 병합을 최신 변경사항으로 반영하며, 비공개 저장소와 panther-analysis의 git 히스토리를 모두 확인할 수 있습니다. 병합 충돌 문제에 직면하거나 "all jobs have failed"라는 오류가 표시되면, 다음 문제 해결 문서를 참조하세요:
GitHub Action sync-panther-analysis-from-upstream을 사용할 때 병합 충돌 및 실패한 동기화를 어떻게 해결하나요?
다음 단계 CircleCI 와 저장소를 복제한 후에는 Panther 디텍션을 CI/CD 워크플로우에 통합할 수 있습니다—다음 문서를 참조하세요:.
저장소를 복제한 후에는 Panther 디텍션을 CI/CD 워크플로우에 통합할 수 있습니다—다음 문서를 참조하세요:
GitHub Actions
참조 GitHub Actions를 통한 콘텐츠 관리 을 참조하세요.
고객 기여 콘텐츠
panther-analysis에 콘텐츠를 기여하는 것을 권장하지만, 업스트림으로 풀 리퀘스트를 보내려면 공개 저장소에서만 가능합니다. 비공개 저장소를 사용하고 콘텐츠를 기여하고 싶다면 Panther 지원팀에 문의하세요.
마지막 업데이트
도움이 되었나요?

