Бретт Кэннон: Как безопасно пу... Заметка
Planet Python на русском

Бретт Кэннон: Как безопасно публиковать на PyPI с помощью GitHub Actions

Недавние инциденты безопасности, связанные с рабочими процессами GitHub Actions, подчеркивают его потенциальную уязвимость в процессах публикации. В этой статье предлагаются три стратегии смягчения последствий для безопасной публикации в PyPI с использованием GitHub Actions. Подчеркивается, что советы касаются только публикации, а не сборки, и рекомендуется использовать отдельные рабочие процессы для каждого.Первый шаг — использовать инструмент zizmor для выявления и исправления небезопасных настроек по умолчанию в ваших рабочих процессах GitHub Actions. Это включает запуск zizmor для автоматического исправления проблем и ручное устранение любых оставшихся проблем. Три распространенные проблемы, на которые указывает zizmor, — это слишком широкие разрешения по умолчанию, сохранение учетных данных после checkout и отсутствие привязки действий к конкретным хэшам коммитов.Для устранения широких разрешений установите глобальные разрешения в пустые, а затем явно укажите разрешения на уровне задания. Для действий checkout установите persist-credentials в false, чтобы предотвратить утечку учетных данных. Привязка действий к хэшам коммитов, а не к тегам, предотвращает компрометацию через вредоносные обновления кода для этих тегов. Инструменты, такие как gha-update, zizmor или Pinact, могут помочь автоматизировать этот процесс привязки.Вторая ключевая стратегия — интегрировать zizmor в ваш конвейер CI. Это позволяет сообщать о любых проблемах безопасности как о результатах сканирования частного кода, предоставляя контрольный список для постепенного устранения. Третий и последний рекомендуемый шаг — внедрить Trusted Publishing для PyPI. Это устраняет необходимость управления токенами API и использует инфраструктуру безопасности GitHub.При настройке Trusted Publishing крайне важно настроить среду GitHub. В этой среде требование рецензентов для рабочих процессов публикации добавляет важный этап утверждения. Этот процесс утверждения, даже если это просто ваше собственное одобрение, защищает от случайного или злонамеренного запуска релизов. Эти три шага значительно повышают безопасность публикации в PyPI через GitHub Actions.
CdXz5zHNQW_Sp7hMh7V4c.png