
Управление средствами контроля GitHub Advanced Security (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 ....... you can't escape
optional arguments:
-h, --help show this help message and exit
-m MODULE, --module MODULE
ghas, dependabot, secret-scanning, codeql, iac, workflows, ALL
-a ACTION, --action ACTION
enable, disbale, status, alert, deploy, delete
--daily-summary Get the Daily Summary
--mass-action Perform action (enable, deploy, delete) at scale
--slack Post new alert(s) on Slack
--siem Log activities on SIEM
--jira Post new vulnerability ticket on Jira
--jira-ticket JIRATICKET
Jira ticket ID (e.g. PROJECT-123)
Input:
--org ORG Organization Name
-r REPO, --repo REPO Repository Name, ALL
-b BRANCH, --branch BRANCH
Branch Name
--workflow-file WORKFLOW
Workflow File Name
--repo-file REPOFILE Repo File Name

Сначала установите следующие переменные окружения:
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 для получения инструкций.