Просто написать код и отправить его в продакшен уже недостаточно
Обеспечение безопасности кода до его выхода в продакшен стало главным приоритетом.
Сегодня большинство компаний следуют одному правилу: «Добавляйте функции безопасности с самого начала или не развертывайте ПО».
👤 Введение в трендовые направления – SysOps, DataOps, DevSecOps, SecOps, ITOps
Именно в этом суть DevSecOps.
🕵️♂️ Введение в DevSecOps для начинающих
Безопасность — это не отдельный этап в конце процесса.
Безопасность обеспечивается вместе с разработкой и эксплуатацией с самого первого дня.
- Инструменты, которые мы будем использовать
- Пошаговая инструкция: создание безопасного CI/CD-конвейера на Linux
- Шаг 1. Подготовьте сервер или Runner на базе Linux
- Шаг 2. Установите инструменты безопасности
- Шаг 3. Создайте конфигурацию пайплайна
- Шаг 4. Добавьте обнаружение секретов
- Шаг 5. Сканирование инфраструктуры как код (Terraform)
- Реальные результаты, которых команды ожидают достичь в 2026 году
- Краткий контрольный список по безопасности
- Заключение
Инструменты, которые мы будем использовать
- 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.
Начните с установки базовых зависимостей:
Затем добавьте пользователя в группу Docker, чтобы можно было запускать Docker без sudo:
🐳 Как запустить Docker от пользователя без полномочий root в Linux
Выйдите из системы и снова войдите в нее, чтобы изменение группы вступило в силу.
Шаг 2. Установите инструменты безопасности
Это нужно сделать только один раз на вашем раннере или сервере.
Установите Trivy — для сканирования образов контейнеров:
Установите Hadolint – для линтинга Dockerfile:
Скачайте https://github.com/hadolint/hadolint/releases/download/v2.14.0/hadolint-Linux-x86_64
Установите 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 уже сегодня.
Оба инструмента бесплатны, просты в установке и обнаруживают реальные уязвимости.
см. также:
- 🕵️ Автоматизация безопасности – Проверка зависимостей с помощью Snyk в GitLab CI/CD
- 🦊 Современное состояние безопасности CI/CD и как предотвратить распространенные ошибки
- 🐳Как обеспечить безопасность среды выполнения Docker с помощью политики Open Policy Agent







