Least privilege

Тема дорожной карты · GitHub Actions

Применение принципа наименьших привилегий в GitHub Actions означает предоставление каждому job workflow только минимальных прав токена GitHub, необходимых для его конкретных задач, снижая ущерб в случае компрометации шага пайплайна или внедрения вредоносного action. Workflow в GitHub Actions выполняются с автоматически генерируемым GITHUB_TOKEN, чьи права по умолчанию можно ограничить на уровне всей организации, установив в настройках организации значение read-all, а затем выборочно расширять на уровне workflow или job через ключ permissions: — например, contents: read для job сборки и packages: write только для job, публикующего образ контейнера. Ключ permissions: принимает области видимости actions, contents, id-token, issues, packages, pull-requests и statuses, каждую из которых можно задать как read, write или none, обеспечивая детальный контроль над тем, что токен runner может делать в GitHub API во время запуска CI/CD-пайплайна. Ограничение прав токена в GitHub Actions особенно важно для workflow, запускаемых событием pull_request из форкнутых репозиториев: runner выполняет недоверенный код, и широкие права GITHUB_TOKEN могут быть использованы для записи в ветки или чтения чувствительных данных репозитория. Сочетание permissions: с наименьшими привилегиями и ссылок uses:, закреплённых на SHA, вместе с автоматизацией обновлений через Dependabot и регулярными проверками журнала аудита образует комплексный базовый уровень безопасности для корпоративной автоматизации workflow в GitHub Actions.

Как это работает

Least privilege: пиньте actions по SHA (не тегу), least-privilege permissions, OIDC для cloud-auth, environment + required reviewers для production, concurrency cancel для старых запусков, быстрый фидбек (smoke + lint на каждый PR, полный suite после merge), reusable workflows для shared-пайплайнов, branch protection с обязательными checks, аудит third-party actions до добавления. Workflow-файлы — это код; ревьюьте как application-код.

Когда применять

Аудитьте .github/workflows/ раз в квартал — actions копятся, permissions расползаются, секреты множатся. pinact или похожие тулы — для SHA-пина actions массово. concurrency: — на длинные workflows для экономии compute. act (nektos/act) — для локального запуска workflows без сжигания квоты.

Типичные ошибки

Ловушки Least privilege: бесконечное доверие издателям actions (malicious-обновление популярного крадёт все секреты — пиньте по SHA); workflow-файлы превращаются в junk drawer "мы продолжали добавлять"; нет плана для ротации утёкших секретов (должны быть leak detection + ротация-playbook).

Связанные понятия

Полезные ресурсы