Установка

Пошаговое руководство по развертыванию Auditor

Системные требования для использования Auditor:

  • Минимальные системные ресурсы: 16 ГБ ОЗУ и 4 ядра ЦПУ.

  • Свободное дисковое пространство для установки и хранения данных Auditor.

  • Доступ по сети до и от Security Center и к месту расположения вашего актива (месту расположения сканируемого продукта).

  • Операционная система с поддержкой Docker или Kubernetes (рекомендуется любая Linux-система).

{% hint style="danger" %} Для улучшения стабильности работы рекомендуется устанавливать Auditor и Security Center на разных машинах (физических или виртуальных)

{% endhint %}

Подготовка

Перед установкой Auditor убедитесь, что на вашем компьютере установлено следующее программное обеспечение:

Тип установки с использованием Docker:

Установка в среде Kubernetes:

  • Helm с рабочим кластером Kubernetes

Создание SSH-ключей

Чтобы безопасно подключиться к серверу Linux, вам нужно настроить SSH-ключи.

Если у вас еще нет SSH-ключей, вы можете сгенерировать их с помощью следующей команды в терминале сервера:

ssh-keygen

:warning: При копировании ключей убедитесь, что они скопированы без пробелов.

Установка SSH-ключа на сервер

После генерации SSH-ключей вам нужно скопировать открытый SSH-ключ на сервер Linux. Используйте команду для копирования открытого ключа:

ssh-copy-id <имя_пользователя>@<ip-адрес_сервера>

Замените <имя_пользователя> на имя пользователя вашей учетной записи Linux-сервера, а <ip-адрес_сервера> на IP-адрес Linux-сервера. Вам будет предложено ввести пароль для аутентификации.

Откройте на локальной машине файл, в котором хранится закрытый SSH-ключ. Закрытый ключ обычно сохраняется с расширением .pem или .ssh.

Выберите и скопируйте содержимое файла закрытого ключа. Убедитесь, что вы скопировали ключ с правильными разрешениями и разрывами строк.

При использовании сканеров входящих в стандартную поставку продукта необходимо разрешить доступ Auditor к удаленным ресурсам, расположенным по следующим адресам:

Сканер

URL-адреc

Registry со стандартными образами

registry.cybercodereview.ru

Обязательный для всех

*.docker.io

Checkov

pypi.org
api0.prismacloud.io

Gitlab Semgrep

metrics.semgrep.dev

RetireJS

registry.npmjs.org
raw.githubusercontent.com

Semgrep

semgrep.dev
metrics.semgrep.dev

Snyk

pypi.org
files.pythonhosted.org
api.snyk.io

Terrascan

raw.githubusercontent.com
github.com

Trivy Code Dependencies

ghcr.io
pkg-containers.githubusercontent.com

Trivy Image Dependencies

ghcr.io
pkg-containers.githubusercontent.com

Установка

  • Вариант 1: Установка с помощью Helm (установка в среде Kubernetes)

  • Вариант 2: Установка с помощью Docker-compose (ручная установка docker-compose)

Установка с использованием Helm

Перед использованием установите менеджер пакетов "Helm" для Kubernetes и сконфигурируйте подключение к кластеру

Шаг 1: Добавьте пакет Helm

Добавьте на локальный компьютер пакет Helm:

helm repo add auditor https://gitlab.cybercodereview.ru/api/v4/projects/48/packages/helm/stable

Шаг 2: Обновите репозиторий с чартом

Это позволит получить информацию о последней версии нашего чарта

helm repo update

Шаг 3: Создайте файл values с настройками чарта

Перейдите в вашу рабочую папку, где впоследствии будете изменять некоторые параметры настройки чарта и создайте файл с любым наименованием, а также с расширением .yaml или .yml . Далее в качестве примера будет использоваться values.yaml.

Шаг 4: Задайте переменные настройки чарта

Далее необходимо заполнить файл values.yaml.

global: image: tag: "<актуальный_тег>" configs: configmap: variables: DOMAIN: "https://auditor.example.com" secret: variables: DB_HOST: "auditor-postgres" # имя Service в Kubernetes или внешний хост DB_PORT: "5432" DB_NAME: "auditor" DB_USER: "user" DB_PASS: "pass" REDIS_HOST: "auditor-redis-master" # имя Service в Kubernetes или внешний хост REDIS_PASSWORD: "11110000" # auditor-rabbitmq - имя Service в Kubernetes или внешний хост AMQP_HOST_STRING: "amqp://user:pass@auditor-rabbitmq:5672" # ACCESS_TOKEN: "<значение_из_веб_интерфейса>" kube: enabled: false ingress: enabled: true host: "auditor.example.com" class: nginx tls: enabled: true secretName: "" ## Имя Kubernetes секрета annotations: labels: {} path: "/" pathType: Prefix

