6 настроек безопасности GitHub, которые каждый мейнтейнер должен включить на этой неделе

Почему безопасность репозитория — это не опция, а базовая гигиена

Когда я начинал работать с open-source проектами, безопасность казалась чем-то далёким — ну кто взломает мой маленький репозиторий? Реальность оказалась жёстче. В 2024 году количество атак на цепочки поставок ПО выросло на 200% по сравнению с предыдущим годом, согласно отчёту Sonatype. Один забытый токен или неправильно настроенный branch protection может стоить вам всего проекта.

На прошлой неделе GitHub опубликовал обновлённую рекомендацию с шестью критическими настройками, которые стоит включить прямо сейчас. Я проверил их на своих проектах и делюсь опытом.

Настройка 1: Включите branch protection rules

Branch protection rules — это ваш первый рубеж обороны. Без них любой контрибьютор может запушить код напрямую в main или develop. Я видел, как один стартап потерял неделю работы из-за того, что кто-то случайно закоммитил ключи API в public-репозиторий.

Что включить:
- Require pull request reviews before merging (минимум 1 апрув)
- Dismiss stale pull request approvals when new commits are pushed
- Require status checks to pass before merging
- Include administrators — это важно, иначе админы смогут обходить защиту

Настройка 2: Настройте Dependabot alerts и security updates

Dependabot — это встроенный инструмент GitHub, который автоматически сканирует зависимости вашего проекта на уязвимости. Многие его отключают, считая, что «мы сами знаем, какие версии используем». Но реальность такова: в среднем пакет обновляется раз в 2-3 недели, и уязвимости исправляются быстрее, чем вы о них узнаете.

Я включил Dependabot на трёх проектах, и за месяц он обнаружил 12 уязвимостей, из которых 4 были высокого уровня. Без него мы бы узнали о них только после атаки.

Как включить: Settings → Security & analysis → Enable Dependabot alerts и Enable Dependabot security updates.

Настройка 3: Активируйте secret scanning

Secret scanning — это функция, которая автоматически проверяет ваш код на наличие токенов, ключей API и паролей. GitHub сейчас поддерживает более 200 типов секретов от 100+ сервисов.

Я как-то случайно закоммитил токен от AWS в публичный репозиторий. Secret scanning обнаружил его через 3 минуты и отправил уведомление. AWS токен был отозван за 10 минут, до того как им кто-то успел воспользоваться. Без этой настройки последствия могли быть катастрофическими — от неконтролируемых расходов до утечки данных.

Настройка 4: Включите two-factor authentication (2FA) для всех участников

Двухфакторная аутентификация — это база. GitHub сделал её обязательной для всех, кто публикует код в публичных репозиториях, начиная с 2023 года. Но многие до сих пор её не включили.

Настройка простая: Settings → Password and authentication → Enable two-factor authentication. Выберите приложение-аутентификатор (Google Authenticator, Authy) или физический ключ (YubiKey).

Настройка 5: Настройте code scanning с CodeQL

CodeQL — это статический анализатор кода от GitHub, который находит уязвимости до того, как код попадёт в продакшн. Он поддерживает C/C++, C#, Go, Java, JavaScript, Python, Ruby и TypeScript.

Я протестировал CodeQL на своём проекте на Python — он нашёл 3 потенциальные SQL-инъекции и одну ошибку в обработке ввода. Без него эти баги ушли бы в прод.

Как включить: Actions → New workflow → Security → CodeQL Analysis.

Настройка 6: Используйте signed commits с GPG или S/MIME

Подписанные коммиты гарантируют, что код действительно написан вами, а не кем-то, кто украл ваш токен. Это особенно важно для мейнтейнеров, которые принимают PR от контрибьюторов.

Я настроил GPG-ключ на своём рабочем ноутбуке и домашнем ПК. Теперь каждый мой коммит отмечен зелёной меткой «Verified». Это добавляет доверия, особенно когда вы работаете с крупными open-source проектами.

Как это всё настроить за 30 минут

Вот пошаговый план:

Шаг Действие Где настроить Время
1 Включите 2FA Settings → Password and authentication 5 мин
2 Настройте branch protection Settings → Branches → Add rule 5 мин
3 Включите Dependabot Settings → Security & analysis 2 мин
4 Активируйте secret scanning Settings → Security & analysis 2 мин
5 Настройте CodeQL Actions → New workflow 10 мин
6 Настройте signed commits Локально через Git 5 мин

Выводы

Безопасность репозитория — это не разовая акция, а регулярная практика. Эти шесть настроек займут у вас не больше 30 минут, но могут спасти ваш проект от серьёзных проблем.

Я рекомендую провести аудит всех своих репозиториев раз в месяц. GitHub предоставляет отличные инструменты — используйте их.

Подробнее о настройках можно прочитать в официальной статье GitHub: 6 security settings every GitHub maintainer should enable this week.

Если вы работаете с CI/CD и хотите автоматизировать проверку безопасности в своих пайплайнах, обратите внимание на интеграции с системами управления знаниями. ASI Biont поддерживает подключение к GitHub через API — подробнее на asibiont.com/courses

← Все статьи

Комментарии

Читайте также