Подключить внешний сервис аутентификации
Платформа “Штурвал” совместима с внешними сервисами аутентификации по протоколу OIDC OAuth 2.0. Вы можете подключить внешние сервисы аутентификации: Blitz, Keycloak.
Для подключения внешнего сервиса аутентификации, необходимо внести изменения в спецификацию модуля программного управления Платформой (shturval-backend).
Обратите внимание!
- До подключения внешнего провайдера аутентификации загрузите и сохраните действующие kubeconfigs кластеров (клиентских кластеров, кластера управления). Kubeconfig потребуется для подключения к кластеру из консоли.
- Для корректной интеграции с платформой “Штурвал” на стороне внешнего сервиса аутентификации (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 не потребуются.
Подготовка к настройке подключения внешнего сервиса
Для настройки подключения в платформе “Штурвал” потребуется:
- Получить корневой CA сертификат внешнего сервиса аутентификации, закодированный в base64. Вы можете запросить сертификат у администратора внешнего сервиса аутентификации или получить его способом, приведенным далее:
- В интерфейсе командной строки подключитесь по SSH к сервису аутентификации и получите сертификат, закодированый в base64.
Команда
cat <путь до файла сертификата внешнего сервиса аутентификации> | base64
Например, путь до файла сертификата внешнего сервиса аутентификации: /usr/share/keycloak/cert/keycloak.shturval.crt.
Пример ответа
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG5NSUlES3pDQ0FoT2dBd0lCQWdJVUhONU5BNWdyK3Y3MnZOakJnVml3TFRFREQ4d3dEUVlKS29aSWh2Y05BUUVMXG5CUUF3TVRFdk1DMEdBMVVFQXd3bWEyVjVZMnh2WVdzdWFYQXRNVEF0TXpFdE1UUTFMVFF4TG5Ob2RIVnlkbUZzXG5MbXhwYm1zd0hoY05NalF4TURJME1USXhNRFF3V2hjTk16UXhNREl5TVRJeE1EUXdXakF4TVM4d0xRWURWUVFEXG5EQ1pyWlhsamJHOWhheTVwY0MweE1DMHpNUzB4TkRVdE5ERXVjMmgwZFhKMllXd3ViR2x1YXpDQ0FTSXdEUVlKXG5Lb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFKanE3d0hVM1ZRRElPZVgzMmthc0hzZXNNTllSbFFEXG5kaUpqNEJiQXNHb2N4dmRlTWUvM3k3d09CQmZoZXROY0JlL0F5NFVyVzJLYUNqeE9XTTJ6YTNGOEw1QytEZ2h0XG5ldnVLNFUrV3FDcWJFWGVsT25ydlA3UkRQNmpFeHdoalRrSnNaVmFmaE5OMjhnakd6dW40SVZ1K05HUGYyakYwXG4rR1plTE1SZzRVcnRYTnR0YmZ4N3YzQUd0eGdJUnE5THEyM0VEai9VbFd1QXEyOHpiaTVESUpzNjFiOHV6WGlpXG5TR3V5M2YzQzBkQ0czdFBUc0dxeFRtM3hUaEVsQ3RNeHc0dVBDK1d1VmJ1YmpoYzYxMXZOa08yZUloN20wVlJXOEFkV0FjUGlsRmFyYmNIOUVzUzI2Snp2VFY4dGkwZVp4M01ZSFxueDRVb1JVU1NUTFRtNHVubG9UNkY1ZXZBQ0FiZ2J2TWlDNmFJVGVGbEthUUhPL3FKWGNvQ01QMXRmOGJKbFM4PVxuLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==
- Подготовить конфигурацию внешнего провайдера, использовав ваши значения параметров, и закодировать ее в 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.
Скриншот

Keycloak
Подключение Keycloak из консоли
Когда получена конфигурация внешнего провайдера, авторизуйтесь в платформе “Штурвал” по kubeconfig, полученному при инсталляции платформы или можно взять его с мастер узла платформы /etc/kubernetes/admin.conf.
- Получите 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
- Удалите из shturval-backend-ssc.yaml раздел
status, параметры и их значения:
Удаляемые параметры
creationTimestamp:
resourceVersion:
uid:
finalizers:
generation:
annotations:
- В
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=
- Примените изменения:
Команда
kubectl apply -f shturval-backend-ssc.yaml
- Дождитесь применения изменений. В неймспейсе
shturval-backendпроверьте данные Secretauth-idps. Он должен содержать конфигурацию, заданную вAUTH_EXTERNAL_IDP_SECRET_BASE64.
Команда
kubectl get secret auth-idps -n shturval-backend -o yaml
- Перезапустите поды 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 из графического интерфейса
- В кластере управления в боковом меню откройте раздел Сервисы и репозитории и перейдите на страницу Установленные сервисы. На вкладке “shturval” найдите Модуль программного управления Платформой (
shturval-backend), перейдите к управлению модулем и в блоке Спецификация сервиса измените параметры.
Скриншот

Пример 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=
Сохраните изменения.
-
Если после сохранения изменений сеанс работы в графическом интерфейсе платформы завершен, выполните подключение к платформе из консоли. Используйте kubeconfig кластера управления. Если аутентификация не была прервана, вы можете продолжить выполнять следующие действия в графическом интерфейсе.
-
В неймспейсе
shturval-backendпроверьте данные Secretauth-idps. Secret должен содержать конфигурацию, заданную вAUTH_EXTERNAL_IDP_SECRET_BASE64. -
Удалите поды authn и shturval-backend в неймспейсе
shturval-backend. Поды перезапустятся.
Когда изменен сервис аутентификации, для доступа в кластер с помощью kubeconfig загрузите и используйте новый kubeconfig. Подробнее о способах получения kubeconfig на странице Действия в кластере.
Blitz
Когда получена конфигурация внешнего провайдера, авторизуйтесь в платформе “Штурвал” по kubeconfig, полученному при инсталляции платформы или можно взять его с мастер узла платформы /etc/kubernetes/admin.conf.
ssc shturval-backend
- Получите 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
- Удалите из shturval-backend-ssc.yaml раздел
status, параметры и их значения:
Удаляемые параметры
creationTimestamp:
resourceVersion:
uid:
finalizers:
generation:
annotations:
- В
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==
`
- Примените изменения:
Команда
kubectl apply -f shturval-backend-ssc.yaml
- Дождитесь применения изменений. В неймспейсе
shturval-backendпроверьте данные Secretauth-idps. Он должен содержать конфигурацию, заданную вAUTH_EXTERNAL_IDP_SECRET_BASE64.
Команда
kubectl get secret auth-idps -n shturval-backend -o yaml
- Перезапустите поды 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), то вы сможете повторно пройти аутентификацию с помощью встроенного сервиса аутентификации. -
Когда сеанс работы в графическом интерфейсе будет прерван, в браузере выполните вход в платформу через форму аутентификации внутреннего сервиса.
-
Если сеанс работы в платформе прерван и вы не можете пройти повторную аутентификацию, выполните действия:
-
Подключитесь в кластер управления по kubeconfig, полученному при инсталляции платформы. Также Kubeconfig можно взять с мастер узла платформы
/etc/kubernetes/admin.conf. -
Получите 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
- Примените изменения.
Команда
kubectl apply -f shturval-backend-ssc.yaml
- По завершении применения изменений аутентификация должна отработать корректно.