Установка
Пошаговое руководство по развертыванию Auditor
Системные требования для использования Auditor:
Минимальные системные ресурсы: 16 ГБ ОЗУ и 4 ядра ЦПУ.
Свободное дисковое пространство для установки и хранения данных Auditor.
Доступ по сети до и от Security Center и к месту расположения вашего актива (месту расположения сканируемого продукта).
Операционная система с поддержкой Docker или Kubernetes (рекомендуется любая Linux-система).
{% hint style="danger" %} Для улучшения стабильности работы рекомендуется устанавливать Auditor и Security Center на разных машинах (физических или виртуальных)
{% endhint %}
Подготовка
Перед установкой Auditor убедитесь, что на вашем компьютере установлено следующее программное обеспечение:
Тип установки с использованием Docker:
Docker (версия 19.03 или выше);
Docker Compose (версия 1.26 или выше);
Установка в среде 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 |
Gitlab Semgrep | metrics.semgrep.dev |
RetireJS | registry.npmjs.org |
Semgrep | semgrep.dev |
Snyk | pypi.org |
Terrascan | raw.githubusercontent.com |
Trivy Code Dependencies | ghcr.io |
Trivy Image Dependencies | ghcr.io |
Установка
Вариант 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.