1. Конфиденциальные данные
Никогда не храните учетные данные в виде кода / конфигурации в GitHub.
Некоторые хорошие практики:
- Блокируйте конфиденциальные данные, передаваемые в GitHub с помощью git-secrets или им подобных, в качестве git pre-commit hook.
- Разбейте сборку, используя те же инструменты.
- Аудит скрытых secret с помощью GitRob или TruffleHog.
- Используйте переменные ENV для секретов в CI / CD и secret менеджеры, как Vault в продуктиве.
2. Удаление конфиденциальных данных
Если конфиденциальные данные сделаны для репо:
- Измените токены и пароли.
- Удалить информацию и очистить историю GitHub (принудительная перезапись истории).
- Оцените влияние утечки частной информации.
3. Контроль доступа
Неудачи в безопасности часто происходят с людьми, забывающими про безопасность.
Используйте следующие меры:
- Рекомендовано двухфакторная аутентификация для всех ваших учетных записей GitHub.
- Никогда не позволяйте пользователям делиться учетными записями / паролями GitHub.
- Любые ноутбуки / устройства с доступом к вашему исходному коду должны быть должным образом защищены.
- Не забывайте отозвать доступ у пользователей, которые больше не работают с вами.
- Управляйте доступом команды. Предоставляйте только необходимый доступ для работы, не более.
4. Добавьте файл SECURITY.md
Вы должны включить файл SECURITY.md, который содержит информацию о безопасности вашего проекта. Он должен содержать:
Политика раскрытия информации.
Определите порядок действий репортера, который обнаружит проблему безопасности, чтобы полностью раскрыть проблему, включая информацию о том, с кем связаться и как. Подумайте об настройке отправки уведомления по электронной почте «security @».
Политика обновления безопасности.
Определите, как вы собираетесь уведомлять пользователей о новых уязвимостях безопасности по мере их обнаружения.
Конфигурация, связанная с безопасностью.
Пользователи должны учитывать настройки, которые могут повлиять на состояние безопасности при развертывании этого проекта, такие как HTTPS, авторизация и многие другие.
Известные пробелы в безопасности и будущие улучшения.
Улучшения безопасности, которые вы еще не применили.
Проинформируйте пользователей о том, что эти меры безопасности отсутствуют, и, возможно, предложите внести свой вклад в реализацию!
Примеры файлов SECURITY.md можно найти в Apache Storm и TensorFlow.
5. GitHub Apps
Помните, что эти приложения написаны сторонними разработчиками, а не GitHub. Проверка:
- Права доступа к приложению.
- Автор / организация авторитет.
- Какая безопасность приложения — их нарушение дает злоумышленникам доступ к вашему коду!
6. Добавить тестирование безопасности в PRs
Используйте GitHub hooks, чтобы убедиться, что ваши PR не содержат новых уязвимостей
- SonarCloud — тестирование качества кода.
- CodeClimate — автоматизированная проверка кода.
- Snuk — Зависимость vuln тестирования.
7. Используйте правильное предложение GitHub
Если вы не хотите, чтобы кто-либо имел доступ к вашему коду (даже GitHub), воспользуйтесь предложением GitHub Enterprise.
8. Изменяйте ключи SSH и токены личного доступа
Доступ к GitHub обычно осуществляется с использованием ключей SSH или личных токенов пользователя (вместо пароля, потому что вы включили 2FA!). Но что произойдет, если эти токены украдены, а вы не знали?
Периодически обновляйте ключи и токены, уменьшая любой ущерб, вызванный утечкой ключей.
9. Создавайте новые проекты думая о безопасности
Создавая любой проект, развивайте его как проект с открытым исходным кодом. Не пускайте безопасность на самотек. Вы можете:
- Писать более осторожно, когда вы выполняете push code/date, имейте ввиду, что кто-то их увидет
- Найти его просто, если вы решите открыть исходный код проекта.
10. Импорт проектов
Прежде чем импортировать проект в общедоступное хранилище GitHub, полностью проверьте историю на наличие конфиденциальных данных и удалите ее перед добавлением в GitHub.