Траблшутинг доступа
Проверка подключения LDAP, OIDC, назначений прав, kubeconfig.
Не удаётся войти в GUI/CLI
- Если входите с правами рутового администратора, проверьте учётные данные (логин, пароль);
- Если входите с учетными данными пользователя из внешнего каталога (LDAP/OIDC 2.0): — проверьте учётные данные (логин, пароль); — войдите с правами рутового администратора (или обратитесь к администратору), проверьте, что интеграция с внешним каталогом настроена и проверка подключения проходит;
- Проверьте, что в платформе существуют назначения на пользователя - права доступа, прописанные во внешнем каталоге, не создают назначений в платформе;
Не удаётся войти в GUI
- Проверьте URL (домен, HTTPS);
- Проверьте учётные данные, LDAP-интеграцию или внешний провайдер аутентификации;
- В интерфейсе командной строки проверьте доступность Ingress и сервисов shturval-frontend, shturval-backend.
- Если после ввода корректных учётных данных снова без перерыва переоткрывается форма аутентификации, см. Восстановить вход в графический интерфейс.
Пользователь не находится при поиске
- Проверьте, что интеграция с LDAP сохранена и проверка подключения проходит.
- Проверьте базовый DN для поиска пользователей и групп.
- Проверьте фильтры поиска и атрибуты: имя пользователя (
uid,sAMAccountName), имя группы (cn), email (mailилиuserPrincipalNameдля Active Directory), а также атрибуты связи пользователя и группы. - Выполните
ldapsearchвручную с теми же URL сервера, DN подключения, паролем и базовым DN, которые указаны в платформе:
ldapsearch -H ldap://IP-СЕРВЕРА -b "ou=Users,dc=example,dc=com" -D "cn=admin,dc=example,dc=com" -w "ПАРОЛЬ"
- Если используется LDAPS, проверьте порт, TLS, startTLS и CA-сертификат.
Подробнее о параметрах LDAP см. в разделе Интеграция с LDAP.
Группа не находится при поиске
- Проверьте базовый DN для поиска групп.
- Убедитесь, что атрибут имени группы соответствует настройкам каталога.
- Проверьте блок Сопоставление пользователей и групп в настройках LDAP.
- Если используется внешний OIDC-провайдер, укажите имя группы вручную: при ручном вводе поиск по LDAP не выполняется.
Права не применяются
- Проверьте статус применения в интерфейсе (красный — ошибки);
- В неймспейсе
shturval-backendпосмотрите логи подаshturval-permissions-operator, контейнерmanagerна наличие ошибок; - Убедитесь, что в назначенном пользователю наборе доступов есть необходимые платформенные разрешения для объектов: создание и байндинг напрямую объектов clusterrole/role не дает доступа к графическому интерфейсу. Назначайте права только через наборы доступов.
Ошибки при подключении к LDAP
- Проверьте URL, порт, TLS;
- Если включена верификация CA, проверьте загруженный доверенный корневой сертификат;
- Проверьте firewall между платформой и LDAP-сервером.
- Для LDAPS обычно используется порт 636. Для LDAP без защищённого соединения обычно используется порт 389.
- Если включена верификация CA, проверьте загруженный доверенный корневой сертификат.
Подробнее о защищённом подключении см. в разделе Интеграция с LDAP.
Kubeconfig не работает
Недействительность токена (access token)
Ошибка: You must be logged in to the server (the server has asked for the client to provide credentials) или couldn't get current server API group list.
Решение:
- Повторно скачайте kubeconfig из графического интерфейса;
- Или используйте плагин kubectl-shturval-plugin для повторной загрузки kubeconfig.
Некорректный сертификат в kubeconfig
Ошибка: tls: failed to verify certificate: x509: certificate signed by unknown authority — может возникнуть, если в kubeconfig содержится сертификат от другого кластера.
Решение:
- Повторно скачайте kubeconfig из GUI;
- Или загрузите kubeconfig через плагин kubectl-shturval-plugin.
Ошибка экспорта kubeconfig (connection refused localhost:8080)
Ошибка: The connection to the server localhost:8080 was refused — kubectl пытается подключиться к localhost вместо адреса из kubeconfig.
Решение:
- Экспортируйте kubeconfig в
~/.kube. Если имя файла отлично отconfig, переименуйте его:
mv /path/to/clustername.conf ~/.kube/config
ls ~/.kube/ | grep config
- Или задайте переменную окружения:
export KUBECONFIG=/path/to/clustername.conf.
Ошибка синхронизации времени
Ошибка: x509: certificate has expired or is not yet valid: current time ... is before ... — расхождение времени между клиентом и сервером.
Решение:
- Включите синхронизацию по NTP. Проверка и настройка:
timedatectl timesync-status # Проверить NTP
timedatectl set-ntp on # Включить синхронизацию
timedatectl # Проверить дату и время
- Убедитесь, что
System clock synchronized: yesиNTP service: active.
Общие рекомендации по kubeconfig
- Токен в kubeconfig имеет ограниченный срок жизни — при истечении скачайте новый или используйте плагин;
- Проверьте, что адрес API в kubeconfig доступен с вашей машины (сеть, firewall);
- Для статического kubeconfig — убедитесь, что сертификаты актуальны.
Ошибка в работе OIDC
Ошибка: You must be logged in to the server (Unauthorized) — возможные причины:
- Невалидный CA-сертификат OIDC;
- Недоступность кластера управления;
- Недостаточно прав у пользователя.
Действия:
- Проверьте логи kube-apiserver на Control Plane узлах:
crictl logs $(crictl ps | awk '/kube-apiserver/ {print $1}')
Если в логах: oidc: authenticator not initialized или tls: failed to verify certificate: x509: certificate signed by unknown authority — проблема с CA-сертификатом OIDC.
-
Если ошибка из-за CA-сертификата: получите валидный CA-сертификат (содержится в ConfigMap
root-caнеймспейсаcert-manager), добавьте его на Control Plane узлы в/etc/ssl/certs/oidc.crt. При отсутствии доступа к ConfigMap обратитесь к администратору кластера. -
Если проблема не с сертификатом: проверьте доступность кластера управления; при валидном сертификате и доступном кластере — запросите у администратора расширение прав.
Отладка OIDC
При проблемах с входом через Keycloak или Blitz проверьте следующие пункты.
1. Проверка Secret с конфигурацией
Убедитесь, что конфигурация провайдера попала в Secret:
kubectl get secret auth-idps -n shturval-backend -o yaml
Декодируйте значение ключа с конфигурацией (из вывода -o yaml) и проверьте содержимое:
# Скопируйте base64-значение из kubectl get secret auth-idps -n shturval-backend -o yaml
echo "BASE64_ЗНАЧЕНИЕ" | base64 -d
Проверьте: issuerUrl, client.clientId, client.clientSecret, caBundle (если используется).
2. Логи shturval-auth
Просмотрите логи сервиса аутентификации:
kubectl logs -n shturval-backend -l app=shturval-auth --tail=200 -f
Ищите сообщения об ошибках: invalid_client, redirect_uri_mismatch, invalid_grant, таймауты, ошибки TLS.
3. Доступность URL провайдера
Проверьте, что платформа может достучаться до провайдера:
# Из пода в shturval-backend
kubectl exec -n shturval-backend deploy/shturval-auth -- curl -s -o /dev/null -w "%{http_code}" https://keycloak.example.ru/realms/shturval/.well-known/openid-configuration
Ожидается 200. При ошибках TLS — проверьте caBundle или insecureSkipVerify.
4. Redirect URI
Redirect URI в провайдере должен точно совпадать с URL, на который провайдер перенаправляет после входа. Обычно это:
https://<URL-платформы>/auth/callbackилиhttps://<URL-платформы>/*(если провайдер поддерживает wildcard)
Проверьте в настройках клиента Keycloak/Blitz: Valid redirect URIs и Web origins.
5. client_id и client_secret
- client_id — должен совпадать с Client ID в провайдере.
- client_secret — для confidential client должен быть актуальным. При смене секрета в провайдере обновите конфигурацию в ShturvalServicePatch и перепримените Patch.
6. Отключение OIDC при сбое провайдера
Если провайдер недоступен и войти невозможно:
- Создайте ShturvalServicePatch с
AUTH_IDP_ACTIVE: false. - Важно:
patchOrderу патча отключения должен быть меньше, чем у патча с конфигурацией OIDC, чтобы отключение применилось первым. - Примените Patch и дождитесь перезапуска shturval-auth.
- Войдите через внутреннюю форму аутентификации (если
SKIP_INTERNAL_AUTH_FORM: false).
7. Типичные ошибки
| Ошибка / симптом | Возможная причина | Действие |
|---|---|---|
redirect_uri_mismatch |
Redirect URI в провайдере не совпадает с URL платформы | Добавьте корректный redirect URI в настройках клиента |
invalid_client |
Неверный client_id или client_secret | Проверьте Credentials в провайдере и конфигурацию в Secret |
invalid_grant |
Истёк код авторизации или неверный code_verifier | Проверьте codeVerifyMethod (S256/plain) и настройки PKCE |
| Таймаут при redirect | Платформа не достучалась до провайдера | Проверьте сеть, firewall, DNS, TLS-сертификат |
| После входа — «Access denied» | Пользователь не входит в группу с правами | Назначьте права в разделе «Управление доступом» |
Отсутствие доступа к API-серверу
Ошибка: The connection to the server ХХХ.ХХХ.ХХХ.ХХХ:6443 was refused - did you specify the right host or port?
Причины: API-сервер не работает, перезапускается или заблокирован (firewall, сеть).
Действия: Обратитесь к администратору платформы или кластера для выяснения причин.
Плагин не подключается
- Проверьте URL платформы и учётные данные в конфигурации;
- Убедитесь, что с вашей машины доступен API платформы;
- Проверьте версию плагина и совместимость с версией платформы.