Перейти к содержанию

Установка через Docker Compose

Для развертывания через Docker Compose требуется Docker версии не менее 23.0.

Варианты конфигурации

  1. Конфигурация с использованием файла .env.
  2. Конфигурация с использованием механизма секретов.

Создание группы и добавление пользователя

  1. Создайте группу docker.

    sudo groupadd docker
    
  2. Добавьте своего пользователя в группу docker.

    sudo usermod -aG docker $USER
    
  3. Чтобы изменения вступили в силу, выполните следующую команду:

    newgrp docker
    

Примечание

Выполняйте команды из последующих шагов с помощью добавленного в группу пользователя.

Загрузка дистрибутива

В настоящий момент дистрибутив предоставляется по запросу.

Запуск

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

    В архиве находится два варианта конфигурации Docker Compose. Первый вариант использует файл .env для хранения чувствительных данных (пароли для баз данных, ключи доступов к S3-совместимому хранилищу, и т.д.). Второй вариант использует встроенный в Docker механизм секретов.

  2. Откройте терминал и перейдите в директорию solidpoint-compose, полученную в результате распаковки.

    Все последующие примеры команд в настоящей инструкции выполняются относительно этой директории.

  3. Введите ваш секретный токен доступа, отредактировав значение переменной окружения TOKEN в файле .env, например:

    TOKEN=my-secret-access-token
    
  4. Настройте необходимые права доступа для локально монтированных директорий так, чтобы они были доступны для записи:

    chmod a+wr fuchsiad/config/ backend/data/
    
  5. Для запуска сервисов с конфигурацией, использующей файл .env, выполните команду:

    docker compose up --build
    

    Для запуска сервисов с конфигурацией, использующей механизм секретов, выполните команду:

    docker compose -f docker-compose-with-secrets.yml --env-file secrets.env up --build
    

Панель управления по умолчанию доступна по адресу http://localhost. При использовании первого варианта конфигурации изменить адрес и порт можно в файле docker-compose.yml, в секции services.dashboard.ports. При использовании второго варианта конфигурации аналогичные изменения могут быть сделаны в файле docker-compose-with-secrets.yml.

Настройка

Настроить переменные окружения можно в файле .env при использовании первого варианта конфигурации, или в файле secrets.env при использовании второго варианта конфигурации.

