Ответ
GitHub предоставляет несколько изолированных областей для хранения ключей и секретов в зависимости от их назначения и области видимости.
1. SSH Keys (для аутентификации пользователя):
Расположение: Settings (профиля) -> SSH and GPG Keys.
Здесь добавляются публичные SSH-ключи для доступа ко всем репозиториям, к которым у пользователя есть права. Приватный ключ всегда остаётся на локальной машине.
2. Deploy Keys (для доступа репозитория к репозиторию):
Расположение: Settings репозитория -> Deploy Keys.
Это SSH-ключи, которые дают доступ только к одному конкретному репозиторию. Часто используются серверами или CI-системами для клонирования кода. Могут быть read-only или read-write.
3. Secrets and Variables (для GitHub Actions):
Расположение: Settings репозитория (или организации) -> Secrets and variables -> Actions.
- Secrets: Зашифрованные значения (токены API, пароли), которые подставляются в workflow как переменные окружения. Не логгируются.
- Variables: Несекретные конфигурационные значения (например, версия runtime, URL тестового окружения).
Пример использования секрета в workflow:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy to Server
env:
DEPLOY_TOKEN: ${{ secrets.SERVER_ACCESS_TOKEN }}
run: |
curl -X POST -H "Authorization: Bearer $DEPLOY_TOKEN" https://api.example.com/deploy
Важно: Приватные ключи и чувствительные данные никогда не должны попадать в сам репозиторий (включая историю коммитов).