С чего начать

Платформа “Штурвал” совместима с внешними сервисами аутентификации по протоколу OIDC OAuth 2.0.

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

Вы можете подключить внешние сервисы аутентификации:

Когда в кластере управления работают сервисы такие как: ArgoCD, Grafana, то при изменении сервиса аутентификации изменения в ssc не потребуются.

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

Подготовка к настройке подключения внешнего сервиса в платформе

Требования к внешнему сервису

Для корректной интеграции с платформой “Штурвал” на стороне внешнего сервиса аутентификации (Blitz, Keycloak) в access_token должны быть настроены поля:

  • sub, где указывается username пользователя;
  • claims - атрибут группы пользователя;
  • aud - client_id;
  • name - как правило соответствует полю Display name. Может соответствовать samAccountName;
  • email - должен соответствовать полю mail;
  • preferred_username - должен соответствовать полю samAccountName;
  • iss - URL issuer провайдера аутентификации;
  • jti, exp, iat - должны формироваться в соответствии с RFC 7519.

Требования к конфигурации внешнего сервиса

До подключения внешнего сервиса аутентификации в платформе “Штурвал”:

  1. Подготовьте конфигурацию внешнего провайдера. Для этого:
  • Получите корневой CA сертификат внешнего сервиса аутентификации, закодированный в base64. Вы можете запросить сертификат у администратора внешнего сервиса аутентификации или получить его способом, приведенным далее:

    • В интерфейсе командной строки подключитесь по SSH к сервису аутентификации и получите сертификат, закодированый в base64.
Команда
cat <путь до файла сертификата внешнего сервиса аутентификации> | base64

Например, путь до файла сертификата внешнего сервиса аутентификации: /usr/share/keycloak/cert/keycloak.shturval.crt.

Пример ответа
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tClvRgdC10YDRgtC40YTQuNC60LDRgiDQstC90LXRiNC90LXQs9C+INGB0LXRgNCy0LjRgdCwINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LhdCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=
  • Сформируйте конфигурацию внешнего провайдера согласно примеру, использовав ваши значения параметров.
Пример конфигурации внешнего провайдера
{
  "name": <ваше значение параметра>, 
  "issuerUrl": <ваше значение параметра>, 
  "codeVerifyMethod": <ваше значение параметра>, 
  "client": {
    "clientId": <ваше значение параметра>, 
    "clientSecret": <ваше значение параметра>
  },
  "insecureSkipVerify": <ваше значение параметра>, 
  "caBundle": <ваше значение параметра>  
}
Параметр Описание Пример
name Имя конфигурации (задайте любое) keycloak
issuerUrl URL issuer провайдера аутентификации. Например, для Keycloak, Issuer находится в разделе Identity providers в блоке OpenID Connect settings https://keycloak.ip-XX-XX-XX-XX.shturval.link/realms/shturval
codeVerifyMethod Если в Keycloak включен Proof Key for Code Exchange Code (PKCE) Challenge Method, укажите Challenge Method в параметре codeVerifyMethod. Поддерживаются только S256 и plain. Когда Challenge Method не включен, оставьте codeVerifyMethod пустым или не указывайте его. S256
client.clientId ID клиента провайдера аутентификации внешнего сервиса аутентификации shturval_unikeycloak_backend_client_id
client.clientSecret Секрет клиента провайдера аутентификации внешнего сервиса аутентификации. Например, для Keycloak clientSecret находится в разделе Clients на странице клиента, вкладка Credentials в поле Client Secret HG0rxJMKopmAGSasDxDtkJYQH
insecureSkipVerify Устанавливать ли tls-соединение true
caBundle Закодированный в base64 корневой CA сертификат внешнего сервиса аутентификации. Добавьте в caBundle, полученный сертификат, закодированный в base64. *

*LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tClvRgdC10YDRgtC40YTQuNC60LDRgiDQstC90LXRiNC90LXQs9C+INGB0LXRgNCy0LjRgdCwINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LhdCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=

Если пользователям в графическом интерфейсе доступна возможность выбора сервиса аутентификации (внешний, внутренний), в окне аутентификации будет отображаться указанное значение в параметре name.

Скриншот

authextern

  1. Закодируйте в base64 конфигурацию, подготовленную на предыдущем шаге.

  2. Загрузите и сохраните действующие kubeconfigs кластеров (клиентских кластеров, кластера управления). Kubeconfig потребуется для подключения к кластеру из консоли.

×