Имя переменной Значение по умолчанию Описание
FUCHSIAD_POSTGRES_SERVER_URL fuchsiad-database:5432 Адрес сервера базы данных для сервиса сканирования fuchsiad в формате host:port
FUCHSIAD_POSTGRES_DB fuchsia Имя базы данных PostgreSQL для сервиса сканирования fuchsiad
FUCHSIAD_POSTGRES_USER fuchsia Имя пользователя PostgreSQL для сервиса сканирования fuchsiad
FUCHSIAD_POSTGRES_PASSWORD *** Пароль базы данных PostgreSQL для сервиса сканирования fuchsiad (используется только в первом варианте конфигурации)
FUCHSIAD_POSTGRES_PASSWORD_FILE /tmp/secrets/fuchsiad_db_password Путь к файлу (внутри контейнера), где будет храниться пароль базы данных PostgreSQL для сервиса сканирования fuchsiad (используется только во втором варианте конфигурации)
FUCHSIAD_POSTGRES_SSL_MODE disable Регулирует использование протокола SSL для соединения с базой данных PostgreSQL для сервиса сканирования fuchsiad
FUCHSIAD_SOCKET_PORT 7075 Адрес TCP-порта сервиса сканирования fuchsiad
FUCHSIAD_SOCKET_ADDR fuchsiad Адрес, по которому другие контейнеры могут взаимодействовать с fuchsiad
FUCHSIAD_CONFIG_DIR /etc/fuchsia Директория, содержащая конфигурационные файлы сервиса сканирования fuchsiad
FUCHSIAD_OMIT_JOB_LOGS false Если имеет значение true, то записи журнала задач сервиса сканирования не передаются на стандартные потоки вывода или ошибок (только сохраняются в S3-совместимое хранилище)
FUCHSIAD_LOGS_FILE Не задано Если значение задано, то записи журнала сервиса сканирования дублируются в указанный файл
FUCHSIAD_CREDENTIALS_FILE Не задано Если значение задано, то файл используется как дополнение к конфигурации сервиса сканирования fuchsiad. Необходимо для хранения чувствительной информации отдельно от основной конфиграционной директории, заданной переменной окружения FUCHSIAD_CONFIG_DIR (например, в директории только для чтения)
BACKEND_POSTGRES_SERVER_URL backend-database:5432 Адрес сервера базы данных для бэкенда в формате host:port
BACKEND_POSTGRES_DB backend Имя базы данных PostgreSQL для серверной части
BACKEND_POSTGRES_USER backend Имя пользователя PostgreSQL для серверной части
BACKEND_POSTGRES_PASSWORD *** Пароль базы данных PostgreSQL для серверной части (используется только в первом варианте конфигурации)
BACKEND_POSTGRES_PASSWORD_FILE /tmp/secrets/backend_db_password Путь к файлу (внутри контейнера), где будет храниться пароль базы данных PostgreSQL для серверной части (используется только во втором варианте конфигурации)
BACKEND_POSTGRES_SSL_MODE disable Регулирует использование протокола SSL для соединения с базой данных PostgreSQL для серверной части
BACKEND_STATE_DIRECTORY /var/lib/fuchsia/backend Директория, в которой хранится состояние серверной части
BACKEND_LISTEN_PORT 8085 Адрес TCP-порта серверной части
BACKEND_ADDR backend Адрес, по которому другие контейнеры могут взаимодействовать с серверной частью
BACKEND_LOGS_FILE Не задано Если значение задано, то записи журнала серверной части дублируются в указанный файл
BACKEND_DATABASE_URI_FILE Не задано Если значение задано, то строка подключения к PostgreSQL считывается из файла, путь к которому указан в данной переменной, а не из переменной окружения
S3_SERVER_URL http://minio:9000 Адрес сервера S3-совместимого хранилища в формате schema://host:port
S3_ROOT_USER fuchsia Ключ доступа пользователя root к S3-совместимому хранилищу (используется только в первом варианте конфигурации)
S3_ROOT_USER_FILE /tmp/secrets/s3_root_user Путь к файлу (внутри контейнера), где будет храниться ключ доступа пользователя root к S3-совместимому хранилищу (используется только во втором варианте конфигурации)
S3_ROOT_PASSWORD *** Пароль пользователя root к S3-совместимому хранилищу (используется только в первом варианте конфигурации)
S3_ROOT_PASSWORD_FILE /tmp/secrets/s3_root_password Путь к файлу (внутри контейнера), где будет храниться пароль пользователя root к S3-совместимому хранилищу (используется только во втором варианте конфигурации)
S3_NO_CHECK_CERT true Регулирует игнорирование самозаверенных серверных сертификатов при использовании протоколов SSL/TLS
INTERACTSH_DOMAIN Не задано Домен сконфигурированного interactsh-сервера. Оставьте пустым для использования внутреннего заранее сконфигурированного interactsh-сервера
INTERACTSH_TOKEN Не задано Аутентификационный токен interactsh-сервера.
• Если настроена аутентификация персонального заранее сконфигурированного interactsh-сервера, укажите его аутентификационный токен;
• Если аутентификация не настроена или используется внутренний interactsh-сервер, оставьте пустым
CHANNEL stable Указание канала репозитория deb-пакетов
TOKEN Не задано Токен для доступа к репозиторию deb-пакетов
TZ Europe/Moscow Задаёт временную зону

Примечание

Дальнейшие команды указаны для первого варианта дистрибутива. Для их переиспользования со вторым вариантом к команде docker compose необходимо добавить флаги -f docker-compose-with-secrets.yml --env-file secrets.env.

