
대규모로 GitHub 고급 보안(GHAS) 컨트롤 관리하기
Appsec 제어를 대규모로 구현하고 모니터링합니다.
$ git clone [email protected]:mf-labs/witcher.git
$ cd witcher
$ npm i
$ git clone [email protected]:mf-labs/witcher.git
$ cd witcher
$ docker build -t witcher .
# Docker 이미지 실행
$ docker run -e GITHUB_TOKEN=$GITHUB_TOKEN -e ORG=$ORG witcher -a status -m ghas -r offsec-sast-testing
➜ witcher git:(master) node witcher.js -h
usage: witcher.js [-h] -m MODULE -a ACTION [--daily-summary] [--mass-action] [--slack] [--siem] [--jira]
[--jira-ticket JIRATICKET] [--org ORG] [-r REPO] [-b BRANCH]
[--workflow-file WORKFLOW] [--repo-file REPOFILE]
witcher ....... 당신은 도망칠 수 없습니다
선택적 인자:
-h, --help 도움말 메시지를 표시하고 종료합니다
-m MODULE, --module MODULE
ghas, dependabot, secret-scanning, codeql, iac, workflows, ALL
-a ACTION, --action ACTION
enable, disbale, status, alert, deploy, delete
--daily-summary 일일 요약 가져오기
--mass-action 대규모로 작업 수행 (enable, deploy, delete)
--slack Slack에 새 알림 게시
--siem SIEM에 활동 기록
--jira Jira에 새 취약점 티켓 게시
--jira-ticket JIRATICKET
Jira 티켓 ID (예: PROJECT-123)
입력:
--org ORG 조직 이름
-r REPO, --repo REPO 저장소 이름, ALL
-b BRANCH, --branch BRANCH
브랜치 이름
--workflow-file WORKFLOW
워크플로 파일 이름
--repo-file REPOFILE 저장소 파일 이름

먼저 다음 환경 변수를 설정하세요
export GITHUB_TOKEN=YOUR_GITHUB_TOKEN
export GITHUB_USER=YOUR_GITHUB_USERNAME
export ORG=YOUR_GITHUB_ORGANIZATION
# Slack 설정 (선택 사항)
export SLACK_BOT_TOKEN
export SLACK_SIGNING_SECRET
export SLACK_CHANNEL
# SIEM 데이터 전송 (선택 사항)
export SERVERLESS_APP_URL
# Jira 티켓 생성 (선택 사항)
export JIRA_API_TOKEN
export JIRA_EMAIL
export JIRA_URL
export JIRA_PROJECT
export JIRA_ISSUE_TYPE
github/data/exclusion.json 파일에 Core Repositories / GHAS에서 제외된 저장소 목록을 업데이트하세요.
# GHAS가 비활성화된 저장소 목록
$ node witcher.js -m ghas -a status --repo All
# 특정 저장소에 GHAS 활성화
$ node witcher.js -m ghas -a enable --repo <repo-name>
# 특정 저장소에 GHAS 비활성화
$ node witcher.js -m ghas -a disable --repo <repo-name>
# 특정 저장소의 GHAS 상태 확인
$ node witcher.js -m ghas -a status --repo <repo-name>
# 최신 코드 스캐닝 취약점 가져오기
$ node witcher.js -m codeql -a alert --slack // --slack을 추가하면 Slack에 게시
# 대규모 작업
$ node witcher.js --mass-action -a enable -m ghas --repo-file mass_action.txt --jira-ticket PROJECT-123

# 일일 요약 실행
$ node witcher.js --daily-summary -m ALL -a status --slack --jira
# 일일 요약에는 다음 확인이 포함됩니다:
# 1. 모든 저장소의 GHAS 상태
# 2. 모든 저장소의 Secret Scanning 상태
# 3. Dependabot 상태 확인
# 4. 일시 중지된 Dependabot 확인
# 5. 적용 가능한 저장소의 Code Scanning 상태
# 6. 적용 가능한 저장소의 IaC Scanning 상태
# 7. 새로운 취약점에 대한 알림 확인
# 8. 일일 요약을 SIEM에 기록하고 Slack에 게시
- 모든 공개 저장소는 witcher에서 제외됩니다.
- 모든 보관된 저장소는 witcher에서 제외됩니다.
- 모든 폐기된 저장소는 witcher에서 제외됩니다.
이 프로젝트는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다.
Copyright (c) 2025 Moonfare.
프로젝트를 자유롭게 사용, 수정 및 배포할 수 있으며, Moonfare에 대한 적절한 저작자 표시를 포함해야 합니다.
프로젝트에 기여하고 싶다면, CONTRIBUTING.md를 참조하세요.