We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

К списку статей

Контейнеризация и CI/CD для PHP‑проекта на Symfony и Python‑скриптов: GitLab CI, Docker‑Compose 2.23 и автоматическое тестирование безопасности (OWASP ZAP)

Современная разработка программного обеспечения требует автоматизации процессов сборки, тестирования и развертывания. Контейнеризация с использованием 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, контейнеризацию, тестирование безопасности и обеспечение соответствия требованиям законодательства РФ. Мы поможем вам автоматизировать процессы разработки и обеспечить надежную защиту ваших данных. Обращайтесь к нам для получения консультации и реализации ваших проектов!

Материал подготовлен и отредактирован для практического применения. Перед внедрением в продакшен проверьте код и команды на своём окружении.

Поделиться материалом

Нужна сложная backend-разработка?

Проектирование архитектуры, PHP/Python backend, интеграции API, боты, автоматизация и оптимизация существующих систем.

Обсудить проект
Поддержать проект