Skip to content

Инструкция по установке расширения Security с использованием Docker Compose

Инструкция рассчитана на NextBox, установленный по основной инструкции Docker Compose. Добавьте в существующую конфигурацию три сервиса:

  • security
  • infowatch
  • kesl

Общие POSTGRES_PASSWORD, SERVICE_TOKEN и JWT_SIGN_KEY берутся из файла .env основной установки. Добавьте в этот же файл параметры, выданные системами InfoWatch и KESL:

text
INFOWATCH_PUSH_API_ADDRESS=http://192.0.2.10:9101
INFOWATCH_EXPORT_API_ADDRESS=https://infowatch.example.com
INFOWATCH_TOKEN=replace-with-issued-token
INFOWATCH_COMPANY=replace-with-company
KESL_SCAN_URL=http://192.0.2.20/scans

INFOWATCH_TOKEN нельзя сгенерировать локально: его выпускают в интерфейсе InfoWatch. Замените все демонстрационные значения перед запуском.

Создайте файл security_config.yaml для настройки интеграционных сервисов:

yaml
security:
    integrations:
        service:
          - name: dlp
            method: POST
            callback: http://infowatch:8080/events/upload
          - name: kesl
            method: POST
            callback: http://kesl:8080/events/check

В файл docker-compose.yaml добавить volume для хранения файлов в карантине:

yaml
volumes:
  security_data:

Добавьте описания сервисов security, infowatch и kesl внутрь существующей секции services::

yaml
security:
    image: nextbox-docker.ptnl.moscow/nextbox/security:oak-1.11.0
    restart: always
    depends_on:
        - postgresql
        - rabbitmq
    networks:
        - nextbox
    volumes:
      - ./security_config.yaml:/etc/nextbox/config.yml
      - security_data:/repo
    environment:
      - POTENTIAL_SECURITY_HTTP_PORT=8080
      - POTENTIAL_SECURITY_SERVICE_BACK_URL=http://security:8080
      - POTENTIAL_SECURITY_DATABASE_DSN=postgres://nextbox:${POSTGRES_PASSWORD}@postgresql:5432/security
      - POTENTIAL_SECURITY_DISCOVERY_URL=http://discovery:6011
      - POTENTIAL_SECURITY_RABBIT_MQ_HOST=rabbitmq
      - POTENTIAL_SECURITY_RABBIT_MQ_USER=guest
      - POTENTIAL_SECURITY_RABBIT_MQ_PASSWORD=guest
      - POTENTIAL_SECURITY_RABBIT_MQ_VHOST=
      - POTENTIAL_SECURITY_RABBIT_MQ_NUM_WORKERS=10
      - POTENTIAL_SECURITY_SERVICE_TOKEN=${SERVICE_TOKEN}
      - POTENTIAL_SECURITY_TOKENS_SIGN_KEY=${JWT_SIGN_KEY}
      - POTENTIAL_SECURITY_SYSTEM_PATH=/repo
    healthcheck:
      test:
        - CMD-SHELL
        - >-
          wget -q -O /dev/null
          --header="Authorization: Service $$POTENTIAL_SECURITY_SERVICE_TOKEN"
          http://127.0.0.1:8080/api/health-check
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 30s

infowatch:
    image: nextbox-docker.ptnl.moscow/nextbox/infowatch:oak-1.11.0
    restart: always
    networks:
      - nextbox
    command: >
      /usr/bin/infowatch
    environment:
      - POTENTIAL_INFOWATCH_PUSH_API_ADDRESS=${INFOWATCH_PUSH_API_ADDRESS}
      - POTENTIAL_INFOWATCH_EXPORT_API_ADDRESS=${INFOWATCH_EXPORT_API_ADDRESS}
      - POTENTIAL_INFOWATCH_TOKEN=${INFOWATCH_TOKEN}
      - POTENTIAL_INFOWATCH_COMPANY=${INFOWATCH_COMPANY}
      - POTENTIAL_INFOWATCH_HTTP_PORT=8080
      - POTENTIAL_INFOWATCH_SECURITY_URL=http://security:8080

kesl:
    image: nextbox-docker.ptnl.moscow/nextbox/kesl:oak-1.11.0
    restart: always
    networks:
      - nextbox
    command: >
      /usr/bin/kesl
    environment:
      - POTENTIAL_KESL_SCAN_URL=${KESL_SCAN_URL}
      - POTENTIAL_KESL_HTTP_PORT=8081
      - POTENTIAL_KESL_SECURITY_URL=http://security:8080

У security есть HTTP health endpoint, поэтому его готовность проверяется через wget. Адаптеры infowatch и kesl отдельных HTTP health endpoints не предоставляют; не добавляйте для них проверку произвольного URL, иначе контейнеры будут ошибочно помечаться как unhealthy.

Создайте базу, если расширение устанавливается впервые:

bash
docker compose exec postgresql \
  psql -U nextbox -d postgres \
  -c "CREATE DATABASE security OWNER nextbox;"

Если база уже существует, не выполняйте команду повторно. Затем проверьте и запустите конфигурацию:

bash
docker compose config --quiet
docker compose up -d --wait security infowatch kesl