Далее необходимо отредактировать values под Ваши нужды.

Тег

Начнем с поля global.image.tag. Чтобы узнать актуальный тег, необходимо перейти в список релизов нашего репозитория. Берем самый верхний тег, например, на скриншоте 2.1.2.

Например:

global: image: tag: "2.1.2"

Домен

Для указания доменного имени Вашего Auditor необходимо отредактировать поле configs.configmap.variables.DOMAIN. Например:

configs: configmap: variables: DOMAIN: "https://auditor.local"

Подключение к СУБД PostgreSQL

Для настройки подключения в PostgreSQL необходимо заполнить следующие поля:

  • configs.configmap.variables.DB_HOST - может быть как именем сервиса в kubernetes, так и внешним хостом;

  • configs.configmap.variables.DB_PORT - порт, на котором PostgreSQL "слушает" подключения;

  • configs.configmap.variables.DB_NAME - имя базы данных, созданной для Auditor;

  • configs.configmap.variables.DB_USER - имя пользователя, имеющего доступ к базе данных для Auditor;

  • configs.configmap.variables.DB_PASS - пароль пользователя из пункта выше.

Значения по-умолчанию:

<pre class="language-yaml">configs: secret: variables: DB_HOST: "auditor-postgres" # имя Service в Kubernetes или внешний хост DB_PORT: "5432" DB_NAME: "auditor" DB_USER: "user" DB_PASS: "pass" </pre>

Для изменения значений по умолчанию (которые принимает PostgreSQL), необходимо изменить следующие поля:

postgresql: auth: database: auditor username: user password: pass containerPorts: postgresql: 5432

Подключение к СУБД Redis

Для настройки подключения к Redis необходимо заполнить следующие поля:

  • configs.configmap.variables.REDIS_HOST - может быть как именем сервиса в Kubernetes, так и внешним хостом;

  • configs.configmap.variables.REDIS_PASSWORD - пароль подключения к Redis.

Значения по умолчанию:

configs: secret: variables: REDIS_HOST: "auditor-redis-master" # имя Service в Kubernetes или внешний хост REDIS_PASSWORD: "11110000"

Чтобы поменять значения по умолчанию (которые принимает Redis), необходимо изменить следующие поля:

redis: auth: password: "11110000"

Подключение к брокеру сообщений RabbitMQ

Данная строка строится из нескольких частей:

  • amqp:// - не изменяется, служебная часть;

  • user - логин для подключения;

  • : - разделитель логина и пароля;

  • pass - пароль для подключения;

  • @ - разделитель для данных пользователя и хоста;

  • auditor-rabbitmq - имя сервиса в Kubernetes или внешний хост;

  • : - разделитель хоста и порта;

  • 5672 - порт, на котором RabbitMQ "слушает" подключения.

Значения по умолчанию:

<pre class="language-yaml">configs: secret: variables: AMQP_HOST_STRING: "amqp://user:pass@auditor-rabbitmq:5672" # "auditor-rabbitmq" - имя Service в Kubernetes или внешний хост </pre>

Чтобы поменять значения по умолчанию (которые принимает RabbitMQ), необходимо изменить следующие поля:

rabbitmq: auth: username: user password: pass

Ingress

Ingress-контроллер - компонент Kubernetes, который управляет входящим трафиком для сервисов.

  • ingress.host - доменное имя Вашего Auditor;

  • ingress.class - класс контроллера в Вашем кластере;

  • ingress.tls.enabled - включение TLS для Вашего Auditor;

  • ingress.tls.secretName - имя Kubernetes-секрета, в котором лежит Ваш сертификат. Если поле ingress.tls.enabled имеет значение false, указывать значение секрета не требуется.

Значения по умолчанию:

ingress: enabled: true host: "auditor.example.com" class: nginx tls: enabled: true secretName: "" ## Имя секрета annotations: labels: {} path: "/" pathType: Prefix

Другие настройки

Сканеры в Kubernetes

