Общие шаги подготовки окружения#
Замечание о работе с секретами
При использовании Vault все секреты размещаются в Vault, иначе все секреты размещаются в объектах Secret
Хранение разных по сути секретов (например, учетные данные OIDC и БД) возможно как по отдельности (в разных объектах Secret / по разным путям в Vault KV Engine), так и с произвольной группировкой
Далее приведены примеры для обоих случаев
Для TLS между клиентами и MPSM необходима установка с Ingress Gateway, подробнее в «Подготовка сертификатов для входящих соединений».
Предусловия для установки:
Развернутый и настроенный кластер Платформы (DropApp 1.1 и выше / Kubernetes 1.21 и выше);
Развернутый компонент POLM;
В кластере создан проект для развертывания MPSM;
В проекте создана учетная запись с правами на загрузку артефактов (администратор проекта);
Получена ссылка на целевой Docker-репозиторий;
Определены DNS-имя / IP-адрес и порт, по которым MPSM будет доступен для пользователей после установки;
Для использования TLS: подготовлены сертификаты для входящих соединений (Ingress Gateway / Ingress-контроллера): см. «Подготовка сертификатов для входящих соединений»;
При использовании Ingress Gateway: включена поддержка SSL Passthrough в Ingress-контроллере кластера (отключена по умолчанию в nginx-ingress-controller);
Для mpsm подготовлены ключи аутентификации: см. «Подготовка ключей для аутентификации на mpsm»;
При использовании внешней БД: см. «Подготовка при использовании внешней БД»;
Для использования GigaChat: см. «Подготовка при использовании GigaChat»;
При установке с использованием консоли, на рабочем месте должен быть установлен клиент Kubernetes (kubectl) и Helm.
Подготовка ключей для аутентификации на mpsm#
Некоторые действия должны выполняться операторами Vault.
Генерация ключей:
Сгенерируйте ключ подписи cookie, выполнив команду «dd if=/dev/urandom bs=12 count=1 | base64 | base64».
Сгенерируйте ключ аутентификации запросов mpsm, выполнив команду «dd if=/dev/urandom bs=12 count=1 | base64 | base64».
Создайте или обновите секреты (объекты Secret в целевом namespace или Key-Value секреты в Vault):
Со сгенерированными ключами: например,
mpsmс полямиsession-cookie-secretиauth-jwt-keyсоответственно.
Подготовка при аутентификации по протоколу OIDC#
Действия по настройке аутентификации по протоколу OIDC приведены на примере KCSE. Некоторые действия должны выполняться операторами OIDC-провайдера и/или Vault.
Предусловия:
Подготовлены сертификаты для mTLS-соединения с OIDC-провайдером.
Действия в KCSE:
В KCSE в выбранном Realm создайте клиента с протоколом OpenID Connect.
Установите клиенту тип Confidential.
Добавьте клиенту Mapper типа User Client Role, добавляющий в userinfo Claim «roles» с JSON-типом string. В поле Client ID выберите только что созданного клиента.
Добавьте клиенту Mapper типа Group Membership, добавляющий в userinfo Claim «groups» с JSON-типом string. Включите передачу полной иерархии групп (Full group path).
Добавьте клиенту две Role с именами «admin» и «audit». Также допускается создание собственных ролей с префиксом «x-»; гарантируется, что они не будут конфликтовать со встроенными ролями портала.
Укажите клиенту Callback URL вида
http(s)://<ingress-host>/api/auth/keycloak-oidc/handler/frame, где<ingress-host>— адрес, по которому MPSM доступен для пользователей.Сохраните Client ID и Client Secret созданного клиента, Discovery URL Realm-а для дальнейших шагов.
Создайте или обновите секреты (объекты Secret в целевом namespace или Key-Value секреты в Vault):
С client secret: например,
mpsmс полемoidc-client-secret.С CA-сертификатом (также клиентским сертификатом и приватным ключом для mTLS): например,
mpsm-egress-oidcилиmpsm-sidecar-oidcс полемca.crt(такжеtls.crtиtls.keyдля mTLS). Для тестовых окружений возможно взаимодействие без TLS или с отключенной проверкой сертификатов, в таком случае секрет не требуется.
Подготовка при использовании внешней БД#
Некоторые действия должны выполняться операторами Vault.
Предусловия:
На сервере PostgreSQL созданы выделенная база данных и пользователь с правами owner на нее;
Получены адрес и порт для подключения к серверу, имя базы данных, логин и пароль для аутентификации, сертификат для mTLS-соединения (при необходимости).
Создайте или обновите секреты (объекты Secret в целевом namespace или Key-Value секреты в Vault):
С логином и паролем: например,
mpsmс полямиdb-userиdb-password.С CA-сертификатом для TLS-соединения (при необходимости).
Подготовка сертификатов для входящих соединений#
Некоторые действия должны выполняться операторами Vault.
При установке с Ingress Gateway вся цепочка взаимодействия между клиентами и MPSM защищается TLS. При установке без Ingress Gateway TLS защищается соединение между клиентом и Ingress-контроллером, но не между Ingress-контроллером и MPSM.
Предусловия:
Определены DNS-имя / IP-адрес и порт, по которым MPSM будет доступен для пользователей после установки.
При использовании Ingress Gateway и Vault PKI Engine:
Определены параметры запрашиваемого у PKI Engine сертификата, как минимум:
Common Name =
<ingress-host>, где<ingress-host>— адрес, по которому MPSM доступен для пользователей;Формат сертификата = PEM;
Формат секретного ключа = PEM.
Убедитесь, что в PKI Engine настроена роль для выпуска сертификатов Ingress Gateway:
Роль устанавливает Server flag в поле Extended Key Usage;
Роль разрешает выпуск сертификатов с Common Name и прочими определенными выше параметрами.
При использовании Ingress Gateway и Vault KV Engine / при использовании секрета Kubernetes (независимо от Ingress Gateway):
Выпущен сертификат, подходящий для адреса, по которому MPSM доступен для пользователей.
Получены сертификат, приватный ключ и CA-сертификат.
Создайте или обновите секреты (объекты Secret в целевом namespace или Key-Value секреты в Vault):
С сертификатом и приватным ключом в полях
tls.crtиtls.key: например,mpsm-ingress.
Подготовка при использовании GigaChat#
Получите доступ к API GigaChat по схеме «pay-as-you-go», следуя разделу «Регистрация и покупка токенов» документации GigaChat.
Получите Client ID и Client Secret, , следуя разделу «Начало работы с API» документации GigaChat.
Обеспечьте сетевой доступ либо проксирование для адресов:
https://ngw.devices.sberbank.ru:9443— получение токенов авторизации для API GigaChat;https://gigachat.devices.sberbank.ru— API GigaChat.
Получите CA-сертификат НУЦ Минцифры, следуя разделу «Использование сертификатов НУЦ Минцифры в GigaChat» документации GigaChat (либо получите внутренний CA-сертификат при проксировании с анализом трафика).
Создайте или обновите секреты (объекты Secret в целевом namespace или Key-Value секреты в Vault):
с ключом аутентификации в форме
base64(clientId + ":" + clientSecret): например,mpsmс полемgigachat-token;с CA-сертификатами для получения токенов авторизации и для API GigaChat: например,
mpsm-sidecarс полямиgigachat-auth-ca.crtиgigachat-api-ca.crt.