Современная разработка программного обеспечения требует автоматизации процессов сборки, тестирования и развертывания. Контейнеризация с использованием Docker и CI/CD (Continuous Integration/Continuous Delivery) стали неотъемлемой частью успешного DevOps. В данной статье мы рассмотрим, как настроить CI/CD для PHP-проекта на Symfony и Python-скриптов, используя GitLab CI, Docker Compose 2.23 и автоматическое тестирование безопасности с помощью OWASP ZAP. Особое внимание будет уделено аспектам соответствия актуальному законодательству РФ, касающемуся хранения и обработки персональных данных.
Контейнеризация с Docker и Docker Compose
Docker позволяет упаковать приложение и все его зависимости в контейнер, обеспечивая переносимость и воспроизводимость. Docker Compose позволяет определять и запускать многоконтейнерные приложения. Для нашего проекта нам понадобятся контейнеры для:
- PHP (с Symfony)
- Базы данных (например, PostgreSQL или MySQL)
- Redis (или другого кэша)
- Python (для скриптов)
Пример файла docker-compose.yml:
version: "2.23"
services:
php:
image: php:8.2-fpm
volumes:
- ./symfony:/var/www/html
depends_on:
- database
database:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: database
volumes:
- db_data:/var/lib/postgresql/data
python:
image: python:3.9
working_dir: /app
volumes:
- ./python_scripts:/app
command: python main.py
volumes:
db_data:
Важно! При работе с персональными данными, убедитесь, что используемые образы Docker регулярно обновляются для устранения уязвимостей. Следует также применять принцип наименьших привилегий при настройке прав доступа к контейнерам и томам.
Настройка GitLab CI
GitLab CI позволяет автоматизировать процессы сборки, тестирования и развертывания при каждом коммите в репозиторий. Для этого необходимо создать файл .gitlab-ci.yml в корне репозитория.
Пример файла .gitlab-ci.yml:
stages:
- build
- test
- security_scan
build:
image: docker:latest
services:
- docker:dind
stage: build
script:
- docker-compose build
unit_tests:
image: php:8.2-cli
stage: test
script:
- composer install
- ./bin/console doctrine:migrations:run
- ./bin/console tests
security_scan:
image: owasp/zap2docker-stable
stage: security_scan
script:
- zap-baseline.py -t http://localhost:8000 -g gen.conf
allow_failure: true
В данном примере:
build: Собирает Docker-контейнеры.unit_tests: Запускает модульные тесты Symfony.security_scan: Проводит сканирование безопасности с помощью OWASP ZAP.
Автоматическое тестирование безопасности с OWASP ZAP
OWASP ZAP (Zed Attack Proxy) — это бесплатный инструмент для тестирования безопасности веб-приложений. В GitLab CI мы используем его для автоматического сканирования на наличие уязвимостей. Важно настроить OWASP ZAP для соответствия требованиям законодательства РФ, например, исключить из сканирования те URL, которые содержат персональные данные, если это необходимо.
Соответствие законодательству РФ
При разработке и эксплуатации веб-приложений в РФ необходимо соблюдать Федеральный закон от 27.07.2006 N 152-ФЗ "О персональных данных". Это включает в себя:
- Обеспечение безопасности персональных данных.
- Получение согласия субъекта на обработку персональных данных.
- Локализация хранения персональных данных на территории РФ (в ряде случаев).
- Ведение учета обработки персональных данных.
При использовании Docker и CI/CD необходимо учитывать следующие моменты:
- Регулярное обновление образов Docker для устранения уязвимостей.
- Настройка прав доступа к контейнерам и томам в соответствии с принципом наименьших привилегий.
- Шифрование данных при передаче и хранении.
- Обеспечение защиты от несанкционированного доступа к CI/CD системе.
Заключение
Контейнеризация и CI/CD значительно упрощают разработку и развертывание PHP-проектов на Symfony и Python-скриптов. Использование GitLab CI, Docker Compose и OWASP ZAP позволяет автоматизировать процессы сборки, тестирования и сканирования на безопасность. При этом необходимо учитывать требования законодательства РФ, особенно в части защиты персональных данных.
РыбинскЛАБ предоставляет полный спектр услуг по разработке веб-приложений, включая настройку CI/CD, контейнеризацию, тестирование безопасности и обеспечение соответствия требованиям законодательства РФ. Мы поможем вам автоматизировать процессы разработки и обеспечить надежную защиту ваших данных. Обращайтесь к нам для получения консультации и реализации ваших проектов!