Управление секретами с GitHub
Подробно изучите безопасное хранение и получение конфиденциальных учётных данных с помощью GitHub Secrets и OpenID Connect (OIDC).
«Управление секретами с GitHub» — бесплатный урок CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CI/CD with GitHub Actions & DevOps Pipelines, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.
Зачем нужно безопасное управление секретами
В любом программном проекте часто требуется использовать конфиденциальные данные, например ключи API, учетные данные базы данных или токены доступа. Хранение этих данных непосредственно в коде или репозитории представляет серьезную угрозу безопасности.
Управление секретами — это практика безопасного хранения и управления такими конфиденциальными данными. Она гарантирует, что доступ к ним получат только авторизованные системы и пользователи, предотвращая несанкционированное раскрытие.
Что такое секреты GitHub
GitHub предоставляет безопасный способ хранения конфиденциальных данных, называемый секретами GitHub. Это зашифрованные переменные среды, которые можно использовать в рабочих процессах GitHub Actions.
- По умолчанию они не записываются в журналы.
- После создания они не отображаются в пользовательском интерфейсе.
- Они доступны только выбранным рабочим процессам.
Это защищает ваши учетные данные от случайного раскрытия.
Настройка секретов репозитория
Секреты можно определять на разных уровнях: репозитория, среды или организации. Чаще всего начинают с секретов репозитория.
Чтобы создать секрет:
- Откройте вкладку Настройки своего репозитория.
- Перейдите в раздел Секреты и переменные > Действия.
- Нажмите Новый секрет репозитория.
Укажите уникальное имя, например API_KEY, и вставьте значение секрета.
Доступ к секретам в рабочих процессах
После определения секрета его можно использовать в файлах рабочего процесса YAML. GitHub Actions автоматически передает секреты в задачи как переменные среды.
Для доступа к ним используется контекст ${{ secrets.SECRET_NAME }}. Этот сценарий имитирует шаг, в котором используется такой секрет. Чтобы запустить его, представьте, что GitHub Actions установил MY_API_KEY как переменную среды.
#!/bin/bash
# This script simulates a workflow step
# where a secret is passed as an environment variable.
echo "Attempting to use an API key..."
# In a real GitHub Action, MY_API_KEY would be
# set by ${{ secrets.MY_API_KEY }} in the workflow YAML.
if [ -z "$MY_API_KEY" ]; then
echo "Error: MY_API_KEY is not set!"
echo "Please define it as a secret in your workflow."
else
echo "Successfully accessed API key (partially shown): ${MY_API_KEY:0:5}..."
fiБолее широкие области действия секретов
Помимо секретов репозитория, GitHub предлагает еще две области действия с более широкими возможностями:
- Секреты организации: доступны нескольким репозиториям внутри организации. Полезны для секретов, общих для многих проектов, например токена развертывания, используемого всей компанией.
- Секреты среды: привязаны к конкретным средам развертывания, например
stagingиproduction. Для них можно настроить правила защиты, например требовать ручного подтверждения перед развертыванием.
Для максимальной безопасности всегда используйте наименьшую необходимую область действия.
Что такое OpenID-подключение (OIDC)
OpenID-подключение (OIDC) — это уровень аутентификации, построенный поверх OAuth 2.0. Это стандарт, позволяющий клиентам проверять личность конечного пользователя на основе аутентификации, выполненной сервером авторизации.
В CI/CD OIDC позволяет рабочим процессам безопасно проходить аутентификацию у облачных провайдеров, например AWS, Azure и GCP, без хранения долгосрочных учетных данных, таких как ключи API, в секретах GitHub.
Как OIDC работает с действиями
GitHub Actions может выступать в роли поставщика OIDC. При запуске рабочего процесса GitHub создает уникальный токен OIDC с коротким сроком действия для конкретной задачи.
Этот токен содержит проверяемые утверждения о рабочем процессе, например репозиторий, ветвь и идентификатор задачи (ID). Затем облачных провайдеров можно настроить так, чтобы они доверяли токенам, выпущенным GitHub, и предоставляли временный доступ на основании этих утверждений.
Ключевые преимущества OIDC
Использование OIDC с GitHub Actions дает существенные преимущества для безопасности:
- Отсутствие долгосрочных учетных данных: вам не нужно хранить статические облачные ключи API в секретах GitHub.
- Снижение риска: токены с коротким сроком действия сводят к минимуму последствия возможной компрометации токена.
- Детализированный доступ: облачные роли можно сопоставить с конкретными условиями рабочего процесса, например разрешить развертывание только из ветви
main. - Аудит: проще отслеживать, кто и что сделал, поскольку идентичность связана с запуском рабочего процесса.
Интеграция OIDC с облаком
Чтобы использовать OIDC, необходимо настроить облачного провайдера, например AWS IAM, Azure AD или GCP IAM, так, чтобы он доверял издателю OIDC от GitHub.
Обычно это включает следующие действия:
- Настройка поставщика удостоверений (IdP) в вашей облачной учетной записи.
- Определение роли/политики, предоставляющей конкретные разрешения.
- Добавление «политики доверия» к роли, позволяющей токенам OIDC GitHub использовать эту роль, часто с условиями на основе утверждений токена, например только для определенного репозитория.
Затем рабочий процесс запрашивает токен и использует его для аутентификации.
Быстрая проверка: безопасный доступ
Вы узнали о секретах GitHub для хранения конфиденциальных данных и об OpenID-подключении для аутентификации в облаке без учетных данных.
Какие из следующих утверждений об управлении секретами GitHub Actions являются TRUE?
Итоги: защита учетных данных
Отличная работа! Вы узнали, как безопасно управлять конфиденциальными данными в конвейерах CI/CD.
- Секреты GitHub обеспечивают зашифрованное хранение ключей API и токенов в репозитории, организации или конкретных средах.
- OpenID-подключение (OIDC) обеспечивает еще более безопасную аутентификацию у облачных провайдеров с помощью проверяемых токенов с коротким сроком действия вместо статических учетных данных.
Эти практики необходимы для создания надежных и безопасных конвейеров DevOps.
Часто задаваемые вопросы
Урок «Управление секретами с GitHub» бесплатный?
Да — полный текст урока «Управление секретами с GitHub» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CI/CD with GitHub Actions & DevOps Pipelines, подпишись на CoddyKit PRO. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.
Чему я научусь в уроке «Управление секретами с GitHub»?
Подробно изучите безопасное хранение и получение конфиденциальных учётных данных с помощью GitHub Secrets и OpenID Connect (OIDC). Ты практикуешь CI/CD with GitHub Actions & DevOps Pipelines с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CI/CD with GitHub Actions & DevOps Pipelines?
Предыдущий опыт не требуется. CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Управление секретами с GitHub»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CI/CD with GitHub Actions & DevOps Pipelines?
Да. Каждый урок CI/CD with GitHub Actions & DevOps Pipelines включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Лучшие практики безопасности в CI/CD
- Управление секретами с GitHub
- Статическое тестирование безопасности приложений (SAST)
- Безопасность зависимостей и цепочки поставок (SCA)