Доступно в редакциях:  Open/CE, BE, SE, SE+, Ultimate/EE, Core, Certified Core/CSE Lite (1.73), Certified Pro/CSE Pro (1.73)

Входит в расширения: Биллинг

Стадия жизненного цикла модуля: General Availability

Модуль отвечает за единую систему аутентификации, интегрированную с Kubernetes и веб-интерфейсами, используемыми в других модулях, например, Grafana и Dashboard.

Модуль состоит из следующих компонентов:

  • dex — федеративный OpenID Connect провайдер, поддерживающий работу со статическими пользователями и с возможностью подключения к различным внешним провайдерам аутентификации, например, SAML, GitLab, GitHub.
  • dex-authenticator (он же oauth2-proxy) — приложение, которое получает запросы от компонента Ingress NGINX (через модуль auth_request) и авторизует их с помощью сервиса Dex.

Управление статическими пользователями осуществляется с помощью ресурсов User и Group:

В объекте User хранится информация о пользователе, включая email и зашифрованный хеш пароля (пароль в открытом виде не сохраняется); В объекте Group задаётся список пользователей, объединённых в группы для удобства управления правами доступа.

Операции управления пользователями — создание и удаление пользователей, управление группами, сброс пароля, сброс 2FA, блокировка и разблокировка — можно выполнять через CLI, используй группу команд d8 iam или через ресурс UserOperation. Ресурс UserOperation является одноразовым и автоматически удаляется через 24 часа после завершения.

Поддерживаются следующие внешние провайдеры/протоколы аутентификации:

  • GitHub;
  • GitLab;
  • BitBucket Cloud;
  • Crowd;
  • LDAP;
  • OIDC.

Одновременно можно подключить более одного внешнего провайдера аутентификации.

Возможности интеграции

Базовая аутентификация в API Kubernetes

Базовая аутентификация в API Kubernetes на данный момент доступна только для провайдера Crowd (с включением параметра enableBasicAuth).

К API Kubernetes можно подключаться и через другие поддерживаемые внешние провайдеры.

Интеграция с приложениями

Чтобы обеспечить аутентификацию в любом веб-приложении, работающем в Kubernetes, можно создать ресурс DexAuthenticator в пространстве имен (Namespace) приложения и добавить несколько аннотаций к ресурсу Ingress. Это позволит:

  • ограничить список групп, которым разрешен доступ;
  • ограничить список адресов, с которых разрешена аутентификация;
  • интегрировать приложение в единую систему аутентификации, если приложение поддерживает OIDC. Для этого в Kubernetes создается ресурс DexClient в Namespace приложения. В том же Namespace создается секрет с данными для подключения в Dex по OIDC.

После такой интеграции можно:

  • ограничить перечень групп, которым разрешено подключаться;
  • указать перечень клиентов, OIDC-токенам которых можно доверять (trustedPeers).

Веб-интерфейс для генерации готовых kubeconfig-файлов

Модуль позволяет автоматически создавать конфигурацию для kubectl или других утилит Kubernetes.

Пользователь получит набор команд для настройки kubectl после авторизации в веб-интерфейсе генератора. Эти команды можно скопировать и вставить в консоль для использования kubectl. Механизм аутентификации для kubeconfig использует OIDC-токен. OIDC-сессия может продлеваться автоматически, если использованный в Dex провайдер аутентификации поддерживает продление сессий. Для этого в kubeconfig указывается refresh token.

Дополнительно можно настроить несколько адресов kube-apiserver и сертификаты ЦС (CA) для каждого из них. Например, это может потребоваться, если доступ к кластеру Kubernetes осуществляется через VPN или прямое подключение.

Расширения от Фланта

Модуль использует модифицированную версию Dex для поддержки:

  • групп для статических учетных записей пользователей и провайдера Bitbucket Cloud (параметр bitbucketCloud);
  • передачи параметра group клиентам;
  • механизма obsolete tokens, который позволяет избежать состояния гонки при продлении токена OIDC-клиентом.
  • SPNEGO (Kerberos) для LDAP‑коннектора. При использовании этого механизма Dex принимает билеты по заголовку Authorization: Negotiate, валидирует их по keytab, и завершает вход без отображения формы ввода логина/пароля.

Отказоустойчивый режим

Модуль поддерживает режим высокой доступности highAvailability. При его включении аутентификаторы, отвечающие на auth request-запросы, развертываются с учетом требуемой избыточности для обеспечения непрерывной работы. В случае отказа любого из экземпляров аутентификаторов пользовательские аутентификационные сессии не прерываются.

Внешние компоненты

Список стороннего программного обеспечения, используемого в модуле user-authn (информация представлена на английском языке):

  • Dex 2.44.0

    License: Apache License 2.0

    A Federated OpenID Connect Provider with pluggable connectors.

  • OAuth2 Proxy 7.5.1

    License: MIT License

    A reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group.