secrets. контекст
Тема дорожной карты · GitHub Actions
Контекст secrets в GitHub Actions представляет собой пространство имён, которое позволяет использовать зашифрованные значения в workflow через выражения вида ${{ secrets.NAME }}. Это включает секреты репозитория, окружения, организации и автоматически предоставляемый GITHUB_TOKEN. Runner вводит разрешённое значение при запуске задания, скрывает его из логов с помощью фильтра маскировки и отказывается вычислять контекст secrets в workflow из форков, если это не предусмотрено через окружения. Разрешение секретов следует цепочке приоритетов — окружение > репозиторий > организация, — что позволяет переопределять общие значения для конкретных целей деплоя. Использование контекста secrets как единственного санкционированного способа передачи учётных данных через CI/CD-пайплайн позволяет держать токены вне исходного кода и логов шагов, обеспечивая безопасность и конфиденциальность.
Как это работает
Контекст secrets включает в себя секреты репозитория (${{ secrets.X }}), которые маскируются в логах и доступны для использования в workflow. Также существуют секреты окружения (per-environment scope с необходимыми reviewer'ами), а также общие секреты организации, которые доступны для всех репозиториев с возможностью выбора. В дополнение к этим секретам используются переменные (${{ vars.X }}), которые не маскируются и являются частью простого конфигурационного файла. Автопровиженный GITHUB_TOKEN представляет собой временный токен с ограниченными правами для выполнения задач workflow. OIDC-токены позволяют использовать облачную аутентификацию без необходимости хранения долгоживущих ключей, если это поддерживается.
Когда применять
Секреты окружения и необходимые reviewer'ы полезны для production-деплоев, где требуется ручное подтверждение. OIDC-токены используются для облачной аутентификации (AWS, GCP, Yandex Cloud), где поддерживаются. Никогда не следует эховать секреты в логи, так как это может привести к утечке данных, даже если секреты маскируются (echo $secret выводит ***, но секрет утечка, если что-то нормализует whitespace иначе).
Типичные ошибки
Типичные ошибки при использовании контекста secrets включают хранение секретов в заголовках PR или сообщениях коммитов, где нет автоматической маскировки. Также часто используются персональные токены доступа (PAT), хотя для многих задач достаточно использовать GITHUB_TOKEN, который имеет ограниченные права. Ошибка также может заключаться в использовании окружения без необходимых reviewer'ов, которое называется "production", что создаёт ложное чувство безопасности.