Подключить внешний сервис аутентификации

Платформа “Штурвал” совместима с внешними сервисами аутентификации по протоколу OIDC OAuth 2.0. Вы можете подключить внешние сервисы аутентификации: Blitz, Keycloak.

Для подключения внешнего сервиса аутентификации, необходимо внести изменения в спецификацию модуля программного управления Платформой (shturval-backend).

Обратите внимание!

  1. До подключения внешнего провайдера аутентификации загрузите и сохраните действующие kubeconfigs кластеров (клиентских кластеров, кластера управления). Kubeconfig потребуется для подключения к кластеру из консоли.
  2. Для корректной интеграции с платформой “Штурвал” на стороне внешнего сервиса аутентификации (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.

Рекомендуется выполнять подключение внешних сервисов аутентификации из консоли.

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

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

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

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

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

Пример ответа
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlES3pDQ0FoT2dBd0lCQWdJVUhONU5BNWdyK3Y3MnZOakJnVml3TFRFREQ4d3dEUVlKS29aSWh2Y05BUUVMXG5CUUF3TVRFdk1DMEdBMVVFQXd3bWEyVjVZMnh2WVdzdWFYQXRNVEF0TXpFdE1UUTFMVFF4TG5Ob2RIVnlkbUZzXG5MbXhwYm1zd0hoY05NalF4TURJME1USXhNRFF3V2hjTk16UXhNREl5TVRJeE1EUXdXakF4TVM4d0xRWURWUVFEXG5EQ1pyWlhsamJHOWhheTVwY0MweE1DMHpNUzB4TkRVdE5ERXVjMmgwZFhKMllXd3ViR2x1YXpDQ0FTSXdEUVlKXG5Lb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFKanE3d0hVM1ZRRElPZVgzMmthc0hzZXNNTllSbFFEXG5kaUpqNEJiQXNHb2N4dmRlTWUvM3k3d09CQmZoZXROY0JlL0F5NFVyVzJLYUNqeE9XTTJ6YTNGOEw1QytEZ2h0XG5ldnVLNFUrV3FDcWJFWGVsT25ydlA3UkRQNmpFeHdoalRrSnNaVmFmaE5OMjhnakd6dW40SVZ1K05HUGYyakYwXG4rR1plTE1SZzRVcnRYTnR0YmZ4N3YzQUd0eGdJUnE5THEyM0VEai9VbFd1QXEyOHpiaTVESUpzNjFiOHV6WGlpXG5TR3V5M2YzQzBkQ0czdFBUc0dxeFRtM3hUaEVsQ3RNeHc0dVBDK1d1VmJ1YmpoYzYxMXZOa08yZUloN20wVlJXOEFkV0FjUGlsRmFyYmNIOUVzUzI2Snp2VFY4dGkwZVp4M01ZSFxueDRVb1JVU1NUTFRtNHVubG9UNkY1ZXZBQ0FiZ2J2TWlDNmFJVGVGbEthUUhPL3FKWGNvQ01QMXRmOGJKbFM4PVxuLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==
  1. Подготовить конфигурацию внешнего провайдера, использовав ваши значения параметров, и закодировать ее в base64.
Пример конфигурации внешнего провайдера
{
  "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. *

*LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlES3pDQ0FoT2dBd0lCQWdJVUhONU5BNWdyK3Y3MnZOakJnVml3TFRFREQ4d3dEUVlKS29aSWh2Y05BUUVMXG5CUUF3TVRFdk1DMEdBMVVFQXd3bWEyVjVZMnh2WVdzdWFYQXRNVEF0TXpFdE1UUTFMVFF4TG5Ob2RIVnlkbUZzXG5MbXhwYm1zd0hoY05NalF4TURJME1USXhNRFF3V2hjTk16UXhNREl5TVRJeE1EUXdXakF4TVM4d0xRWURWUVFEXG5EQ1pyWlhsamJHOWhheTVwY0MweE1DMHpNUzB4TkRVdE5ERXVjMmgwZFhKMllXd3ViR2x1YXpDQ0FTSXdEUVlKXG5Lb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFKanE3d0hVM1ZRRElPZVgzMmthc0hzZXNNTllSbFFEXG5kaUpqNEJiQXNHb2N4dmRlTWUvM3k3d09CQmZoZXROY0JlL0F5NFVyVzJLYUNqeE9XTTJ6YTNGOEw1QytEZ2h0XG5ldnVLNFUrV3FDcWJFWGVsT25ydlA3UkRQNmpFeHdoalRrSnNaVmFmaE5OMjhnakd6dW40SVZ1K05HUGYyakYwXG4rR1plTE1SZzRVcnRYTnR0YmZ4N3YzQUd0eGdJUnE5THEyM0VEai9VbFd1QXEyOHpiaTVESUpzNjFiOHV6WGlpXG5TR3V5M2YzQzBkQ0czdFBUc0dxeFRtM3hUaEVsQ3RNeHc0dVBDK1d1VmJ1YmpoYzYxMXZOa08yZUloN20wVlJXOEFkV0FjUGlsRmFyYmNIOUVzUzI2Snp2VFY4dGkwZVp4M01ZSFxueDRVb1JVU1NUTFRtNHVubG9UNkY1ZXZBQ0FiZ2J2TWlDNmFJVGVGbEthUUhPL3FKWGNvQ01QMXRmOGJKbFM4PVxuLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==

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

Скриншот

authextern

Keycloak

Подключение Keycloak из консоли

Когда получена конфигурация внешнего провайдера, авторизуйтесь в платформе “Штурвал” по kubeconfig, полученному при инсталляции платформы или можно взять его с мастер узла платформы /etc/kubernetes/admin.conf.

  1. Получите ssc shturval-backend и сохраните исходную ssc, чтобы иметь возможность быстро откатить изменения в случае ошибки:
Команда
# Получите ssc shturval-backend
kubectl get ssc shturval-backend -o yaml > shturval-backend-ssc.yaml
# Сохранить исходную ssc
cp shturval-backend-ssc.yaml shturval-backend-ssc.yaml.backup
  1. Удалите из shturval-backend-ssc.yaml раздел status, параметры и их значения:
Удаляемые параметры
 creationTimestamp:
 resourceVersion:
 uid: 
 finalizers:
 generation:
 annotations: 
  1. В spec.customvalues сконфигурируйте параметры.
Пример customvalues
customvalues
    AUTH_EXTERNAL_IDP_SECRET_BASE64: <ваше значение параметра>
    AUTH_IDP_ACTIVE: <ваше значение параметра>
    SKIP_INTERNAL_AUTH_FORM: <ваше значение параметра>
Параметр Описание Тип данных Пример
AUTH_EXTERNAL_IDP_SECRET_BASE64 Конфигурация внешнего провайдера, закодированная в base64, полученная на этапе подготовки к настройке подключения внешнего сервиса string base64*
AUTH_IDP_ACTIVE Подключение внешнего провайдера аутентификации. При необходимости отключения Keycloak достаточно установить false в этом параметре boolean true
SKIP_INTERNAL_AUTH_FORM Возможность аутентификации в графическом интерфейсе с внешним сервисом. Если данный параметр не будет установлен или его значение false, то для аутентификации будут доступны внешний и внутренний сервисы. Если значение true, будет доступен только внешний boolean true

*ewogICJuYW1lIjogImtleWNsb2FrIiwgCiAgImlzc3VlclVybCI6ICJodHRwczovL2tleWNsb2FrLmlwLVhYLVhYLVhYLVhYLnNodHVydmFsLmxpbmsvcmVhbG1zL3NodHVydmFsIiwgCiAgImNvZGVWZXJpZnlNZXRob2QiOiAiUzI1NiIsIAogICJjbGllbnQiOiB7CiAgICAiY2xpZW50SWQiOiAic2h0dXJ2YWxfdW5pa2V5Y2xvYWtfYmFja2VuZF9jbGllbnRfaWQiLCAKICAgICJjbGllbnRTZWNyZXQiOiAiSEcwcnhKTUtvcG1BR1Nhc0R4RHRrSllRSCIgCiAgfSwKICAiaW5zZWN1cmVTa2lwVmVyaWZ5IjogdHJ1ZSwgCiAgImNhQnVuZGxlIjogIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdFhHNU5TVWxFUzNwRFEwRm9UMmRCZDBsQ1FXZEpWVWhPTlU1Qk5XZHlLM1kzTW5aT2FrSm5WbWwzVEZSRlJFUTRkM2RFVVZsS1MyOWFTV2gyWTA1QlVVVk1YRzVDVVVGM1RWUkZkazFETUVkQk1WVkZRWGQzYldFeVZqVlpNbmgyV1ZkemRXRllRWFJOVkVGMFRYcEZkRTFVVVRGTVZGRjRURzVPYjJSSVZubGtiVVp6WEc1TWJYaHdZbTF6ZDBob1kwNU5hbEY0VFVSSk1FMVVTWGhOUkZGM1YyaGpUazE2VVhoTlJFbDVUVlJKZUUxRVVYZFhha0Y0VFZNNGQweFJXVVJXVVZGRVhHNUVRMXB5V2xoc2FtSkhPV2hoZVRWd1kwTXdlRTFETUhwTlV6QjRUa1JWZEU1RVJYVmpNbWd3WkZoS01sbFhkM1ZpUjJ4MVlYcERRMEZUU1hkRVVWbEtYRzVMYjFwSmFIWmpUa0ZSUlVKQ1VVRkVaMmRGVUVGRVEwTkJVVzlEWjJkRlFrRkthbkUzZDBoVk0xWlJSRWxQWlZnek1tdGhjMGh6WlhOTlRsbFNiRkZFWEc1a2FVcHFORUppUVhOSGIyTjRkbVJsVFdVdk0zazNkMDlDUW1ab1pYUk9ZMEpsTDBGNU5GVnlWekpMWVVOcWVFOVhUVEo2WVROR09FdzFReXRFWjJoMFhHNWxkblZMTkZVclYzRkRjV0pGV0dWc1QyNXlkbEEzVWtSUU5tcEZlSGRvYWxSclNuTmFWbUZtYUU1T01qaG5ha2Q2ZFc0MFNWWjFLMDVIVUdZeWFrWXdYRzRyUjFwbFRFMVNaelJWY25SWVRuUjBZbVo0TjNZelFVZDBlR2RKVW5FNVRIRXlNMFZFYWk5VmJGZDFRWEV5T0hwaWFUVkVTVXB6TmpGaU9IVjZXR2xwWEc1VFIzVjVNMll6UXpCa1EwY3pkRkJVYzBkeGVGUnRNM2hVYUVWc1EzUk5lSGMwZFZCREsxZDFWbUoxWW1wb1l6WXhNWFpPYTA4eVpVbG9OMjB3VmxKWE9FRmtWMEZqVUdsc1JtRnlZbU5JT1VWelV6STJTbnAyVkZZNGRHa3daVnA0TTAxWlNGeHVlRFJWYjFKVlUxTlVURlJ0TkhWdWJHOVVOa1kxWlhaQlEwRmlaMkoyVFdsRE5tRkpWR1ZHYkV0aFVVaFBMM0ZLV0dOdlEwMVFNWFJtT0dKS2JGTTRQVnh1TFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUT09IiAgCn0=

Пример ssc shturval-backend
apiVersion: ops.shturval.tech/v1beta1
kind: ShturvalServiceConfig
metadata:
  annotations:
    shturval.tech/description: Модуль программного управления Платформой. Прикладной
      программный интерфейс управления Платформой.
    shturval.tech/name: Модуль программного управления Платформой
    shturval.tech/single-instance: "true"
    updatedDate: "2024-11-11T11:48:01Z"
    username: shturval
  labels:
    k8slens-edit-resource-version: v1beta1
    ssc.shturval.tech/type: system
  name: shturval-backend
spec:
  chart: shturval-backend
  customvalues: |
    AUTH_EXTERNAL_IDP_SECRET_BASE64: <ваше значение параметра>
    AUTH_IDP_ACTIVE: <ваше значение параметра>
    SKIP_INTERNAL_AUTH_FORM: <ваше значение параметра>
# Здесь могут быть другие параметры

  dependency:
  - shturval-backend-crds
  - shturval-ingress-controller
  insecure: true
  iscritical: false
  mode: manual
  namespace: shturval-backend
  reponame: shturval
  version: 2.10.0
Параметр Описание Тип данных Пример
AUTH_EXTERNAL_IDP_SECRET_BASE64 Конфигурация внешнего провайдера, закодированная в base64 string base64*
AUTH_IDP_ACTIVE Подключение внешнего провайдера аутентификации. При необходимости отключения Keycloak достаточно установить false в этом параметре boolean true
SKIP_INTERNAL_AUTH_FORM Возможность аутентификации в графическом интерфейсе с внешним сервисом. Если данный параметр не будет установлен или его значение false, то для аутентификации будут доступны внешний и внутренний сервисы. Если значение true, будет доступен только внешний boolean true

*ewogICJuYW1lIjogImtleWNsb2FrIiwgCiAgImlzc3VlclVybCI6ICJodHRwczovL2tleWNsb2FrLmlwLVhYLVhYLVhYLVhYLnNodHVydmFsLmxpbmsvcmVhbG1zL3NodHVydmFsIiwgCiAgImNvZGVWZXJpZnlNZXRob2QiOiAiUzI1NiIsIAogICJjbGllbnQiOiB7CiAgICAiY2xpZW50SWQiOiAic2h0dXJ2YWxfdW5pa2V5Y2xvYWtfYmFja2VuZF9jbGllbnRfaWQiLCAKICAgICJjbGllbnRTZWNyZXQiOiAiSEcwcnhKTUtvcG1BR1Nhc0R4RHRrSllRSCIgCiAgfSwKICAiaW5zZWN1cmVTa2lwVmVyaWZ5IjogdHJ1ZSwgCiAgImNhQnVuZGxlIjogIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdFhHNU5TVWxFUzNwRFEwRm9UMmRCZDBsQ1FXZEpWVWhPTlU1Qk5XZHlLM1kzTW5aT2FrSm5WbWwzVEZSRlJFUTRkM2RFVVZsS1MyOWFTV2gyWTA1QlVVVk1YRzVDVVVGM1RWUkZkazFETUVkQk1WVkZRWGQzYldFeVZqVlpNbmgyV1ZkemRXRllRWFJOVkVGMFRYcEZkRTFVVVRGTVZGRjRURzVPYjJSSVZubGtiVVp6WEc1TWJYaHdZbTF6ZDBob1kwNU5hbEY0VFVSSk1FMVVTWGhOUkZGM1YyaGpUazE2VVhoTlJFbDVUVlJKZUUxRVVYZFhha0Y0VFZNNGQweFJXVVJXVVZGRVhHNUVRMXB5V2xoc2FtSkhPV2hoZVRWd1kwTXdlRTFETUhwTlV6QjRUa1JWZEU1RVJYVmpNbWd3WkZoS01sbFhkM1ZpUjJ4MVlYcERRMEZUU1hkRVVWbEtYRzVMYjFwSmFIWmpUa0ZSUlVKQ1VVRkVaMmRGVUVGRVEwTkJVVzlEWjJkRlFrRkthbkUzZDBoVk0xWlJSRWxQWlZnek1tdGhjMGh6WlhOTlRsbFNiRkZFWEc1a2FVcHFORUppUVhOSGIyTjRkbVJsVFdVdk0zazNkMDlDUW1ab1pYUk9ZMEpsTDBGNU5GVnlWekpMWVVOcWVFOVhUVEo2WVROR09FdzFReXRFWjJoMFhHNWxkblZMTkZVclYzRkRjV0pGV0dWc1QyNXlkbEEzVWtSUU5tcEZlSGRvYWxSclNuTmFWbUZtYUU1T01qaG5ha2Q2ZFc0MFNWWjFLMDVIVUdZeWFrWXdYRzRyUjFwbFRFMVNaelJWY25SWVRuUjBZbVo0TjNZelFVZDBlR2RKVW5FNVRIRXlNMFZFYWk5VmJGZDFRWEV5T0hwaWFUVkVTVXB6TmpGaU9IVjZXR2xwWEc1VFIzVjVNMll6UXpCa1EwY3pkRkJVYzBkeGVGUnRNM2hVYUVWc1EzUk5lSGMwZFZCREsxZDFWbUoxWW1wb1l6WXhNWFpPYTA4eVpVbG9OMjB3VmxKWE9FRmtWMEZqVUdsc1JtRnlZbU5JT1VWelV6STJTbnAyVkZZNGRHa3daVnA0TTAxWlNGeHVlRFJWYjFKVlUxTlVURlJ0TkhWdWJHOVVOa1kxWlhaQlEwRmlaMkoyVFdsRE5tRkpWR1ZHYkV0aFVVaFBMM0ZLV0dOdlEwMVFNWFJtT0dKS2JGTTRQVnh1TFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUT09IiAgCn0=

  1. Примените изменения:
Команда
kubectl apply -f shturval-backend-ssc.yaml
  1. Дождитесь применения изменений. В неймспейсе shturval-backend проверьте данные Secret auth-idps. Он должен содержать конфигурацию, заданную в AUTH_EXTERNAL_IDP_SECRET_BASE64.
Команда

kubectl get secret auth-idps -n shturval-backend -o yaml

  1. Перезапустите поды authn и shturval-backend в неймспейсе shturval-backend.
Команда
# Получите все поды неймспейса shturval-backend
kubectl get pods -n shturval-backend

# Пример ответа
NAME                                             READY   STATUS    RESTARTS        AGE
authn-6944f45ddf-wjs4z                           2/2     Running   0               22h
docs-cb69967db-4b2vs                             1/1     Running   0               15h
monitoring-authz-5d9948c4fd-g9zw7                2/2     Running   0               25h
shturval-backend-f44b94bc4-8tr9v                 3/3     Running   1 (5h34m ago)   22h
shturval-backend-f44b94bc4-swq25                 3/3     Running   0               22h
shturval-backend-redis-master-0                  1/1     Running   0               13d
shturval-frontend-7489c96fcd-l9pzz               1/1     Running   0               25m
shturval-permissions-operator-74c7cc657d-r7q4j   2/2     Running   0               22h

# Перезапуск подов
kubectl delete pod authn-6944f45ddf-wjs4z shturval-backend-f44b94bc4-8tr9v shturval-backend-f44b94bc4-swq25 -n shturval-backend

Когда изменен сервис аутентификации, для доступа в кластер с помощью kubeconfig загрузите и используйте новый kubeconfig. Подробнее о способах получения kubeconfig на странице Действия в кластере.

Подключение Keycloak из графического интерфейса

  1. В кластере управления в боковом меню откройте раздел Сервисы и репозитории и перейдите на страницу Установленные сервисы. На вкладке “shturval” найдите Модуль программного управления Платформой (shturval-backend), перейдите к управлению модулем и в блоке Спецификация сервиса измените параметры.
Скриншот

auth-external externalsscbackend

Пример customvalues
AUTH_EXTERNAL_IDP_SECRET_BASE64: <ваше значение параметра>
AUTH_IDP_ACTIVE: <ваше значение параметра>
SKIP_INTERNAL_AUTH_FORM: <ваше значение параметра>
Параметр Описание Тип данных Пример
AUTH_EXTERNAL_IDP_SECRET_BASE64 Конфигурация внешнего провайдера, закодированная в base64 string base64*
AUTH_IDP_ACTIVE Подключение внешнего провайдера аутентификации. При необходимости отключения Keycloak достаточно установить false в этом параметре boolean true
SKIP_INTERNAL_AUTH_FORM Возможность аутентификации в графическом интерфейсе с внешним сервисом. Если данный параметр не будет установлен или его значение false, то для аутентификации будут доступны внешний и внутренний сервисы. Если значение true, будет доступен только внешний boolean true

*ewogICJuYW1lIjogImtleWNsb2FrIiwgCiAgImlzc3VlclVybCI6ICJodHRwczovL2tleWNsb2FrLmlwLVhYLVhYLVhYLVhYLnNodHVydmFsLmxpbmsvcmVhbG1zL3NodHVydmFsIiwgCiAgImNvZGVWZXJpZnlNZXRob2QiOiAiUzI1NiIsIAogICJjbGllbnQiOiB7CiAgICAiY2xpZW50SWQiOiAic2h0dXJ2YWxfdW5pa2V5Y2xvYWtfYmFja2VuZF9jbGllbnRfaWQiLCAKICAgICJjbGllbnRTZWNyZXQiOiAiSEcwcnhKTUtvcG1BR1Nhc0R4RHRrSllRSCIgCiAgfSwKICAiaW5zZWN1cmVTa2lwVmVyaWZ5IjogdHJ1ZSwgCiAgImNhQnVuZGxlIjogIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdFhHNU5TVWxFUzNwRFEwRm9UMmRCZDBsQ1FXZEpWVWhPTlU1Qk5XZHlLM1kzTW5aT2FrSm5WbWwzVEZSRlJFUTRkM2RFVVZsS1MyOWFTV2gyWTA1QlVVVk1YRzVDVVVGM1RWUkZkazFETUVkQk1WVkZRWGQzYldFeVZqVlpNbmgyV1ZkemRXRllRWFJOVkVGMFRYcEZkRTFVVVRGTVZGRjRURzVPYjJSSVZubGtiVVp6WEc1TWJYaHdZbTF6ZDBob1kwNU5hbEY0VFVSSk1FMVVTWGhOUkZGM1YyaGpUazE2VVhoTlJFbDVUVlJKZUUxRVVYZFhha0Y0VFZNNGQweFJXVVJXVVZGRVhHNUVRMXB5V2xoc2FtSkhPV2hoZVRWd1kwTXdlRTFETUhwTlV6QjRUa1JWZEU1RVJYVmpNbWd3WkZoS01sbFhkM1ZpUjJ4MVlYcERRMEZUU1hkRVVWbEtYRzVMYjFwSmFIWmpUa0ZSUlVKQ1VVRkVaMmRGVUVGRVEwTkJVVzlEWjJkRlFrRkthbkUzZDBoVk0xWlJSRWxQWlZnek1tdGhjMGh6WlhOTlRsbFNiRkZFWEc1a2FVcHFORUppUVhOSGIyTjRkbVJsVFdVdk0zazNkMDlDUW1ab1pYUk9ZMEpsTDBGNU5GVnlWekpMWVVOcWVFOVhUVEo2WVROR09FdzFReXRFWjJoMFhHNWxkblZMTkZVclYzRkRjV0pGV0dWc1QyNXlkbEEzVWtSUU5tcEZlSGRvYWxSclNuTmFWbUZtYUU1T01qaG5ha2Q2ZFc0MFNWWjFLMDVIVUdZeWFrWXdYRzRyUjFwbFRFMVNaelJWY25SWVRuUjBZbVo0TjNZelFVZDBlR2RKVW5FNVRIRXlNMFZFYWk5VmJGZDFRWEV5T0hwaWFUVkVTVXB6TmpGaU9IVjZXR2xwWEc1VFIzVjVNMll6UXpCa1EwY3pkRkJVYzBkeGVGUnRNM2hVYUVWc1EzUk5lSGMwZFZCREsxZDFWbUoxWW1wb1l6WXhNWFpPYTA4eVpVbG9OMjB3VmxKWE9FRmtWMEZqVUdsc1JtRnlZbU5JT1VWelV6STJTbnAyVkZZNGRHa3daVnA0TTAxWlNGeHVlRFJWYjFKVlUxTlVURlJ0TkhWdWJHOVVOa1kxWlhaQlEwRmlaMkoyVFdsRE5tRkpWR1ZHYkV0aFVVaFBMM0ZLV0dOdlEwMVFNWFJtT0dKS2JGTTRQVnh1TFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUT09IiAgCn0=

Сохраните изменения.

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

  2. В неймспейсе shturval-backend проверьте данные Secret auth-idps. Secret должен содержать конфигурацию, заданную в AUTH_EXTERNAL_IDP_SECRET_BASE64.

  3. Удалите поды authn и shturval-backend в неймспейсе shturval-backend. Поды перезапустятся.

Когда изменен сервис аутентификации, для доступа в кластер с помощью kubeconfig загрузите и используйте новый kubeconfig. Подробнее о способах получения kubeconfig на странице Действия в кластере.

Blitz

Когда получена конфигурация внешнего провайдера, авторизуйтесь в платформе “Штурвал” по kubeconfig, полученному при инсталляции платформы или можно взять его с мастер узла платформы /etc/kubernetes/admin.conf.

ssc shturval-backend

  1. Получите ssc shturval-backend и сохраните исходную ssc, чтобы иметь возможность быстро откатить изменения в случае ошибки:
Команда
# Получите ssc shturval-backend
kubectl get ssc shturval-backend -o yaml > shturval-backend-ssc.yaml
# Сохранить исходную ssc
cp shturval-backend-ssc.yaml shturval-backend-ssc.yaml.backup
  1. Удалите из shturval-backend-ssc.yaml раздел status, параметры и их значения:
Удаляемые параметры
 creationTimestamp:
 resourceVersion:
 uid: 
 finalizers:
 generation:
 annotations: 
  1. В spec.customvalues сконфигурируйте параметры.
Пример customvalues
customvalues
    AUTH_EXTERNAL_IDP_SECRET_BASE64: <ваше значение параметра>
    AUTH_IDP_ACTIVE: <ваше значение параметра>
    SKIP_INTERNAL_AUTH_FORM: <ваше значение параметра>
Параметр Описание Тип данных Пример
AUTH_EXTERNAL_IDP_SECRET_BASE64 Конфигурация внешнего провайдера, закодированная в base64 string base64*
AUTH_IDP_ACTIVE Подключение внешнего провайдера аутентификации. При необходимости отключения Blitz достаточно установить false в этом параметре boolean true
SKIP_INTERNAL_AUTH_FORM Возможность аутентификации в графическом интерфейсе с внешним сервисом. Если данный параметр не будет установлен или его значение false, то для аутентификации будут доступны внешний и внутренний сервисы. Если значение true, будет доступен только внешний boolean true

*ewogICJuYW1lIjogImJsaXR6IiwgCiAgImlzc3VlclVybCI6ICJodHRwczovL2JsaXR6LmlwLVhYLVhYLVhYLVhYLnNodHVydmFsLmxpbmsvcmVhbG1zL3NodHVydmFsIiwgIAogICJjbGllbnQiOiB7CiAgICAiY2xpZW50SWQiOiAic2h0dXJ2YWxfdW5pYmxpdHpfYmFja2VuZF9jbGllbnRfaWQiLCAKICAgICJjbGllbnRTZWNyZXQiOiAiSEcwcnhKTUtvcG1BR1Nhc0R4RHRrSllRSCIgCiAgfSwKICAiaW5zZWN1cmVTa2lwVmVyaWZ5IjogdHJ1ZSwgCiAgImNhQnVuZGxlIjogIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdFhHNU5TVWxFUzNwRFEwRm9UMmRCZDBsQ1FXZEpWVWhPTlU1Qk5XZHlLM1kzTW5aT2FrSm5WbWwzVEZSRlJFUTRkM2RFVVZsS1MyOWFTV2gyWTA1QlVVVk1YRzVDVVVGM1RWUkZkazFETUVkQk1WVkZRWGQzYldFeVZqVlpNbmgyV1ZkemRXRllRWFJOVkVGMFRYcEZkRTFVVVRGTVZGRjRURzVPYjJSSVZubGtiVVp6WEc1TWJYaHdZbTF6ZDBob1kwNU5hbEY0VFVSSk1FMVVTWGhOUkZGM1YyaGpUazE2VVhoTlJFbDVUVlJKZUUxRVVYZFhha0Y0VFZNNGQweFJXVVJXVVZGRVhHNUVRMXB5V2xoc2FtSkhPV2hoZVRWd1kwTXdlRTFETUhwTlV6QjRUa1JWZEU1RVJYVmpNbWd3WkZoS01sbFhkM1ZpUjJ4MVlYcERRMEZUU1hkRVVWbEtYRzVMYjFwSmFIWmpUa0ZSUlVKQ1VVRkVaMmRGVUVGRVEwTkJVVzlEWjJkRlFrRkthbkUzZDBoVk0xWlJSRWxQWlZnek1tdGhjMGh6WlhOTlRsbFNiRkZFWEc1a2FVcHFORUppUVhOSGIyTjRkbVJsVFdVdk0zazNkMDlDUW1ab1pYUk9ZMEpsTDBGNU5GVnlWekpMWVVOcWVFOVhUVEo2WVROR09FdzFReXRFWjJoMFhHNWxkblZMTkZVclYzRkRjV0pGV0dWc1QyNXlkbEEzVWtSUU5tcEZlSGRvYWxSclNuTmFWbUZtYUU1T01qaG5ha2Q2ZFc0MFNWWjFLMDVIVUdZeWFrWXdYRzRyUjFwbFRFMVNaelJWY25SWVRuUjBZbVo0TjNZelFVZDBlR2RKVW5FNVRIRXlNMFZFYWk5VmJGZDFRWEV5T0hwaWFUVkVTVXB6TmpGaU9IVjZXR2xwWEc1VFIzVjVNMll6UXpCa1EwY3pkRkJVYzBkeGVGUnRNM2hVYUVWc1EzUk5lSGMwZFZCREsxZDFWbUoxWW1wb1l6WXhNWFpPYTA4eVpVbG9OMjB3VmxKWE9FRmtWMEZqVUdsc1JtRnlZbU5JT1VWelV6STJTbnAyVkZZNGRHa3daVnA0TTAxWlNGeHVlRFJWYjFKVlUxTlVURlJ0TkhWdWJHOVVOa1kxWlhaQlEwRmlaMkoyVFdsRE5tRkpWR1ZHYkV0aFVVaFBMM0ZLV0dOdlEwMVFNWFJtT0dKS2JGTTRQVnh1TFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUT09IiAKfQ==

Пример ssc shturval-backend
apiVersion: ops.shturval.tech/v1beta1
kind: ShturvalServiceConfig
metadata:
  annotations:
    shturval.tech/description: Модуль программного управления Платформой. Прикладной
      программный интерфейс управления Платформой.
    shturval.tech/name: Модуль программного управления Платформой
    shturval.tech/single-instance: "true"
    updatedDate: "2024-11-11T11:48:01Z"
    username: shturval
  labels:
    k8slens-edit-resource-version: v1beta1
    ssc.shturval.tech/type: system
  name: shturval-backend
spec:
  chart: shturval-backend
  customvalues: |
    AUTH_EXTERNAL_IDP_SECRET_BASE64:  <ваше значение параметра>
    AUTH_IDP_ACTIVE:  <ваше значение параметра>
    SKIP_INTERNAL_AUTH_FORM:  <ваше значение параметра>
# Здесь могут быть другие параметры

  dependency:
  - shturval-backend-crds
  - shturval-ingress-controller
  insecure: true
  iscritical: false
  mode: manual
  namespace: shturval-backend
  reponame: shturval
  version: 2.10.0
Параметр Описание Тип данных Пример
AUTH_EXTERNAL_IDP_SECRET_BASE64 Конфигурация внешнего провайдера, закодированная в base64 string base64*
AUTH_IDP_ACTIVE Подключение внешнего провайдера аутентификации. При необходимости отключения Blitz достаточно установить false в этом параметре boolean true
SKIP_INTERNAL_AUTH_FORM Возможность аутентификации в графическом интерфейсе с внешним сервисом. Если данный параметр не будет установлен или его значение false, то для аутентификации будут доступны внешний и внутренний сервисы. Если значение true, будет доступен только внешний boolean true

*ewogICJuYW1lIjogImJsaXR6IiwgCiAgImlzc3VlclVybCI6ICJodHRwczovL2JsaXR6LmlwLVhYLVhYLVhYLVhYLnNodHVydmFsLmxpbmsvcmVhbG1zL3NodHVydmFsIiwgIAogICJjbGllbnQiOiB7CiAgICAiY2xpZW50SWQiOiAic2h0dXJ2YWxfdW5pYmxpdHpfYmFja2VuZF9jbGllbnRfaWQiLCAKICAgICJjbGllbnRTZWNyZXQiOiAiSEcwcnhKTUtvcG1BR1Nhc0R4RHRrSllRSCIgCiAgfSwKICAiaW5zZWN1cmVTa2lwVmVyaWZ5IjogdHJ1ZSwgCiAgImNhQnVuZGxlIjogIkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdFhHNU5TVWxFUzNwRFEwRm9UMmRCZDBsQ1FXZEpWVWhPTlU1Qk5XZHlLM1kzTW5aT2FrSm5WbWwzVEZSRlJFUTRkM2RFVVZsS1MyOWFTV2gyWTA1QlVVVk1YRzVDVVVGM1RWUkZkazFETUVkQk1WVkZRWGQzYldFeVZqVlpNbmgyV1ZkemRXRllRWFJOVkVGMFRYcEZkRTFVVVRGTVZGRjRURzVPYjJSSVZubGtiVVp6WEc1TWJYaHdZbTF6ZDBob1kwNU5hbEY0VFVSSk1FMVVTWGhOUkZGM1YyaGpUazE2VVhoTlJFbDVUVlJKZUUxRVVYZFhha0Y0VFZNNGQweFJXVVJXVVZGRVhHNUVRMXB5V2xoc2FtSkhPV2hoZVRWd1kwTXdlRTFETUhwTlV6QjRUa1JWZEU1RVJYVmpNbWd3WkZoS01sbFhkM1ZpUjJ4MVlYcERRMEZUU1hkRVVWbEtYRzVMYjFwSmFIWmpUa0ZSUlVKQ1VVRkVaMmRGVUVGRVEwTkJVVzlEWjJkRlFrRkthbkUzZDBoVk0xWlJSRWxQWlZnek1tdGhjMGh6WlhOTlRsbFNiRkZFWEc1a2FVcHFORUppUVhOSGIyTjRkbVJsVFdVdk0zazNkMDlDUW1ab1pYUk9ZMEpsTDBGNU5GVnlWekpMWVVOcWVFOVhUVEo2WVROR09FdzFReXRFWjJoMFhHNWxkblZMTkZVclYzRkRjV0pGV0dWc1QyNXlkbEEzVWtSUU5tcEZlSGRvYWxSclNuTmFWbUZtYUU1T01qaG5ha2Q2ZFc0MFNWWjFLMDVIVUdZeWFrWXdYRzRyUjFwbFRFMVNaelJWY25SWVRuUjBZbVo0TjNZelFVZDBlR2RKVW5FNVRIRXlNMFZFYWk5VmJGZDFRWEV5T0hwaWFUVkVTVXB6TmpGaU9IVjZXR2xwWEc1VFIzVjVNMll6UXpCa1EwY3pkRkJVYzBkeGVGUnRNM2hVYUVWc1EzUk5lSGMwZFZCREsxZDFWbUoxWW1wb1l6WXhNWFpPYTA4eVpVbG9OMjB3VmxKWE9FRmtWMEZqVUdsc1JtRnlZbU5JT1VWelV6STJTbnAyVkZZNGRHa3daVnA0TTAxWlNGeHVlRFJWYjFKVlUxTlVURlJ0TkhWdWJHOVVOa1kxWlhaQlEwRmlaMkoyVFdsRE5tRkpWR1ZHYkV0aFVVaFBMM0ZLV0dOdlEwMVFNWFJtT0dKS2JGTTRQVnh1TFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUT09IiAKfQ== `

  1. Примените изменения:
Команда
kubectl apply -f shturval-backend-ssc.yaml
  1. Дождитесь применения изменений. В неймспейсе shturval-backend проверьте данные Secret auth-idps. Он должен содержать конфигурацию, заданную в AUTH_EXTERNAL_IDP_SECRET_BASE64.
Команда

kubectl get secret auth-idps -n shturval-backend -o yaml

  1. Перезапустите поды authn и shturval-backend в неймспейсе shturval-backend.
Команда
# Получите все поды неймспейса shturval-backend
kubectl get pods -n shturval-backend

# Пример ответа
NAME                                             READY   STATUS    RESTARTS        AGE
authn-6944f45ddf-wjs4z                           2/2     Running   0               22h
docs-cb69967db-4b2vs                             1/1     Running   0               15h
monitoring-authz-5d9948c4fd-g9zw7                2/2     Running   0               25h
shturval-backend-f44b94bc4-8tr9v                 3/3     Running   1 (5h34m ago)   22h
shturval-backend-f44b94bc4-swq25                 3/3     Running   0               22h
shturval-backend-redis-master-0                  1/1     Running   0               13d
shturval-frontend-7489c96fcd-l9pzz               1/1     Running   0               25m
shturval-permissions-operator-74c7cc657d-r7q4j   2/2     Running   0               22h

# Перезапуск подов
kubectl delete pod authn-6944f45ddf-wjs4z shturval-backend-f44b94bc4-8tr9v shturval-backend-f44b94bc4-swq25 -n shturval-backend

Когда изменен сервис аутентификации, для доступа в кластер с помощью kubeconfig загрузите и используйте новый kubeconfig. Подробнее о способах получения kubeconfig на странице Действия в кластере.

Доступ в платформу, если внешний сервис перестал работать

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

  • Если при подключении внешнего сервиса принудительно не была установлена аутентификация только с внешним сервисом (т.е. значение параметра SKIP_INTERNAL_AUTH_FORM: false или параметр отсутствует в ssc shturval-backend), то вы сможете повторно пройти аутентификацию с помощью встроенного сервиса аутентификации.

  • Когда сеанс работы в графическом интерфейсе будет прерван, в браузере выполните вход в платформу через форму аутентификации внутреннего сервиса.

  • Если сеанс работы в платформе прерван и вы не можете пройти повторную аутентификацию, выполните действия:

  1. Подключитесь в кластер управления по kubeconfig, полученному при инсталляции платформы. Также Kubeconfig можно взять с мастер узла платформы /etc/kubernetes/admin.conf.

  2. Получите ssc shturval-backend. Удалите раздел status и в spec.customvalues измените значение параметра AUTH_IDP_ACTIVE на falseи установите false в SKIP_INTERNAL_AUTH_FORM.

Команда
# Получите ssc shturval-backend
kubectl get ssc shturval-backend -o yaml > shturval-backend-ssc.yaml

# Удаляемые параметры в status
creationTimestamp:
resourceVersion:
uid: 
finalizers:
generation:
annotations: 
customvalues
AUTH_IDP_ACTIVE: false
SKIP_INTERNAL_AUTH_FORM: false
  1. Примените изменения.
Команда
kubectl apply -f shturval-backend-ssc.yaml
  1. По завершении применения изменений аутентификация должна отработать корректно.
×