0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · Урок

Лучшие практики безопасности в 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 — локальная установка не требуется.

Все уроки этого курса

  1. Лучшие практики безопасности в CI/CD
  2. Управление секретами с GitHub
  3. Статическое тестирование безопасности приложений (SAST)
  4. Безопасность зависимостей и цепочки поставок (SCA)
← Назад к CI/CD with GitHub Actions & DevOps Pipelines