Добавление SSL-сертификатов и HTTPS в панель управления

  1. В файле конфигурации docker-compose.yml для блока настроек панели управления добавьте блок volumes и в блоке ports укажите маппинг для порта 443.

    dashboard:
      image: repo.solidpoint.net/dashboard:25.17.1
      env_file:
        - .env
      depends_on:
        - backend
      ports:
        - 0.0.0.0:80:8100
        - 0.0.0.0:443:8443
      volumes:
        - ./dashboard/conf.d:/tmp/conf.d:rw
        - ./dashboard/certs:/etc/nginx/certs:ro
      logging:
        driver: journald
      networks:
        - dashboard
        - external
    
  2. В директории с файлом конфигурации docker-compose.yml создайте директории dashboard/conf.d и dashboard/certs.

  3. В директории dashboard/certs добавьте сертификаты вида <cert_name>.crt и <cert_name>.key.
  4. В директории dashboard/conf.d создайте файл https.conf со следующей конфигурацией:

    server {
       listen 8443 ssl;
       server_name _;
       ssl_certificate /etc/nginx/certs/<cert_name>.crt;
       ssl_certificate_key /etc/nginx/certs/<cert_name>.key;
       include /usr/share/solidpoint/frontend/nginx.conf;
    }
    

Завершение работы

Для завершения работы и очистки томов (флаг -v) выполните команду:

docker compose down -v

Для удаления неименованных томов выполните команду:

./remove-unnamed-volumes.sh

Использование fuchsiactl

Предупреждение

Консольный клиент fuchsiactl предназначается для прямого доступа к сервису сканирования fuchsiad.

В будущем он будет заменен новым клиентом solidpoint-cli, который обращается к панели управления.

Консольным клиентом fuchsiactl можно пользоваться, добавив следующий алиас для запуска его внутри контейнера:

alias fuchsiactl="docker compose exec fuchsiad fuchsiactl"

После этого можно использовать консольный клиент, например, набрав команду:

fuchsiactl help

Монтирование файлов для сканера

Директория fuchsiad/files/ в корне дистрибутива примонтирована внутри контейнера fuchsiad в директорию /files.

Запуск сканирования

Использование OpenAPI-спецификации

Находясь в корневой директории дистрибутива, переместите файлы OpenAPI-спецификации в директорию fuchsiad/files/, например:

cp /path/to/spec.json fuchsiad/files/

Далее используйте fuchsiactl для запуска сканирования, указывая необходимые файлы относительно директории /files, например:

fuchsiactl scan --url http://example.com --file "openapi-hars-generator:OpenAPISpec@/files/spec.json"

Использование клиентского TLS-сертификата

fuchsiactl scan --url https://example.com --file=@proxy:CERT.crt@/files/somecrt.crt --file=@proxy:CERT.key@/files/somecrt.key

Сервис генерации отчётов о сканировании

Важно

Сервис генерации отчётов о сканировании рекомендуется запускать в изолированной среде (на отдельной машине), поэтому для службы создания отчётов о проверке используются профили Docker Compose.

Переменные окружения сервиса:

Имя переменной Значение по умолчанию Описание
SCAN_REPORT_GENERATOR_ADDR scan-report-generator Имя сервиса генерации отчётов, отображаемое во внутренней сети Docker Compose. В процессе развёртывания необходимо изменить на используемый адрес
SCAN_REPORT_GENERATOR_PORT 9090 Порт машины, на которой развёрнут сервис генерации отчётов. В процессе развёртывания необходимо изменить, если используется порт не по умолчанию
SCAN_REPORT_GENERATOR_STATE_DIRECTORY /var/lib/solidpoint/scan-report-generator/home Указывает директорию, в которой хранятся файлы, связанные с отчётами
SCAN_REPORT_GENERATOR_LOGS_FILE Не задано Если значение задано, то записи журнала сервиса генерации отчётов о сканировании дублируются в указанный файл

Существует два способа развертывания с помощью Docker Compose:

  • Использование конфигурации Docker Compose для сервиса scan-report-generator для развёртывания на отдельной машине (рекомендуется).

    Загрузите из хранилища архивов конфигурацию вида solidpoint-compose-v{RELEASE}.tgz, где RELEASE — необходимая версия.

    docker compose up
    

    На отдельной машине загрузите из хранилища архивов конфигурацию вида solidpoint-compose-generator-v{RELEASE}.tgz, где RELEASE — необходимая версия.

    docker compose up
    
  • Запуск всех сервисов на одной машине (не рекомендуется).

    Загрузите из хранилища архивов конфигурацию вида solidpoint-compose-v{RELEASE}.tgz, где RELEASE — необходимая версия.

    docker compose --profile reporter up