🕵️‍♂️ DevSecOps на Linux на примере: создание безопасного пайплайна CI/CD |

🕵️‍♂️ DevSecOps на Linux на примере: создание безопасного пайплайна CI/CD

Мануал

Просто написать код и отправить его в продакшен уже недостаточно

Обеспечение безопасности кода до его выхода в продакшен стало главным приоритетом.

Сегодня большинство компаний следуют одному правилу: «Добавляйте функции безопасности с самого начала или не развертывайте ПО».

👤 Введение в трендовые направления – SysOps, DataOps, DevSecOps, SecOps, ITOps

Именно в этом суть DevSecOps.

🕵️‍♂️ Введение в DevSecOps для начинающих

Безопасность — это не отдельный этап в конце процесса.

Безопасность обеспечивается вместе с разработкой и эксплуатацией с самого первого дня.

Инструменты, которые мы будем использовать

  • GitLab CI или GitHub Actions — для запуска пайплайна
  • Trivy – сканирует образы контейнеров на наличие уязвимостей
  • Hadolint – проверка Dockerfile на наличие ошибок
  • Semgrep или Bandit – поиск проблем с безопасностью в коде на Python, Go и других языках
  • tfsec или Checkov – сканирование файлов Terraform на наличие неправильных конфигураций
  • OWASP ZAP или Nikto – выполняют базовое сканирование безопасности веб-приложений

Пошаговая инструкция: создание безопасного CI/CD-конвейера на Linux

Шаг 1. Подготовьте сервер или Runner на базе Linux

Подойдет любой компьютер с Ubuntu или Rocky Linux.

Начните с установки базовых зависимостей:

sudo apt update && sudo apt install -y docker.io git curl

Затем добавьте пользователя в группу Docker, чтобы можно было запускать Docker без sudo:

sudo usermod -aG docker $USER

🐳 Как запустить Docker от пользователя без полномочий root в Linux

Выйдите из системы и снова войдите в нее, чтобы изменение группы вступило в силу.

Шаг 2. Установите инструменты безопасности

Это нужно сделать только один раз на вашем раннере или сервере.

Установите Trivy — для сканирования образов контейнеров:

curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin

Установите Hadolint – для линтинга Dockerfile:

Скачайте https://github.com/hadolint/hadolint/releases/download/v2.14.0/hadolint-Linux-x86_64

chmod +x /usr/local/bin/hadolint

Установите Semgrep – для сканирования исходного кода:

pip install semgrep

Шаг 3. Создайте конфигурацию пайплайна

Ниже приведен пример файла .gitlab-ci.yml.

Если вы используете GitHub Actions, структура будет немного отличаться, но применяются те же инструменты и команды.

stages:
  - static-analysis
  - container-scan
  - deploy

code_quality:
  stage: static-analysis
  script:
    - semgrep ci --config auto
    - hadolint Dockerfile
  only:
    - merge_requests
    - main

container_security_scan:
  stage: container-scan
  script:
    - docker build -t myapp:latest .
    - trivy image --exit-code 1 --severity HIGH,CRITICAL myapp:latest
  only:
    - main

deploy_to_production:
  stage: deploy
  script:
    - docker push myapp:latest
    - ssh prod-server "docker pull myapp:latest && docker-compose up -d"
  only:
    - main
  when: manual

Что происходит в этом пайплайне?

  • Каждый push или merge request → Semgrep сканирует ваш код на наличие секретов, плохой криптографии, внедрения SQL-кода и многого другого.
  • Hadolint проверяет ваш Dockerfile на наличие распространенных ошибок, таких как запуск от имени root или использование  тега latest.
  • При слиянии с веткой main → Docker создает образ, а Trivy сканирует его на наличие уязвимостей.
  • Если Trivy обнаруживает какие-либо проблемы с уровнем риска HIGH или CRITICAL, конвейер автоматически останавливается, и развертывание не происходит.
  • Для последнего этапа развертывания установлено значение when: manual, поэтому человек нажимает кнопку только после успешного прохождения всех проверок.

Шаг 4. Добавьте обнаружение секретов

Случайная фиксация API-ключей, паролей или закрытых ключей — одна из самых распространенных ошибок безопасности.

Добавьте эту задачу, чтобы автоматически обнаруживать такие ошибки:

secrets_scan:
  stage: static-analysis
  script:
    - trivy config --exit-code 1 .
  allow_failure: false

Эта функция сканирует весь ваш репозиторий на наличие ключей AWS, паролей баз данных, закрытых ключей и аналогичных конфиденциальных данных до объединения кода.

🦊 Добавление Gitleaks в пайплайн Gitlab CI

Шаг 5. Сканирование инфраструктуры как код (Terraform)

Если ваша команда использует Terraform, добавьте эту задачу, чтобы выявлять неправильные конфигурации до того, как они попадут в вашу облачную среду:

iac_scan:
  stage: static-analysis
  script:
    - checkov -d . --skip-check CKV_AWS_1,CKV_AWS_2

 Флаг –skip-check позволяет игнорировать определенные правила, которые не применяются к вашей конфигурации.

Реальные результаты, которых команды ожидают достичь в 2026 году

  • 90% распространенных уязвимостей обнаруживаются еще до того, как код попадает в продакшен.
  • Больше никаких сюрпризов типа «Мы забыли отсканировать образм» перед выпуском.
  • Специалисты по безопасности довольны, потому что ничего не ускользает от их внимания.
  • Разработчики по-прежнему работают быстро, потому что все процессы выполняются автоматически в фоновом режиме.

Краткий контрольный список по безопасности

Прежде чем запустить пайплайн, убедитесь, что выполнены следующие условия:

  • Инструменты безопасности работают внутри пайплайна, а не вручную на чьем-то ноутбуке.
  • Сборка автоматически завершается с ошибкой при обнаружении уязвимостей уровня «ВЫСОКИЙ» или «КРИТИЧЕСКИЙ».
  • В коде нет жестко зафиксированных секретов: вместо этого используйте переменные GitLab CI или HashiCorp Vault.
  • Сканирование пайплайна охватывает: Dockerfile, исходный код, образы контейнеров и файлы Terraform.
  • Инструменты обновляются не реже одного раза в месяц, чтобы получать последние сигнатуры уязвимостей.

Заключение

Вот и всё. Выполните эти действия, и ваш CI/CD-пайплайн на базе Linux будет защищен, при этом работа вашей команды не замедлится.

Начните с малого: добавляйте по одному сканированию за раз. В течение двух недель ваш пайплайн начнет автоматически обнаруживать проблемы, и ваша команда сможет выпускать код гораздо увереннее.

Начните использовать Trivy или Semgrep уже сегодня.

Оба инструмента бесплатны, просты в установке и обнаруживают реальные уязвимости.

см. также:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий