Секреты и переменные

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

GitHub Actions предоставляет два отдельных пространства имён конфигурации: контекст secrets для зашифрованных, скрытых значений — API-токенов и паролей — и контекст vars для открытого текста, такого как флаги функций, имена регионов или профили сборки. Оба хранятся на уровне репозитория, окружения или организации и читаются в workflow через ${{ secrets.X }} и ${{ vars.Y }}, но только секреты маскируются в логах и недоступны в pull request из форков по умолчанию. Переменные позволяют избежать жёсткого кодирования нечувствительных констант в YAML, синхронизировать их между workflow и переопределять для каждого окружения. Правильное разграничение секретов и переменных — секреты для учётных данных, vars для конфигурации — делает каждый CI/CD-workflow аудитируемым.

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

Секреты и переменные: repository secrets (${{ secrets.X }} — маскируются в логах, доступны workflow), environment secrets (per-environment scope с required reviewers), organization secrets (общие между репо с выбором), variables (${{ vars.X }} — не маскируются, plain-конфиг). Автопровиженный GITHUB_TOKEN — short-lived токен с scoped-правами для workflow. OIDC-токены позволяют cloud-auth без long-lived ключей.

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

Environment secrets + required reviewers — для production-деплоев: ручной approval-гейт. OIDC — для cloud-auth (AWS, GCP, Yandex Cloud) вместо long-lived ключей, где поддерживается. Никогда не эхо секретов в логи (echo $secret выводит ***, но секрет утёк, если что-то нормализует whitespace иначе).

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

Ловушки Секреты и переменные: секреты в title PR или commit messages (там нет авто-маскировки); используют personal access token (PAT), где хватит GITHUB_TOKEN (PAT имеет полные права юзера — blast radius при утечке хуже); environment без required reviewers, но называется "production" (ложная безопасность).

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

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