После обновления 2.1.4 появилась возможность запускать сканеры в качестве pods в Kubernetes. Для этого нужно настроить следующие поля в values.yaml:

configs: secret: STORAGE_CLASS_NAME: "" kube: enabled: true namespace: ""

Поле configs.secret.STORAGE_CLASS_NAME отвечает за наименование storageClass Вашего кластера. Например longhorn.

Поле configs.kube.enabled отвечает за включение функции.

Поле configs.kube.namespace отвечает за namespace, в котором будут создаваться pods. Обязательно указывайте данный параметр, даже если в команде установки есть флаг -n <ваш_namespace>.

Секреты

При необходимости использования внешних хранилищ секретов необходимо выключить создание секретов при помощи Helm-чарта:

configs: secret: create: false

Шаг 5: Развертывание приложения в кластер Kubernetes

В примере по умолчанию используется установленный ранее ingress controller "nginx" и PostgreSQL, Redis и RabbitMQ из Helm-чарта от Bitnami:

<pre class="language-bash">helm upgrade —install auditor auditor/appsecauditor -n auditor —create-namespace -f ./values.yaml </pre>

После первого входа вы получите Access Token.

Скопируйте и задайте переменную Access Token, убрав # перед переменной.

configs: secret: variables: ACCESS_TOKEN: "<значение_из_веб_интерфейса>"

Обновите инсталляцию:

helm upgrade --install auditor auditor/appsecauditor -n auditor --create-namespace -f ./values.yaml

Сохраните значение Access Token в безопасном месте для дальнейшего использования при настройке Auditor.

Установка с помощью Docker-compose

Шаг 1: Клонируйте репозиторий

Клонируйте репозиторий Auditor на свой сервер:

git clone https://gitlab.cybercodereview.ru/cybercodereview/auditor.git auditor

Шаг 2: Перейдите в корневой каталог

Перейдите в корневой каталог проекта Auditor, выполнив следующую команду:

cd auditor

Шаг 3: Задайте переменные окружения

Создайте файл .env в корневой папке проекта.

Пример файла .env:

DB_NAME=postgres DB_USER=postgres DB_PASS=postgres DB_HOST=postgres DB_PORT=5432 RABBITMQ_DEFAULT_USER=admin RABBITMQ_DEFAULT_PASS=mypass AMQP_HOST_STRING=amqp://admin:mypass@rabbitmq:5672/ DOCKER_ENCRYPTION_TOKEN=defaultvaluetobechangedorelse... ACCESS_TOKEN=<значение_из_веб_интерфейса> IMAGE_VERSION=<актуальный_тег>
  • DB_NAME, DB_USER, DB_PASS, DB_HOST, DB_PORT переменные, необходимые для настройки базы данных.

  • Если брокер сообщений размещен на стороннем сервере, то только переменная AMQP_HOST_STRING должна быть задана. Однако, если контейнер поднимается локально, то все три переменные, включая RABBITMQ_DEFAULT_USER и RABBITMQ_DEFAULT_PASS должны быть заданы. Имя пользователя и пароль в переменных RABBITMQ_DEFAULT_PASS и RABBITMQ_DEFAULT_USER должны быть такими же, как в переменной AMQP_HOST_STRING.

  • Переменная DOCKER_ENCRYPTION_TOKEN необходима при доступе к образам из приватного репозитория. Если ваш репозиторий требует аутентификации, укажите здесь соответствующий токен шифрования.

  • ACCESS_TOKEN: После первого запуска Auditor (шаг 4) вы получите значение токена доступа. Необходимо скопировать его и поместить значение в файл .env.

  • IMAGE_VERSION: эта переменная указывает версию образов Docker для запуска. Актуальный тег Вы можете найти на странице репозитория.

Шаг 4. Запустите Auditor

В командной строке терминала перейдите в каталог, где находится файл docker-compose.yml.

Запустите приложение, выполнив следующую команду:

docker compose up -d

Это запустит все службы, описанные в файле docker-compose.yml в фоновом режиме.

После успешного выполнения команды docker compose up -d ваше приложение должно быть доступно на порту, указанном в конфигурации (по умолчанию используется порт 8080).

После первого запуска Вы получите Access Token.
Скопируйте его и задайте в файле .env в качестве значения переменной ACCESS_TOKEN (шаг 3).

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

docker compose down
docker compose up -d

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