Установка с помощью Helm

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

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

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

helm repo add securitycenter https://gitlab.cybercodereview.ru/api/v4/projects/47/packages/helm/stable

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

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

helm repo update

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

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

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

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

global: image: tag: "<актуальный_тег>" configs: configmap: variables: COOKIES_SECURE: "True" DOMAIN: "https://security-center.example.com" secret: variables: DB_HOST: "security-center-postgres" # имя Service в Kubernetes или внешний хост DB_PORT: "5432" DB_NAME: "securitycenter" DB_USER: "user" DB_PASS: "pass" # auditor-rabbitmq - имя Service в Kubernetes или внешний хост AMQP_HOST_STRING: "amqp://user:pass@security-center-rabbitmq:5672" ingress: enabled: true host: "security-center.example.com" class: nginx tls: enabled: true secretName: "<имя секрета>" annotations: labels: {}

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

Тег

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

Например:

global: image: tag: "2.7.1"

Webhook для интеграции с Jira

Для настройки Webhook добавьте в файл values.yaml следующие поля:

webhook: ingress: path: "/api/v1/jira-helper/jira-event/<your-webhook>/"

Замените "your-webhook" в значении переменной на предварительно сгенерированный Webhook в Jira.

Домен

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

configs: configmap: variables: COOKIES_SECURE: "True" DOMAIN: "https://security-center.example.com"

COOKIES_SECURE: переменная определяет флаг безопасной передачи cookies. Она должна быть установлена в значение True, если вы используете HTTPS.

Укажите в переменной DOMAIN хост, по которому будет доступен Security Center.

Подключение к СУБД 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- Пользователь для базы данных из верхнего пункта.

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

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

configs: secret: variables: DB_HOST: "security-center-postgres" # имя Service в Kubernetes или внешний хост DB_PORT: "5432" DB_NAME: "auditor" DB_USER: "user" DB_PASS: "pass"

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

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

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

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

  • amqp://\ - Не меняем, служебная часть.

  • user\ - Логин для подключения.

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

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

  • @\ - Разделитель для данных и хоста.

  • auditor-rabbitmq\ - Либо имя сервиса в Kubernetes, либо внешний хост.

  • :\ - Разделитель между хостом и портом.

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

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

configs: secret: variables: AMQP_HOST_STRING: "amqp://user:pass@security-center-rabbitmq:5672" # auditor-rabbitmq - имя Service в Kubernetes или внешний хост

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

rabbitmq: auth: username: user password: pass

Ingress

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

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

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

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

  • ingress.tls.secretName- Имя Kubernetes секрета, в котором лежит Ваш сертификат. Если верхнее полеfalse, можно игнорировать данное поле.

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

ingress: enabled: true host: "security-center.example.com" class: nginx tls: enabled: true secretName: "" ## Имя секрета annotations: labels: {}

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

Секреты

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

configs: secret: create: false

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

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

helm upgrade --install security-center securitycenter/securitycenter -n security-center --create-namespace -f ./values.yaml

Шаг 6: Создайте пользователя с привилегированными правами

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

kubectl get pods -n <namespace> kubectl exec -it -n <namespace> <security-center-backend_pod> -c backend -- /bin/sh python3 manage.py createsuperuser --username admin

Этот пользователь и пароль позволяют выполнить вход в установленный Security Center

Следующий шаг: Запустите Security Center и добавьте лицензию