Ручные релизы
Образы собираются вручную, файлы копируются на сервер, а результат зависит от действий конкретного специалиста.
```html
Автоматизация сборки, проверки безопасности и доставки приложений в Docker и Kubernetes.
Обсудить pipeline_Безопасность становится частью поставки приложения, а не отдельной проверкой перед релизом.
Образы собираются вручную, файлы копируются на сервер, а результат зависит от действий конкретного специалиста.
Уязвимости обнаруживаются после развертывания, когда исправление требует больше времени и ресурсов.
Dev, test и production отличаются, а конфигурации хранятся в разных местах.
Релиз продолжается даже при наличии критических уязвимостей, секретов или небезопасной конфигурации.
Pipeline проектируется под стек приложения, инфраструктуру и допустимый уровень риска.
Автоматизация тестирования, сборки, публикации и развертывания приложения.
Воспроизводимая сборка Docker-образов с версионированием и контролем содержимого.
Приватное хранилище образов, контроль доступа и управление версиями.
Управление состоянием Kubernetes через декларативные конфигурации в Git.
Безопасное развертывание приложений в dev, stage и production namespace.
Управление инфраструктурой и конфигурациями через код и систему контроля версий.
Каждая проверка выполняется на подходящем этапе, а критические находки могут блокировать дальнейший релиз.
Поиск паролей, API-ключей и токенов в коде и истории Git.
Статический анализ кода и поиск небезопасных конструкций.
Анализ библиотек и зависимостей с известными CVE.
Проверка Dockerfile на ошибки и небезопасные практики.
Поиск уязвимых пакетов и компонентов в контейнерном образе.
Анализ Kubernetes, Terraform и Ansible-конфигураций.
Динамическая проверка работающего приложения после deploy.
Остановка pipeline при превышении допустимого риска.
Разработчик отправляет изменения в Git.
Запускаются тесты и security-проверки.
Собирается и публикуется контейнерный образ.
Приложение развертывается в Kubernetes.
Проверяется уже работающий сервис.
Production-релиз подтверждается автоматически или вручную.
Контролируются метрики, логи и rollout.
При ошибке выполняется возврат на стабильную версию.
Пример структуры pipeline: проверки выполняются до сборки и перед production-релизом.
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"
Контролируется не только код приложения, но и зависимости, образы, registry и процесс развертывания.
Ограничение прямых изменений production-веток.
Обязательная проверка изменений перед merge.
Развертывание по уникальному тегу или digest образа.
Разделение прав на чтение, публикацию и удаление образов.
Формирование состава программных компонентов.
Проверка происхождения и целостности образов.
Минимальные права runner, deploy token и ServiceAccount.
История изменений, сборок и развертываний.
Анализ репозиториев, текущих релизов, инфраструктуры, registry и существующих проверок.
Определение стадий, окружений, security gates, правил запуска и схемы доставки.
Подключение SAST, SCA, secret scanning, image scanning, IaC scanning и DAST.
Настройка публикации образов, деплоя в dev и production, rollout и rollback.
Настройка порогов критичности, исключений, approvals и блокировки релиза.
Проверка pipeline, документация, инструкции по эксплуатации и обучение команды.
Опишите приложение, репозиторий, текущий процесс сборки и целевую инфраструктуру.