Лучшие практики безопасности в CI/CD
Изучите распространённые уязвимости в конвейерах и лучшие практики снижения рисков на всём протяжении жизненного цикла разработки.
«Лучшие практики безопасности в CI/CD» — бесплатный урок CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CI/CD with GitHub Actions & DevOps Pipelines, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.
Почему важна безопасность CI/CD
В современной разработке программного обеспечения конвейеры CI/CD имеют решающее значение. Они автоматизируют сборку, тестирование и развертывание вашего кода.
Но большие возможности влекут за собой большую ответственность! Защита этих конвейеров необходима, чтобы уберечь ваш код, данные и инфраструктуру от вредоносных атак и случайных уязвимостей.
Выявление уязвимостей конвейера
Прежде чем заниматься защитой, нужно понять, от каких угроз мы защищаемся. Конвейеры CI/CD могут быть уязвимы для нескольких типов атак:
- Скомпрометированные учетные данные: украденные ключи API или токены.
- Вредоносные зависимости: использование библиотек с известными уязвимостями.
- Небезопасные конфигурации: неправильно настроенные средства управления доступом или шаги сборки.
- Атаки на цепочку поставок: вмешательство непосредственно в процесс сборки.
Применение доступа с минимальными привилегиями
Принцип минимальных привилегий (PoLP) означает, что пользователям и автоматизированным процессам, например задачам CI/CD, предоставляются только минимальные разрешения, необходимые для выполнения их задач, и не более того.
Это ограничивает потенциальный ущерб, если учетные данные или задача будут скомпрометированы. В GitHub Actions определяйте конкретные разрешения для каждой задачи.
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read # Only read access to repo code
packages: write # Only write to package registry
id-token: write # Needed for OIDC authentication
steps:
- uses: actions/checkout@v4
- run: echo "Build logic here"Защита кода и зависимостей
Исходный код — сердце вашего приложения. Убедитесь, что он защищен с самого начала.
- Проверка кода: проверка коллегами помогает выявить потенциальные уязвимости.
- Статический анализ: используйте инструменты для поиска уязвимостей в коде, хотя специализированному SAST будет посвящен один из следующих уроков.
- Проверка зависимостей: регулярно проверяйте сторонние библиотеки на наличие известных уязвимостей.
Управление сторонними зависимостями
Большинство проектов зависят от библиотек с открытым исходным кодом. Несмотря на широкие возможности, при неосторожном управлении они могут создавать уязвимости.
- Используйте инструмент Scanner: интегрируйте такие средства, как Dependabot, чтобы автоматически проверять наличие известных уязвимостей.
- Фиксируйте версии зависимостей: указывайте точные версии зависимостей, чтобы избежать неожиданных изменений.
- Регулярно обновляйте зависимости: поддерживайте зависимости в актуальном состоянии, чтобы получать исправления безопасности.
Укрепление среды сборки
Среда, в которой собирается и тестируется ваш код, должна быть максимально защищенной. Представьте ее как чистую комнату для вашего программного обеспечения.
- Эфемерные исполнители: используйте свежие изолированные среды для каждой задачи. Исполнители, размещенные на GitHub, по умолчанию являются эфемерными.
- Минимальный набор инструментов: устанавливайте только необходимые инструменты, чтобы уменьшить поверхность атаки.
- Безопасные базовые образы: если вы используете контейнеры, выбирайте надежные и защищенные базовые образы.
Никогда не встраивайте секреты в код
Конфиденциальные данные, такие как ключи API, учетные данные базы данных или закрытые токены, NEVER должны непосредственно встраиваться в ваш репозиторий или файлы рабочих процессов.
Всегда используйте защищенную систему управления секретами. Она не позволяет конфиденциальным данным попасть в систему управления версиями и хранит их в зашифрованном виде.
Проверка входных данных рабочего процесса
Если ваш рабочий процесс принимает внешние входные данные, например из ручного запуска или комментария к запросу на слияние, эти данные необходимо проверять и очищать.
Ненадежные входные данные могут использоваться для атак с внедрением, подобно тому как веб-приложения проверяют входные данные пользователей.
on:
workflow_dispatch:
inputs:
deploy_env:
description: 'Environment to deploy to (e.g., staging, production)'
required: true
type: choice
options:
- 'staging'
- 'production'
version_tag:
description: 'Git tag for the release version'
required: true
type: stringВедение журналов и мониторинг активности конвейера
Наблюдаемость за активностью конвейера — важный элемент защиты. Хорошее ведение журналов помогает быстро обнаруживать подозрительное поведение и реагировать на него.
- Полное ведение журналов: записывайте в журналы все значимые события и действия в рабочих процессах.
- Мониторинг аномалий: обращайте внимание на неудачные проверки безопасности, попытки несанкционированного доступа или необычную продолжительность сборки.
- Оповещения: настройте оповещения о критических событиях безопасности.
Проверьте понимание
Давайте проверим ваши знания лучших практик безопасности CI/CD.
Итоги урока и следующие шаги
Поздравляем! Вы изучили основные практики безопасности для конвейеров CI/CD.
- Применяйте принцип минимальных привилегий.
- Защищайте исходный код и управляйте зависимостями.
- Укрепляйте среды сборки.
- Никогда не встраивайте секреты в код.
- Проверяйте все входные данные рабочих процессов.
- Внедряйте надежное ведение журналов и мониторинг.
Эти практики создают прочную основу для безопасного жизненного цикла DevOps. В следующих уроках мы подробнее рассмотрим такие инструменты и методы, как секреты GitHub и SAST.
Часто задаваемые вопросы
Урок «Лучшие практики безопасности в CI/CD» бесплатный?
Да — полный текст урока «Лучшие практики безопасности в CI/CD» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CI/CD with GitHub Actions & DevOps Pipelines, подпишись на CoddyKit PRO. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.
Чему я научусь в уроке «Лучшие практики безопасности в CI/CD»?
Изучите распространённые уязвимости в конвейерах и лучшие практики снижения рисков на всём протяжении жизненного цикла разработки. Ты практикуешь CI/CD with GitHub Actions & DevOps Pipelines с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CI/CD with GitHub Actions & DevOps Pipelines?
Предыдущий опыт не требуется. CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Лучшие практики безопасности в CI/CD»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CI/CD with GitHub Actions & DevOps Pipelines?
Да. Каждый урок CI/CD with GitHub Actions & DevOps Pipelines включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Лучшие практики безопасности в CI/CD
- Управление секретами с GitHub
- Статическое тестирование безопасности приложений (SAST)
- Безопасность зависимостей и цепочки поставок (SCA)