```html DevSecOps и CI/CD под ключ — безопасная автоматизация поставки приложений
Pipeline_Active / Security_Gates_Enabled / Delivery_Automated

CI/CD и
DevSecOps.

Автоматизация сборки, проверки безопасности и доставки приложений в Docker и Kubernetes.

Обсудить pipeline_
Source_ GitLab / Git
Build_ Docker / BuildKit
Registry_ Harbor
Delivery_ Argo CD / Kubernetes
Security_ Shift Left
01 // Задача

Зачем нужен DevSecOps_

Безопасность становится частью поставки приложения, а не отдельной проверкой перед релизом.

01

Ручные релизы

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

02

Поздние проверки

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

03

Разные окружения

Dev, test и production отличаются, а конфигурации хранятся в разных местах.

04

Нет контроля риска

Релиз продолжается даже при наличии критических уязвимостей, секретов или небезопасной конфигурации.

02 // Состав работ

Что входит_

Pipeline проектируется под стек приложения, инфраструктуру и допустимый уровень риска.

CI/CD Pipeline

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

  • + GitLab CI
  • + Stages и dependencies
  • + Dev и production

Сборка контейнеров

Воспроизводимая сборка Docker-образов с версионированием и контролем содержимого.

  • + Multi-stage build
  • + BuildKit
  • + Tags и image digest

Container Registry

Приватное хранилище образов, контроль доступа и управление версиями.

  • + Harbor
  • + Retention policies
  • + Vulnerability scanning

GitOps

Управление состоянием Kubernetes через декларативные конфигурации в Git.

  • + Argo CD
  • + Automated sync
  • + Drift detection

Kubernetes Delivery

Безопасное развертывание приложений в dev, stage и production namespace.

  • + Deployment и Service
  • + Ingress и TLS
  • + Rollout и rollback

Infrastructure as Code

Управление инфраструктурой и конфигурациями через код и систему контроля версий.

  • + Terraform
  • + Ansible
  • + Kubernetes manifests
03 // Security Pipeline

Проверки безопасности_

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

01

Secret Scanning

Поиск паролей, API-ключей и токенов в коде и истории Git.

02

SAST

Статический анализ кода и поиск небезопасных конструкций.

03

SCA

Анализ библиотек и зависимостей с известными CVE.

04

Dockerfile Lint

Проверка Dockerfile на ошибки и небезопасные практики.

05

Image Scanning

Поиск уязвимых пакетов и компонентов в контейнерном образе.

06

IaC Scanning

Анализ Kubernetes, Terraform и Ansible-конфигураций.

07

DAST

Динамическая проверка работающего приложения после deploy.

08

Security Gate

Остановка pipeline при превышении допустимого риска.

04 // Delivery Flow

Как проходит релиз_

01

Commit

Разработчик отправляет изменения в Git.

02

Validate

Запускаются тесты и security-проверки.

03

Build

Собирается и публикуется контейнерный образ.

04

Deploy

Приложение развертывается в Kubernetes.

05

DAST

Проверяется уже работающий сервис.

06

Approve

Production-релиз подтверждается автоматически или вручную.

07

Observe

Контролируются метрики, логи и rollout.

08

Rollback

При ошибке выполняется возврат на стабильную версию.

05 // Pipeline Example

Безопасный pipeline_

Пример структуры pipeline: проверки выполняются до сборки и перед production-релизом.

.gitlab-ci.yml
stages:
  - lint
  - security
  - build
  - scan
  - deploy-dev
  - dast
  - deploy-prod

secret-scan:
  stage: security
  script:
    - gitleaks detect --source .

sast:
  stage: security
  script:
    - semgrep --config auto .

build-image:
  stage: build
  script:
    - docker build
      -t "$REGISTRY/$APP:$CI_COMMIT_SHA" .
    - docker push
      "$REGISTRY/$APP:$CI_COMMIT_SHA"

image-scan:
  stage: scan
  script:
    - trivy image
      --severity HIGH,CRITICAL
      --exit-code 1
      "$REGISTRY/$APP:$CI_COMMIT_SHA"

deploy-dev:
  stage: deploy-dev
  script:
    - kubectl set image
      deployment/$APP
      app="$REGISTRY/$APP:$CI_COMMIT_SHA"
      -n "$DEV_NAMESPACE"

dast:
  stage: dast
  script:
    - zap-baseline.py
      -t "$DAST_TARGET"

deploy-prod:
  stage: deploy-prod
  when: manual
  script:
    - kubectl set image
      deployment/$APP
      app="$REGISTRY/$APP:$CI_COMMIT_SHA"
      -n "$PROD_NAMESPACE"
06 // Supply Chain

Защита цепочки поставки_

Контролируется не только код приложения, но и зависимости, образы, registry и процесс развертывания.

01

Protected Branches

Ограничение прямых изменений production-веток.

02

Code Review

Обязательная проверка изменений перед merge.

03

Immutable Images

Развертывание по уникальному тегу или digest образа.

04

Registry Access

Разделение прав на чтение, публикацию и удаление образов.

05

SBOM

Формирование состава программных компонентов.

06

Image Signing

Проверка происхождения и целостности образов.

07

Least Privilege

Минимальные права runner, deploy token и ServiceAccount.

08

Audit Trail

История изменений, сборок и развертываний.

07 // Этапы

Как проходит работа_

01 / 06

Аудит процесса

Анализ репозиториев, текущих релизов, инфраструктуры, registry и существующих проверок.

02 / 06

Архитектура pipeline

Определение стадий, окружений, security gates, правил запуска и схемы доставки.

03 / 06

Интеграция проверок

Подключение SAST, SCA, secret scanning, image scanning, IaC scanning и DAST.

04 / 06

Автоматизация deploy

Настройка публикации образов, деплоя в dev и production, rollout и rollback.

05 / 06

Security gates

Настройка порогов критичности, исключений, approvals и блокировки релиза.

06 / 06

Передача и документация

Проверка pipeline, документация, инструкции по эксплуатации и обучение команды.

До_

Ручной релиз

  • Сборка зависит от локального окружения
  • Уязвимости обнаруживаются после релиза
  • Образы тегируются вручную
  • Production обновляется командами с ноутбука
  • Нет единой истории поставки
После_

Управляемая поставка

  • Воспроизводимая автоматическая сборка
  • Проверки безопасности до deploy
  • Версионирование образов и конфигураций
  • Контролируемый rollout и rollback
  • Полная история изменений и релизов
08 // FAQ

Частые вопросы_

Чем CI/CD отличается от DevSecOps?
CI/CD автоматизирует сборку, тестирование и поставку. DevSecOps дополняет этот процесс проверками безопасности, управлением рисками и контролем цепочки поставки.
Нужен ли Kubernetes для CI/CD?
Нет. CI/CD можно использовать для виртуальных машин, Docker Compose и обычных серверов. Kubernetes нужен только при соответствующей архитектуре приложения.
Зачем одновременно GitLab CI и Argo CD?
GitLab CI собирает, тестирует и публикует артефакты. Argo CD следит за декларативным состоянием Kubernetes и синхронизирует кластер с Git-репозиторием.
Должны ли все уязвимости блокировать релиз?
Нет. Security gate должен учитывать критичность, доступность компонента, наличие исправления и фактическую эксплуатируемость уязвимости.
Где хранить секреты pipeline?
Секреты не должны храниться в репозитории. Используются защищенные CI/CD variables, Vault или другой централизованный secrets manager.
Что будет передано после завершения?
CI/CD-конфигурация, шаблоны jobs, настройки registry и deploy, документация по security gates, запуску pipeline и устранению типовых ошибок.

Автоматизировать релиз_

Опишите приложение, репозиторий, текущий процесс сборки и целевую инфраструктуру.