Ответ
GitHub Actions обеспечивает безопасный доступ к секретам через встроенную систему управления секретами. Секреты хранятся зашифрованными и никогда не выводятся в открытом виде в логах выполнения workflow — GitHub автоматически маскирует их.
Механизм работы:
- Хранение: Секреты (
API_KEY,DB_PASSWORD,AWS_ACCESS_KEY_ID) настраиваются в настройках репозитория (Settings > Secrets and variables > Actions) или на уровне организации/окружения (environment). - Доступ в Workflow: Секреты передаются в job через контекст
secretsи могут быть установлены как переменные окружения или входные параметры для действий. - Безопасность: Секреты не доступны для workflow, запущенных из форков репозитория (если не настроено иначе).
Практические примеры использования:
-
Как переменная окружения:
jobs: deploy: runs-on: ubuntu-latest steps: - name: Deploy to Production env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} run: | # Ключи доступны как env-переменные, их значения маскируются в логах ./deploy-script.sh -
Как входной параметр для официального действия:
- name: Login to DockerHub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} -
Использование секретов окружения (environment): Для доступа к секретам, привязанным к конкретному окружению (например,
production), job должен явно ссылаться на это окружение:jobs: deploy: environment: production # Секреты этого окружения станут доступны steps: - run: echo "Deploying to ${{ vars.ENV_NAME }}"В наших пайплайнах это позволяет безопасно выполнять развертывание, аутентификацию в облачных провайдерах и публикацию пакетов без хранения чувствительных данных в коде репозитория.