Аутентификация представляет собой процедуру подтверждения подлинности пользователя. Платформа Deckhouse Kubernetes (DKP) реализует сквозную аутентификацию при обращении к интерфейсам системы и кластерным ресурсам. Данный функционал также применим для организации проверки подлинности в пользовательских сервисах, развернутых внутри кластера.
Платформа DKP дает возможность гибко конфигурировать процесс аутентификации, используя как собственную базу учетных записей, так и интегрируясь со сторонними сервисами — LDAP, GitLab или GitHub. Такой подход обеспечивает унифицированную аутентификацию одновременно для нескольких кластеров DKP.
Для конечного пользователя или разработчика приложения способ настройки аутентификации администратором не имеет значения — процедура входа и методы интеграции с приложениями остаются неизменными независимо от выбранного провайдера.
При первой попытке доступа к ресурсу, защищенному системой контроля доступа, пользователь автоматически направляется на страницу входа — именно там происходит взаимодействие с интерфейсом аутентификации DKP. В случае, если пользователь уже прошел процедуру подтверждения личности (например, через внешний провайдер), платформа незамедлительно возвращает его к запрашиваемому ресурсу, дополняя исходный запрос необходимыми данными для идентификации. Если же проверка подлинности не была пройдена, перед пользователем появляется интерфейс аутентификации для ввода учетных данных.
Ниже представлен внешний вид стандартной страницы аутентификации в DKP:
Интерфейс аутентификации предлагает выбрать метод аутентификации, если их настроено несколько. Если настроен только один внешний провайдер аутентификации, то пользователь сразу попадет на страницу аутентификации этого провайдера. Если в DKP созданы локальные пользователи, то DKP предложит ввести логин и пароль.
Пример интерфейса аутентификации в DKP с вводом логина и пароля:
Для работы аутентификации в приложении, аутентификация должна быть настроена на уровне Deckhouse Kubernetes Platform.
В DKP можно включить аутентификацию для приложения двумя способами В зависимости от того, умеет приложение обрабатывать запросы на аутентификацию (выступать OIDC-клиентом) или нет, в DKP можно включить аутентификацию для приложения двумя способами. Оба способа рассматриваются далее.
Если приложение не обладает встроенными механизмами для обработки запросов аутентификации, эту функцию берет на себя специализированный прокси-сервер. Он не только управляет процессом подтверждения подлинности, но и отвечает за авторизацию, полностью абстрагируя приложение от деталей реализации этих процессов.
Для активации аутентификации в приложении, развернутом в среде DKP, необходимо выполнить следующие действия:
1. Разместите объект DexAuthenticator в том пространстве имен (namespace), где функционирует ваше приложение.
После создания указанного объекта в данном пространстве имен автоматически разворачивается комплект компонентов, обеспечивающих работу аутентификации:
Шаблон конфигурации DexAuthenticator выглядит следующим образом:
Обратите внимание на следующие возможности при настройке аутентификации:
Добавьте в Ingress-ресурс приложения следующие аннотации:
Пример (для DexAuthenticator с именем app-name, в пространстве имен app-ns):
Приложения, которые умеют самостоятельно обрабатывать запросы на аутентификацию и выступать OIDC-клиентом, могут напрямую взаимодействовать с системой аутентификации DKP. В этом случае приложение самостоятельно перенаправляет пользователя на страницу входа и обрабатывает полученные OIDC-токены.
Чтобы включить аутентификацию для такого приложения, выполните следующие шаги:
1. Создайте объект DexClient в пространстве имен приложения.
После создания объекта DexClient, Deckhouse выполнит следующие действия:
2. Укажите допустимые redirect-URI. Эти URI определяют, куда провайдер (Dex) может перенаправить пользователя после успешной аутентификации.
3. Ограничьте доступ по группам, если необходимо.
Используйте параметр allowedGroups, чтобы указать, какие группы пользователей имеют право входа в приложение через этот клиент.
4. (Опционально). Укажите список доверенных клиентов (trustedPeers), если вы хотите разрешить делегирование аутентификации между приложениями.
Пример объекта DexClient:
5. Получите clientSecret. Секрет будет создан автоматически:
6. Настройте своё приложение как OIDC-клиент. Используйте clientID, clientSecret, redirectURIs, а также адрес Dex как провайдера. Адрес Dex (https://dex.
Опишите вашу задачу, и мы поможем вам ее решить