Deckhouse Kubernetes Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.
Стадия жизненного цикла модуля: General Availability
DexAuthenticator
Scope: Namespaced
- v1
- v2alpha1
- v1alpha1
При появлении объекта DexAuthenticator в пространстве имен будут созданы:
- Deployment с OAuth2-Proxy и Redis;
- Сервис (Service), ведущий на OAuth2-Proxy;
- Ingress-ресурс, который принимает запросы по адресу
https://<applicationDomain>/dex-authenticatorи отправляет их в сторону сервиса; - HTTPRoute (опционально), который принимает запросы по адресу
https://<applicationDomain>/dex-authenticatorи отправляет их в сторону сервиса; - Секреты, необходимые для доступа к Dex.
Внимание. DexAuthenticator работает только по HTTPS. Ingress приложения должен иметь настроенный TLS.
Внимание. При перезапуске пода с OAuth2-Proxy, с помощью refresh-токена в память Redis будут получены и сохранены актуальные Access Token и ID Token.
Пример:
apiVersion: deckhouse.io/v1
kind: DexAuthenticator
metadata:
name: app-name
namespace: app-namespace
spec:
applicationDomain: app-name.kube.my-domain.com
sendAuthorizationHeader: false
applicationIngressCertificateSecretName: ingress-tls
applicationIngressClassName: nginx
keepUsersLoggedInFor: 720h
allowedGroups:
- everyone
- admins
whitelistSourceRanges:
- 1.1.1.1/32
- 192.168.0.0/24
additionalApplications:
- domain: additional-app-name.kube.my-domain.com
ingressSecretName: ingress-tls
ingressClassName: nginx
signOutURL: "/logout"
whitelistSourceRanges:
- 2.2.2.2/32
- объектspec
Обязательный параметр
- массив объектовspec.additionalApplications
Список дополнительных приложений, для которых необходима аутентификация.
- строкаspec.additionalApplications.domain
Обязательный параметр
Домен приложения (для использования в Ingress-ресурсе), запросы на который будут перенаправлены в Dex для аутентификации.
Внимание. Укажите DNS-имя, соответствующее требованиям RFC 1123 (subdomain), без HTTP-схемы. Использование IP-адресов не допускается.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - строкаspec.additionalApplications.ingressClassName
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-ресурсе (должно совпадать с названием Ingress-класса для домена приложения).
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - строкаspec.additionalApplications.ingressSecretName
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$ - строкаspec.additionalApplications.signOutURL
URL для завершения сеанса аутентификации.
Используется в приложении для направления запросов на “Выход” (завершение сеанса). Для указанного URL будет создан отдельный Ingress-ресурс, запросы на который будут перенаправляться в
dex-authenticator. - массив строкspec.additionalApplications.whitelistSourceRanges
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
Пример:
whitelistSourceRanges: - 192.168.42.0/24- строкаЭлемент массива
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
- массив строкspec.allowedEmails
Email’ы пользователей, которым разрешено проходить аутентификацию.
По умолчанию разрешено всем пользователям.
По умолчанию:
All emails are allowed. - массив строкspec.allowedGroups
Группы, пользователям которых разрешено проходить аутентификацию.
По умолчанию разрешено всем группам.
По умолчанию:
All groups are allowed. - строкаspec.applicationDomain
Обязательный параметр
Адрес приложения (домен DNS для Ingress-ресурса), для которого необходима аутентификация.
Внимание. Укажите DNS-имя, соответствующее требованиям RFC 1123 (subdomain), без HTTP-схемы. Использование IP-адресов не допускается.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Пример:
applicationDomain: my-app.domain.com - строкаspec.applicationIngressCertificateSecretName
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$Пример:
applicationIngressCertificateSecretName: ingress-tls - строкаspec.applicationIngressClassName
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-ресурсе (должно совпадать с названием Ingress-класса для домена приложения).
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Пример:
applicationIngressClassName: nginx - объектspec.gatewayAPI
Набор параметров для настройки создаваемого объекта HTTPRoute.
Внимание. Используется только в кластерах с поддержкой Gateway API.
Внимание. Должен быть указан тот же объект ListenerSet, который используется для домена приложения.
- строкаspec.gatewayAPI.applicationHTTPRouteListenerSetName
Обязательный параметр
Имя объекта ListenerSet из Gateway API, на который будет ссылаться создаваемый HTTPRoute.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Максимальная длина:
253Пример:
applicationHTTPRouteListenerSetName: default-listenerset - строкаspec.gatewayAPI.applicationHTTPRouteListenerSetNamespace
Имя неймспейса, в котором располагается объект ListenerSet из Gateway API, на который будет ссылаться создаваемый HTTPRoute.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Максимальная длина:
63Пример:
applicationHTTPRouteListenerSetNamespace: default - строкаspec.gatewayAPI.applicationHTTPRouteListenerSetSectionName
Имя секции объекта ListenerSet из Gateway API, на которую будет ссылаться создаваемый HTTPRoute.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Максимальная длина:
nullПример:
applicationHTTPRouteListenerSetSectionName: default-listener
- булевыйspec.highAvailability
Включает режим высокой доступности для экземпляра
dex-authenticator.При включении этого режима будет развернуто несколько реплик подов для обеспечения отказоустойчивости.
По умолчанию:
false - строкаspec.keepUsersLoggedInFor
Отвечает за то, как долго пользовательская сессия будет считаться активной, если пользователь бездействует (указывается с суффиксом
s,mилиh).По умолчанию:
168hПример:
keepUsersLoggedInFor: 24h - объектspec.nodeSelector
Определяет
nodeSelectorдля подовdex-authenticator.Формат: стандартный список nodeSelector. Поды инстанса унаследуют это поле как есть.
- объектspec.podMetadata
Дополнительные лейблы и аннотации для подов
dex-authenticator.- объектspec.podMetadata.annotations
Дополнительные аннотации для подов
dex-authenticator. - объектspec.podMetadata.labels
Дополнительные лейблы для подов
dex-authenticator.
- объектspec.resources
Ресурсы контейнеров (CPU/память) — requests/limits.
Если поле задано, применяются указанные значения, а VPA для этого экземпляра отключается. Если поле не задано, поведение не меняется — при включённом модуле VPA ресурсы управляются VPA, при выключенном — используются значения по умолчанию.
Ресурсы можно задать напрямую для контейнера
dex-authenticator(для обратной совместимости) либо во вложенных объектах — отдельно для каждого контейнера.- объектspec.resources.limits
Верхняя граница ресурсов контейнера
dex-authenticator(CPU/память). Поле поддерживается для обратной совместимости.Значения указываются в формате Kubernetes, например:
200m,256Mi. - объектspec.resources.redis
Ресурсы контейнера
redis(CPU/память) — requests/limits.- объектspec.resources.redis.limits
Верхняя граница ресурсов контейнера
redis(CPU/память).Значения указываются в формате Kubernetes, например:
200m,256Mi. - объектspec.resources.redis.requests
Гарантированно выделяемые ресурсы контейнера
redis(CPU/память).Значения указываются в формате Kubernetes, например:
100m,128Mi.
- объектspec.resources.requests
Гарантированно выделяемые ресурсы контейнера
dex-authenticator(CPU/память). Поле поддерживается для обратной совместимости.Значения указываются в формате Kubernetes, например:
100m,128Mi.
- булевый
Флаг, который отвечает за отправку конечному приложению заголовка
Authorization: Bearer.Внимание. Включайте, только если приложение умеет обрабатывать такой заголовок.
- строкаspec.signOutURL
URL для завершения сеанса аутентификации.
Используется в приложении для направления запросов на «Выход» (завершение сеанса). Для указанного URL будет создан отдельный Ingress-ресурс, запросы на который будут перенаправляться в
dex-authenticator. - массив объектовspec.tolerations
Определяет
tolerationsдля подовdex-authenticator.Формат: стандартный список toleration. Поды инстанса унаследуют это поле как есть.
- строкаspec.tolerations.effect
Определяет, какому effect’у taint’а соответствует описываемый toleration. Пустой подразумевает соответствие любому effect.
Допустимые значения:
NoSchedule,PreferNoSchedule,NoExecute - строкаspec.tolerations.key
Определяет, какому ключу (key) taint’a соответствует описываемый toleration. Пустой подразумевает соответствие любому ключу.
Если ключ (key) не указан (пуст),
operatorдолжен бытьExists, что подразумевает соответствие любымvalueиkey. - строкаspec.tolerations.operator
Определяет отношение ключа (key) к значению (value) — должен ли ключ быть равен (
Equal) значению или допустимо существование ключа с любым значением.Указание
Existsозначает, что значение value может быть любым, чтобы под с указанным toleration был размещён на узле с соответствующим taint.По умолчанию:
EqualДопустимые значения:
Exists,Equal - целочисленныйspec.tolerations.tolerationSeconds
Определяет период времени в секундах, в течение которого планировщик должен ждать, прежде чем выселить (evict) под с узла, если toleration больше не соответствует taint (справедливо только для effect
NoExecute, иначе игнорируется).Если не установлено, тогда под не будет выселен с узла, если toleration больше не соответствует taint. Если установлен в ноль (или отрицателен), под будет выселен с узла немедленно, если toleration больше не соответствует taint.
По умолчанию используется значение «не установлено».
- строкаspec.tolerations.value
Значение, которому должен соответствовать toleration.
Должно быть пустым, если
operatorимеет параметрExists.
- массив строкspec.whitelistSourceRanges
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
Пример:
whitelistSourceRanges: - 192.168.42.0/24- строкаЭлемент массива
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
- объектspec
Обязательный параметр
- массив строкspec.allowedEmails
A list of emails of users are allowed to connect to the client.
By default, all users can connect.
По умолчанию:
All users are allowed. - массив строкspec.allowedGroups
Группы, пользователям которых разрешено проходить аутентификацию.
По умолчанию разрешено всем группам.
По умолчанию:
All groups are allowed. - массив объектовspec.applications
Обязательный параметр
Список приложений, для которых необходима аутентификация.
- строкаspec.applications.domain
Обязательный параметр
Домен приложения (для использования в Ingress-ресурсе), запросы на который будут перенаправлены в Dex для аутентификации.
Внимание. Укажите DNS-имя, соответствующее требованиям RFC 1123 (subdomain), без HTTP-схемы. Использование IP-адресов не допускается.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - объектspec.applications.gatewayAPI
Набор параметров для настройки создаваемого объекта HTTPRoute.
Внимание. Используется только в кластерах с поддержкой Gateway API.
Внимание. Должен быть указан тот же объект ListenerSet, который используется для домена приложения.
- строкаspec.applications.gatewayAPI.httpRouteListenerSetName
Обязательный параметр
Имя объекта ListenerSet из Gateway API, на который будет ссылаться создаваемый HTTPRoute.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Максимальная длина:
253Пример:
httpRouteListenerSetName: default-listener-set - строкаspec.applications.gatewayAPI.httpRouteListenerSetNamespace
Имя неймспейса, в котором располагается объект ListenerSet из Gateway API, на который будет ссылаться создаваемый HTTPRoute.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Максимальная длина:
63Пример:
httpRouteListenerSetNamespace: default - строкаspec.applications.gatewayAPI.httpRouteListenerSetSectionName
Имя секции объекта ListenerSet из Gateway API, на которую будет ссылаться создаваемый HTTPRoute.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Максимальная длина:
253Пример:
httpRouteListenerSetSectionName: web-listener
- строкаspec.applications.ingressClassName
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-ресурсе (должно совпадать с названием Ingress-класса для домена приложения).
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - строкаspec.applications.ingressSecretName
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$ - строкаspec.applications.signOutURL
URL для завершения сеанса аутентификации.
Используется в приложении для направления запросов на «Выход» (завершение сеанса). Для указанного URL будет создан отдельный Ingress-ресурс, запросы на который будут перенаправляться в
dex-authenticator. - массив строкspec.applications.whitelistSourceRanges
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
Пример:
whitelistSourceRanges: - 192.168.42.0/24- строкаЭлемент массива
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
- булевыйspec.highAvailability
Enables high availability mode for
dex-authenticator.When this mode is enabled, multiple pod replicas will be deployed to ensure fault tolerance.
По умолчанию:
false - строкаspec.keepUsersLoggedInFor
Отвечает за то, как долго пользовательская сессия будет считаться активной, если пользователь бездействует (указывается с суффиксом
s,mилиh).По умолчанию:
168h - объектspec.nodeSelector
Определяет
nodeSelectorдля подовdex-authenticator.Формат: стандартный список nodeSelector. Поды инстанса унаследуют это поле как есть.
- объектspec.podMetadata
Дополнительные лейблы и аннотации для подов
dex-authenticator.- объектspec.podMetadata.annotations
Дополнительные аннотации для подов
dex-authenticator. - объектspec.podMetadata.labels
Дополнительные лейблы для подов
dex-authenticator.
- объектspec.resources
Ресурсы контейнеров (CPU/память) — requests/limits.
Если поле задано, применяются указанные значения, а VPA для этого экземпляра отключается. Если поле не задано, поведение не меняется — при включённом модуле VPA ресурсы управляются VPA, при выключенном — используются значения по умолчанию.
Ресурсы можно задать напрямую для контейнера
dex-authenticator(для обратной совместимости) либо во вложенных объектах — отдельно для каждого контейнера.- объектspec.resources.limits
Верхняя граница ресурсов контейнера
dex-authenticator(CPU/память). Поле поддерживается для обратной совместимости.Значения указываются в формате Kubernetes, например:
200m,256Mi. - объектspec.resources.redis
Ресурсы контейнера
redis(CPU/память) — requests/limits.- объектspec.resources.redis.limits
Верхняя граница ресурсов контейнера
redis(CPU/память).Значения указываются в формате Kubernetes, например:
200m,256Mi. - объектspec.resources.redis.requests
Гарантированно выделяемые ресурсы контейнера
redis(CPU/память).Значения указываются в формате Kubernetes, например:
100m,128Mi.
- объектspec.resources.requests
Гарантированно выделяемые ресурсы контейнера
dex-authenticator(CPU/память). Поле поддерживается для обратной совместимости.Значения указываются в формате Kubernetes, например:
100m,128Mi.
- булевый
Флаг, который отвечает за отправку конечному приложению заголовка
Authorization: Bearer.Внимание. Включайте, только если приложение умеет обрабатывать такой заголовок.
- массив объектовspec.tolerations
Определяет tolerations для подов
dex-authenticator.Формат: стандартный список toleration. Поды инстанса унаследуют это поле как есть.
- строкаspec.tolerations.effect
Определяет, какому effect’у taint’а соответствует описываемый toleration. Пустой подразумевает соответствие любому effect.
Допустимые значения:
NoSchedule,PreferNoSchedule,NoExecute - строкаspec.tolerations.key
Определяет, какому ключу (key) taint’a соответствует описываемый toleration. Пустой подразумевает соответствие любому ключу.
Если ключ (key) не указан (пуст),
operatorдолжен бытьExists, что подразумевает соответствие любымvalueиkey. - строкаspec.tolerations.operator
Определяет отношение ключа (key) к значению (value) — должен ли ключ быть равен (
Equal) значению или допустимо существование ключа с любым значением.Указание
Existsозначает, что значение value может быть любым, чтобы под с указанным toleration был размещён на узле с соответствующим taint.По умолчанию:
EqualДопустимые значения:
Exists,Equal - целочисленныйspec.tolerations.tolerationSeconds
Определяет период времени в секундах, в течение которого планировщик должен ждать, прежде чем выселить (evict) под с узла, если toleration больше не соответствует taint (справедливо только для effect
NoExecute, иначе игнорируется).Если не установлено, тогда под не будет выселен с узла, если toleration больше не соответствует taint. Если установлен в ноль (или отрицателен), под будет выселен с узла немедленно, если toleration больше не соответствует taint.
По умолчанию используется значение «не установлено».
- строкаspec.tolerations.value
Значение, которому должен удовлетворять toleration.
Должно быть пустым, если
operatorимеет параметрExists.
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
При появлении объекта DexAuthenticator в пространстве имен будут созданы:
- Deployment с OAuth2-Proxy и Redis;
- Сервис (Service), ведущий на OAuth2-Proxy;
- Ingress-ресурс, который принимает запросы по адресу
https://<applicationDomain>/dex-authenticatorи отправляет их в сторону сервиса; - HTTPRoute (опционально), который принимает запросы по адресу
https://<applicationDomain>/dex-authenticatorи отправляет их в сторону сервиса; - Секреты, необходимые для доступа к Dex.
Внимание. DexAuthenticator работает только по HTTPS. Ingress приложения должен иметь настроенный TLS.
Внимание. При перезапуске пода с OAuth2-Proxy, с помощью refresh-токена в память Redis будут получены и сохранены актуальные Access Token и ID Token.
Пример:
apiVersion: deckhouse.io/v1
kind: DexAuthenticator
metadata:
name: app-name
namespace: app-namespace
spec:
applicationDomain: app-name.kube.my-domain.com
sendAuthorizationHeader: false
applicationIngressCertificateSecretName: ingress-tls
applicationIngressClassName: nginx
keepUsersLoggedInFor: 720h
allowedGroups:
- everyone
- admins
whitelistSourceRanges:
- 1.1.1.1/32
- 192.168.0.0/24
additionalApplications:
- domain: additional-app-name.kube.my-domain.com
ingressSecretName: ingress-tls
ingressClassName: nginx
signOutURL: "/logout"
whitelistSourceRanges:
- 2.2.2.2/32
- объектspec
Обязательный параметр
- массив объектовspec.additionalApplications
Список дополнительных приложений, для которых необходима аутентификация.
- строкаspec.additionalApplications.domain
Обязательный параметр
Домен приложения (для использования в Ingress-ресурсе), запросы на который будут перенаправлены в Dex для аутентификации.
Внимание. Укажите DNS-имя, соответствующее требованиям RFC 1123 (subdomain), без HTTP-схемы. Использование IP-адресов не допускается.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - строкаspec.additionalApplications.ingressClassName
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-ресурсе (должно совпадать с названием Ingress-класса для домена приложения).
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - строкаspec.additionalApplications.ingressSecretName
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$ - строкаspec.additionalApplications.signOutURL
URL для завершения сеанса аутентификации.
Используется в приложении для направления запросов на “Выход” (завершение сеанса). Для указанного URL будет создан отдельный Ingress-ресурс, запросы на который будут перенаправляться в
dex-authenticator. - массив строкspec.additionalApplications.whitelistSourceRanges
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
Пример:
whitelistSourceRanges: - 192.168.42.0/24- строкаЭлемент массива
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
- массив строкspec.allowedEmails
Email’ы пользователей, которым разрешено проходить аутентификацию.
По умолчанию разрешено всем пользователям.
По умолчанию:
All emails are allowed. - массив строкspec.allowedGroups
Группы, пользователям которых разрешено проходить аутентификацию.
По умолчанию разрешено всем группам.
По умолчанию:
All groups are allowed. - строкаspec.applicationDomain
Обязательный параметр
Адрес приложения (домен DNS для Ingress-ресурса), для которого необходима аутентификация.
Внимание. Укажите DNS-имя, соответствующее требованиям RFC 1123 (subdomain), без HTTP-схемы. Использование IP-адресов не допускается.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Пример:
applicationDomain: my-app.domain.com - строкаspec.applicationIngressCertificateSecretName
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$Пример:
applicationIngressCertificateSecretName: ingress-tls - строкаspec.applicationIngressClassName
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-ресурсе (должно совпадать с названием Ingress-класса для домена приложения).
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Пример:
applicationIngressClassName: nginx - объектspec.gatewayAPI
Набор параметров для настройки создаваемого объекта HTTPRoute.
Внимание. Используется только в кластерах с поддержкой Gateway API.
Внимание. Должен быть указан тот же объект ListenerSet, который используется для домена приложения.
- строкаspec.gatewayAPI.applicationHTTPRouteListenerSetName
Обязательный параметр
Имя объекта ListenerSet из Gateway API, на который будет ссылаться создаваемый HTTPRoute.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Максимальная длина:
253Пример:
applicationHTTPRouteListenerSetName: default-listenerset - строкаspec.gatewayAPI.applicationHTTPRouteListenerSetNamespace
Имя неймспейса, в котором располагается объект ListenerSet из Gateway API, на который будет ссылаться создаваемый HTTPRoute.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Максимальная длина:
63Пример:
applicationHTTPRouteListenerSetNamespace: default - строкаspec.gatewayAPI.applicationHTTPRouteListenerSetSectionName
Имя секции объекта ListenerSet из Gateway API, на которую будет ссылаться создаваемый HTTPRoute.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Максимальная длина:
nullПример:
applicationHTTPRouteListenerSetSectionName: default-listener
- булевыйspec.highAvailability
Включает режим высокой доступности для экземпляра
dex-authenticator.При включении этого режима будет развернуто несколько реплик подов для обеспечения отказоустойчивости.
По умолчанию:
false - строкаspec.keepUsersLoggedInFor
Отвечает за то, как долго пользовательская сессия будет считаться активной, если пользователь бездействует (указывается с суффиксом
s,mилиh).По умолчанию:
168hПример:
keepUsersLoggedInFor: 24h - объектspec.nodeSelector
Определяет
nodeSelectorдля подовdex-authenticator.Формат: стандартный список nodeSelector. Поды инстанса унаследуют это поле как есть.
- объектspec.podMetadata
Дополнительные лейблы и аннотации для подов
dex-authenticator.- объектspec.podMetadata.annotations
Дополнительные аннотации для подов
dex-authenticator. - объектspec.podMetadata.labels
Дополнительные лейблы для подов
dex-authenticator.
- объектspec.resources
Ресурсы контейнеров (CPU/память) — requests/limits.
Если поле задано, применяются указанные значения, а VPA для этого экземпляра отключается. Если поле не задано, поведение не меняется — при включённом модуле VPA ресурсы управляются VPA, при выключенном — используются значения по умолчанию.
Ресурсы можно задать напрямую для контейнера
dex-authenticator(для обратной совместимости) либо во вложенных объектах — отдельно для каждого контейнера.- объектspec.resources.limits
Верхняя граница ресурсов контейнера
dex-authenticator(CPU/память). Поле поддерживается для обратной совместимости.Значения указываются в формате Kubernetes, например:
200m,256Mi. - объектspec.resources.redis
Ресурсы контейнера
redis(CPU/память) — requests/limits.- объектspec.resources.redis.limits
Верхняя граница ресурсов контейнера
redis(CPU/память).Значения указываются в формате Kubernetes, например:
200m,256Mi. - объектspec.resources.redis.requests
Гарантированно выделяемые ресурсы контейнера
redis(CPU/память).Значения указываются в формате Kubernetes, например:
100m,128Mi.
- объектspec.resources.requests
Гарантированно выделяемые ресурсы контейнера
dex-authenticator(CPU/память). Поле поддерживается для обратной совместимости.Значения указываются в формате Kubernetes, например:
100m,128Mi.
- булевый
Флаг, который отвечает за отправку конечному приложению заголовка
Authorization: Bearer.Внимание. Включайте, только если приложение умеет обрабатывать такой заголовок.
- строкаspec.signOutURL
URL для завершения сеанса аутентификации.
Используется в приложении для направления запросов на «Выход» (завершение сеанса). Для указанного URL будет создан отдельный Ingress-ресурс, запросы на который будут перенаправляться в
dex-authenticator. - массив объектовspec.tolerations
Определяет
tolerationsдля подовdex-authenticator.Формат: стандартный список toleration. Поды инстанса унаследуют это поле как есть.
- строкаspec.tolerations.effect
Определяет, какому effect’у taint’а соответствует описываемый toleration. Пустой подразумевает соответствие любому effect.
Допустимые значения:
NoSchedule,PreferNoSchedule,NoExecute - строкаspec.tolerations.key
Определяет, какому ключу (key) taint’a соответствует описываемый toleration. Пустой подразумевает соответствие любому ключу.
Если ключ (key) не указан (пуст),
operatorдолжен бытьExists, что подразумевает соответствие любымvalueиkey. - строкаspec.tolerations.operator
Определяет отношение ключа (key) к значению (value) — должен ли ключ быть равен (
Equal) значению или допустимо существование ключа с любым значением.Указание
Existsозначает, что значение value может быть любым, чтобы под с указанным toleration был размещён на узле с соответствующим taint.По умолчанию:
EqualДопустимые значения:
Exists,Equal - целочисленныйspec.tolerations.tolerationSeconds
Определяет период времени в секундах, в течение которого планировщик должен ждать, прежде чем выселить (evict) под с узла, если toleration больше не соответствует taint (справедливо только для effect
NoExecute, иначе игнорируется).Если не установлено, тогда под не будет выселен с узла, если toleration больше не соответствует taint. Если установлен в ноль (или отрицателен), под будет выселен с узла немедленно, если toleration больше не соответствует taint.
По умолчанию используется значение «не установлено».
- строкаspec.tolerations.value
Значение, которому должен соответствовать toleration.
Должно быть пустым, если
operatorимеет параметрExists.
- массив строкspec.whitelistSourceRanges
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
Пример:
whitelistSourceRanges: - 192.168.42.0/24- строкаЭлемент массива
Шаблон:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$
DexClient
Scope: Namespaced
- v1
- v1alpha1
Позволяет приложениям, поддерживающим DC-аутентификацию, взаимодействовать с Dex.
После появления в кластере объекта DexClient:
- в Dex будет зарегистрирован клиент с идентификатором (clientID)
dex-client-<NAME>@<NAMESPACE>, где<NAME>и<NAMESPACE>—metadata.nameиmetadata.namespaceобъекта DexClient соответственно; - в соответствующем namespace будет создан Secret
dex-client-<NAME>(где<NAME>—metadata.nameобъекта DexClient), содержащий пароль доступа к клиенту (clientSecret).
- объектspec
Обязательный параметр
- массив строкspec.allowedEmails
Email’ы пользователей, которым разрешено проходить аутентификацию.
По умолчанию разрешено всем пользователям.
По умолчанию:
All users are allowed. - массив строкspec.allowedGroups
Группы, пользователям которых разрешено проходить аутентификацию.
По умолчанию разрешено всем группам.
- массив строкspec.redirectURIs
Список адресов, на которые допустимо редиректить Dex’у после успешного прохождения аутентификации.
- объектspec.secretMetadata
Список лейблов и аннотаций, которые будут перенесены в метаданные секретов ресурса DexClient.
- объектspec.secretMetadata.annotations
- объектspec.secretMetadata.labels
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
Позволяет приложениям, поддерживающим DC-аутентификацию, взаимодействовать с Dex.
После появления в кластере объекта DexClient:
- в Dex будет зарегистрирован клиент с идентификатором (clientID)
dex-client-<NAME>@<NAMESPACE>, где<NAME>и<NAMESPACE>—metadata.nameиmetadata.namespaceобъекта DexClient соответственно; - в соответствующем namespace будет создан Secret
dex-client-<NAME>(где<NAME>—metadata.nameобъекта DexClient), содержащий пароль доступа к клиенту (clientSecret).
- объектspec
Обязательный параметр
- массив строкspec.allowedEmails
Email’ы пользователей, которым разрешено проходить аутентификацию.
По умолчанию разрешено всем пользователям.
По умолчанию:
All users are allowed. - массив строкspec.allowedGroups
Группы, пользователям которых разрешено проходить аутентификацию.
По умолчанию разрешено всем группам.
- массив строкspec.redirectURIs
Список адресов, на которые допустимо редиректить Dex’у после успешного прохождения аутентификации.
- объектspec.secretMetadata
Список лейблов и аннотаций, которые будут перенесены в метаданные секретов ресурса DexClient.
- объектspec.secretMetadata.annotations
- объектspec.secretMetadata.labels
DexProviderCheck
Scope: Cluster
Version: v1
Описывает одноразовую проверку доступности DexProvider.
Проверка убеждается, что провайдер существует, включён, Dex доступен, а эндпоинт провайдера отвечает на сетевом уровне. Полный сценарий аутентификации пользователя не выполняется.
- объектspec
Обязательный параметр
- строкаspec.initiatorType
Указывает, кем инициирована проверка. Возможные значения:
Admin— администратором;System— автоматически системой.
Допустимые значения:
Admin,System - строкаspec.providerName
Обязательный параметр
Имя ресурса DexProvider, который нужно проверить.
Пример:
providerName: my-oidc
- объектstatus
- массив объектовstatus.checks
Детальные результаты отдельных шагов проверки.
- строкаstatus.checks.message
Дополнительное сообщение по шагу проверки.
- строкаstatus.checks.name
Обязательный параметр
Название шага проверки.
- строкаstatus.checks.status
Обязательный параметр
Статус шага проверки. Возможные значения:
Succeeded— шаг успешно выполнен;Failed— шаг завершился ошибкой;Skipped— шаг неприменим и был пропущен;Warning— шаг выполнен, но настройка требует внимания (например, отключена проверка TLS-сертификата или сертификат скоро истекает). Общую проверку это не проваливает.
Допустимые значения:
Succeeded,Failed,Skipped,Warning
- строкаstatus.completedAt
Время завершения проверки.
- строкаstatus.message
Дополнительное сообщение о результате проверки или причине ошибки.
- целочисленныйstatus.observedDexProviderGeneration
Поколение DexProvider, на котором была выполнена проверка.
- строкаstatus.phase
Текущий статус выполнения проверки. Возможные значения:
Pending— проверка принята в обработку и ожидает выполнения или выполняется;Succeeded— проверка доступности успешно завершена;Failed— проверка доступности завершилась ошибкой.
Допустимые значения:
Pending,Succeeded,Failed
DexProvider
Scope: Cluster
- v1
- v1alpha1
Описывает конфигурацию подключения стороннего провайдера.
С его помощью можно гибко настроить интеграцию каталога учетных записей с Kubernetes.
Внимание. Запрещено использовать пользователей и группы с префиксом system:. Аутентификация таких пользователей или участников этих групп будет отклонена, а в логах kube-apiserver появится соответствующее предупреждение.
- объектspec
Обязательный параметр
- объектspec.bitbucketCloud
Параметры провайдера Bitbucket Cloud (можно указывать, только если
type: BitbucketCloud).- строкаspec.bitbucketCloud.clientID
Обязательный параметр
ID приложения, созданного в Bitbucket Cloud (Key).
- строкаspec.bitbucketCloud.clientSecret
Обязательный параметр
Secret приложения, созданного в Bitbucket Cloud (Secret).
- булевыйspec.bitbucketCloud.includeTeamGroups
Включает в список команд все группы команды, в которых состоит пользователь.
Пример групп пользователя с включенной опцией:
groups=["my_team", "my_team/administrators", "my_team/members"]По умолчанию:
false - массив строкspec.bitbucketCloud.teams
Список-фильтр команд, допустимых для приема из Bitbucket Cloud.
Токен пользователя будет содержать пересечение множеств команд из Bitbucket Cloud и команд из этого списка. Если если множество окажется пустым, авторизация не будет считаться успешной.
Токен будет содержать команды пользователя в claim
groups, как и у других провайдеров.
- объектspec.crowd
Параметры провайдера Crowd (можно указывать, только если
type: Crowd).- строкаspec.crowd.baseURL
Обязательный параметр
Адрес Crowd.
Пример:
baseURL: https://crowd.example.com/crowd - строкаspec.crowd.clientID
Обязательный параметр
ID приложения, созданного в Crowd (Application Name).
- строкаspec.crowd.clientSecret
Обязательный параметр
Пароль приложения, созданного в Crowd (Password).
- булевыйspec.crowd.enableBasicAuth
Включает возможность базовой аутентификации (Basic Authentication) для Kubernetes API server.
В качестве учетных данных используются логин и пароль пользователя Crowd (из приложения, настроенного для этого провайдера).
Ограничения:
- работает только при включенном
publishAPI; - может быть включено только для одного провайдера аутентификации типа OIDC или Crowd в кластере.
Данные аутентификации и группы, полученные от провайдера аутентификации, кешируются на 10 секунд.
- работает только при включенном
- массив строкspec.crowd.groups
Список-фильтр групп, допустимых для приема из Crowd.
Токен пользователя будет содержать пересечение множеств групп из Crowd и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все группы из Crowd.
- строкаspec.crowd.usernamePrompt
Строка, которая будет отображаться возле поля для имени пользователя в форме ввода логина и пароля.
По умолчанию:
Crowd username
- строкаspec.displayName
Обязательный параметр
Имя провайдера, которое будет отображено на странице выбора провайдера для аутентификации.
Если настроен всего один провайдер, страница выбора провайдера показываться не будет.
- булевыйspec.enabled
When false, this provider is ignored by Dex config renderer.
По умолчанию:
true - объектspec.github
Параметры провайдера GitHub (можно указывать, только если
type: Github).- строкаspec.github.clientID
Обязательный параметр
ID организации на GitHub.
- строкаspec.github.clientSecret
Обязательный параметр
Secret организации на GitHub.
- массив объектовspec.github.orgs
Массив названий организаций в GitHub.
- строкаspec.github.orgs.name
Обязательный параметр
Название организации.
- массив строкspec.github.orgs.teams
Список-фильтр команд, допустимых для приема из GitHub.
Токен пользователя будет содержать пересечение множеств команд из GitHub и команд из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все команды из GitHub.
- строкаspec.github.teamNameField
Формат команд, которые будут получены из GitHub.
Если в организации
acmeесть группаSite Reliability Engineers, в случае:Nameбудет получена группа с именем['acme:Site Reliability Engineers'];Slugбудет получена группа с именем['acme:site-reliability-engineers'];Bothбудут получены группы с именами['acme:Site Reliability Engineers', 'acme:site-reliability-engineers'].
По умолчанию:
NameДопустимые значения:
Name,Slug,Both - булевыйspec.github.useLoginAsID
Позволяет вместо использования внутреннего GitHub ID использовать имя пользователя.
- объектspec.gitlab
Параметры провайдера GitLab (можно указывать, только если
type: Gitlab).- строкаspec.gitlab.baseURL
Адрес GitLab.
Пример:
baseURL: https://gitlab.example.com - строкаspec.gitlab.clientID
Обязательный параметр
ID приложения, созданного в GitLab (Application ID).
- строкаspec.gitlab.clientSecret
Обязательный параметр
Secret приложения, созданного в GitLab (Secret).
- массив строкspec.gitlab.groups
Список-фильтр групп (пути групп — path, а не имена), допустимых для приема из GitLab.
Токен пользователя будет содержать пересечение множеств групп из GitLab и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все группы из GitLab.
- строкаspec.gitlab.rootCAData
A CA chain to validate the provider in PEM format.
Пример:
rootCAData: | -----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE----- - булевыйspec.gitlab.useLoginAsID
Позволяет вместо использования внутреннего GitLab ID, использовать имя пользователя.
- объектspec.ldap
Параметры провайдера LDAP.
- строкаspec.ldap.bindDN
Путь до сервис-аккаунта приложения в LDAP.
Пример:
bindDN: uid=serviceaccount,cn=users,dc=example,dc=com - строкаspec.ldap.bindPW
Пароль для сервис-аккаунта приложения в LDAP.
Пример:
bindPW: password - булевыйspec.ldap.enableBasicAuth
Включает возможность базовой аутентификации (Basic Authentication) для Kubernetes API server с использованием этого LDAP-провайдера.
В качестве учетных данных используются логин и пароль пользователя из LDAP. Эта функция недоступна если в кластере присутствует более одного провайдера аутентификации (IdP) типа
OIDC,CrowdилиLDAP.Работает только при включенном параметре publishAPI.
Полученные от IdP данные аутентификации и групп сохраняются в кеш на 10 секунд.
- объектspec.ldap.groupSearch
Настройки фильтра для поиска групп для указанного пользователя.
Подробнее о процессе фильтрации…
- строкаspec.ldap.groupSearch.baseDN
Обязательный параметр
Откуда будет начат поиск групп
Пример:
baseDN: cn=users,dc=example,dc=com - строкаspec.ldap.groupSearch.filter
Фильтр для директории с группами.
Пример:
filter: "(objectClass=person)" - строкаspec.ldap.groupSearch.nameAttr
Обязательный параметр
Имя атрибута, в котором хранится уникальное имя группы.
Пример:
nameAttr: name - массив объектовspec.ldap.groupSearch.userMatchers
Обязательный параметр
Список сопоставлений атрибута имени юзера с именем группы.
- строкаspec.ldap.groupSearch.userMatchers.groupAttr
Обязательный параметр
Имя атрибута, в котором хранятся имена пользователей, состоящих в группе.
Пример:
groupAttr: member - строкаspec.ldap.groupSearch.userMatchers.userAttr
Обязательный параметр
Имя атрибута, в котором хранится имя пользователя.
Пример:
userAttr: uid
- строкаspec.ldap.host
Обязательный параметр
Адрес и порт (опционально) LDAP-сервера.
Пример:
host: ldap.example.com:636 - булевыйspec.ldap.insecureNoSSL
Подключаться к каталогу LDAP не по защищенному порту.
Несовместимо с
startTLS,insecureSkipVerifyиrootCAData: еслиinsecureNoSSL: true, TLS отключён и эти параметры не имеют эффекта.По умолчанию:
false - булевыйspec.ldap.insecureSkipVerify
Не производить проверку подлинности провайдера с помощью TLS. Небезопасно, не рекомендуется использовать в production-окружениях.
Не используется при
insecureNoSSL: true.По умолчанию:
false - объектspec.ldap.kerberos
Опциональные настройки Kerberos (SPNEGO) SSO для LDAP.
- булевыйspec.ldap.kerberos.enabled
Включить поток аутентификации Kerberos SPNEGO для данного LDAP‑провайдера.
По умолчанию:
false - строкаspec.ldap.kerberos.expectedRealm
Необязательный требуемый realm (без учета регистра). Если указан и не совпадает с realm билета — вход отклоняется.
- булевыйspec.ldap.kerberos.fallbackToPassword
Если
true, при отсутствии/некорректном заголовкеAuthorization: Negotiateбудет показана форма ввода логина/пароля вместо ответа 401 сWWW-Authenticate: Negotiate.По умолчанию:
false - строкаspec.ldap.kerberos.keytabSecretName
Имя секрета в неймспейсе
d8-user-authn, содержащего ключkrb5.keytab, который монтируется в под Dex. - строкаspec.ldap.kerberos.krb5ConfConfigMapName
Необязательное имя ConfigMap с ключом
krb5.confдля монтирования в/etc/krb5.conf(обычно не требуется для офлайн‑проверки билетов). - строкаspec.ldap.kerberos.krb5ConfSecretName
Необязательное имя секрета с ключом
krb5.confдля монтирования в/etc/krb5.conf(обычно не требуется для офлайн‑проверки билетов). - строкаspec.ldap.kerberos.usernameFromPrincipal
Способ сопоставления Kerberos principal с именем пользователя в LDAP:
localpart,sAMAccountNameилиuserPrincipalName.По умолчанию:
LocalpartДопустимые значения:
Localpart,SAMAccountName,UserPrincipalName
- строкаspec.ldap.rootCAData
Цепочка CA в формате PEM, используемая для валидации TLS.
Не используется при
insecureNoSSL: true.Пример:
rootCAData: | -----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE----- - булевыйspec.ldap.startTLS
Использовать STARTTLS для шифрования.
Несовместимо с
insecureNoSSL.По умолчанию:
false - объектspec.ldap.userSearch
Обязательный параметр
Настройки фильтров пользователей, которые помогают сначала отфильтровать директории, в которых будет производиться поиск пользователей, а затем найти пользователя по полям (его имени, адресу электронной почты или отображаемому имени).
Подробнее о процессе фильтрации…
- строкаspec.ldap.userSearch.baseDN
Обязательный параметр
Откуда будет начат поиск пользователей.
Пример:
baseDN: cn=users,dc=example,dc=com - строкаspec.ldap.userSearch.emailAttr
Обязательный параметр
Имя атрибута, из которого будет получен email пользователя.
Пример:
emailAttr: mail - строкаspec.ldap.userSearch.filter
Позволяет добавить фильтр для директории с пользователями.
Пример:
filter: "(objectClass=person)" - строкаspec.ldap.userSearch.idAttr
Обязательный параметр
Имя атрибута, из которого будет получен ID пользователя.
Пример:
idAttr: uid - строкаspec.ldap.userSearch.nameAttr
Атрибут отображаемого имени пользователя.
Пример:
nameAttr: name - строкаspec.ldap.userSearch.username
Обязательный параметр
Имя атрибута, из которого будет получен username пользователя.
Пример:
username: uid
- строкаspec.ldap.usernamePrompt
Строка, которая будет отображаться возле поля для имени пользователя в форме ввода логина и пароля.
По умолчанию:
LDAP usernameПример:
usernamePrompt: SSO Username
- объектspec.oidc
Параметры провайдера OIDC (можно указывать, только если
type: OIDC).- массив строкspec.oidc.allowedGroups
Список групп, которые должны быть у пользователя для успешной аутентификации.
Если список содержит группу, которой у пользователя нет, аутентификация будет отклонена.
Если параметр не задан, проверка принадлежности к группам не выполняется.
- булевыйspec.oidc.basicAuthUnsupported
Использовать POST-запросы для общения с провайдером вместо добавления токена в Basic Authorization header.
В большинстве случаев Dex сам определяет, какой запрос ему нужно сделать, но иногда включение этого параметра может помочь.
По умолчанию:
false - объектspec.oidc.claimMapping
Некоторые провайдеры возвращают нестандартные claim’ы (например, mail). Claim mappings помогают Dex преобразовать их в стандартные claim’ы OIDC.
Dex может преобразовать нестандартный claim в стандартный, только если id_token, полученный от OIDC-провайдера, не содержит аналогичный стандартный claim.
- строкаspec.oidc.claimMapping.email
Claim, который будет использован для получения email пользователя.
По умолчанию:
email - строкаspec.oidc.claimMapping.groups
Claim, который будет использован для получения групп пользователя.
По умолчанию:
groups - строкаspec.oidc.claimMapping.preferred_username
Claim, который будет использован для получения предпочтительного имени пользователя.
По умолчанию:
preferred_username
- булевыйspec.oidc.claimMappingOverride
Если включено, сопоставление claim’ов (
claimMapping) будет переопределять стандартные claim’ы OIDC.По умолчанию сопоставление claim’ов будет использоваться только в том случае, если стандартные claim’ы OIDC отсутствуют, например, если в id_token нет claim’а
email, будет использоватьсяclaimMapping.email.По умолчанию:
false - строкаspec.oidc.clientID
Обязательный параметр
ID приложения, созданного в OIDC-провайдере.
- строкаspec.oidc.clientSecret
Обязательный параметр
Пароль приложения, созданного в OIDC-провайдере.
- булевыйspec.oidc.enableBasicAuth
Включает возможность basic-авторизации для Kubernetes API server.
В качестве credentials для basic-авторизации указываются логин и пароль пользователя из приложения, созданного в OIDC (возможно включить при указании только одного провайдера с типом OIDC/Crowd).
Работает только при включенном параметре publishAPI.
Полученные от IdP данные авторизации и групп сохраняются в кеш на 10 секунд.
- булевыйspec.oidc.getUserInfo
Запрашивать дополнительные данные об успешно подключенном пользователе.
По умолчанию:
false - булевыйspec.oidc.insecureSkipEmailVerified
Игнорировать информацию о статусе подтверждения email пользователя.
Как именно подтверждается email, решает сам провайдер. В ответе от провайдера приходит лишь информация — подтвержден email или нет.
По умолчанию:
false - булевыйspec.oidc.insecureSkipVerify
Не производить проверку подлинности провайдера с помощью TLS. Небезопасно, не рекомендуется использовать в production-окружениях.
По умолчанию:
false - строкаspec.oidc.issuer
Обязательный параметр
Адрес OIDC-провайдера.
Пример:
issuer: https://accounts.google.com - строкаspec.oidc.promptType
Определяет — должен ли Issuer запрашивать подтверждение и давать подсказки при аутентификации.
По умолчанию будет запрошено подтверждение при первой аутентификации. Допустимые значения могут изменяться в зависимости от Issuer.
По умолчанию:
consent - строкаspec.oidc.rootCAData
Цепочка CA в формате PEM, используемая для валидации TLS.
Пример:
rootCAData: | -----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE----- - массив строкspec.oidc.scopes
Список полей для включения в ответ при запросе токена.
По умолчанию:
["openid","profile","email","groups","offline_access"] - строкаspec.oidc.userIDKey
Claim, который будет использован для получения ID пользователя.
По умолчанию:
sub - строкаspec.oidc.userNameKey
Claim, который будет использован для получения имени пользователя.
По умолчанию:
name
- объектspec.saml
Параметры провайдера SAML (можно указывать, только если
type: SAML).- массив строкspec.saml.allowedGroups
Если задано, вход будет разрешён только членам хотя бы одной из перечисленных групп.
- строкаspec.saml.emailAttr
SAML-атрибут для маппинга в claim email.
По умолчанию:
email - строкаspec.saml.entityIssuer
Значение Issuer, ожидаемое в SAML-ответе. По умолчанию — URL callback.
- булевыйspec.saml.filterGroups
Если
true, коннектор будет фильтровать claim groups, оставляя только группы из спискаallowedGroups.По умолчанию:
false - строкаspec.saml.groupsAttr
SAML-атрибут для маппинга в claim groups.
- строкаspec.saml.groupsDelim
Разделитель для разбиения значения атрибута groups, если оно является одной строкой.
- булевыйspec.saml.insecureSkipSignatureValidation
Пропустить проверку подписи SAML-ответов. Небезопасно, использовать только для тестирования.
По умолчанию:
false - строкаspec.saml.nameIDPolicyFormat
Формат NameIDPolicy для запроса к IdP.
Допустимые значения:
persistent,emailAddress,unspecified,X509SubjectName,WindowsDomainQualifiedName,transient - строкаspec.saml.redirectURI
URI обратного вызова.
Переопределяет URL callback по умолчанию. Должен быть установлен в
https://<dex-domain>/callback. - строкаspec.saml.rootCAData
Цепочка CA в формате PEM, используемая для валидации TLS.
Пример:
rootCAData: | -----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE----- - строкаspec.saml.ssoIssuer
Значение Issuer, ожидаемое в SAML-ответе от IdP.
- строкаspec.saml.ssoURL
Обязательный параметр
URL для отправки SAML AuthnRequest (SSO URL провайдера).
Пример:
ssoURL: https://idp.example.com/saml/sso - строкаspec.saml.usernameAttr
SAML-атрибут для маппинга в claim username.
По умолчанию:
name
- строкаspec.type
Обязательный параметр
Тип внешнего провайдера.
Допустимые значения:
Github,Gitlab,BitbucketCloud,Crowd,OIDC,LDAP,SAML
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
Описывает конфигурацию подключения стороннего провайдера.
С его помощью можно гибко настроить интеграцию каталога учетных записей с Kubernetes.
- объектspec
Обязательный параметр
- объектspec.bitbucketCloud
Параметры провайдера Bitbucket Cloud (можно указывать, только если
type: BitbucketCloud).- строкаspec.bitbucketCloud.clientID
Обязательный параметр
ID приложения, созданного в Bitbucket Cloud (Key).
- строкаspec.bitbucketCloud.clientSecret
Обязательный параметр
Secret приложения, созданного в Bitbucket Cloud (Secret).
- булевыйspec.bitbucketCloud.includeTeamGroups
Включает в список команд все группы команды, в которых состоит пользователь.
Пример групп пользователя с включенной опцией:
groups=["my_team", "my_team/administrators", "my_team/members"]По умолчанию:
false - массив строкspec.bitbucketCloud.teams
Список-фильтр команд, допустимых для приема из Bitbucket Cloud.
Токен пользователя будет содержать пересечение множеств команд из Bitbucket Cloud и команд из этого списка. Если если множество окажется пустым, авторизация не будет считаться успешной.
Токен будет содержать команды пользователя в claim
groups, как и у других провайдеров.
- объектspec.crowd
Параметры провайдера Crowd (можно указывать, только если
type: Crowd).- строкаspec.crowd.baseURL
Обязательный параметр
Адрес Crowd.
Пример:
baseURL: https://crowd.example.com/crowd - строкаspec.crowd.clientID
Обязательный параметр
ID приложения, созданного в Crowd (Application Name).
- строкаspec.crowd.clientSecret
Обязательный параметр
Пароль приложения, созданного в Crowd (Password).
- булевыйspec.crowd.enableBasicAuth
Включает возможность базовой аутентификации (Basic Authentication) для Kubernetes API server.
В качестве учетных данных используются логин и пароль пользователя Crowd (из приложения, настроенного для этого провайдера).
Ограничения:
- работает только при включенном
publishAPI; - может быть включено только для одного провайдера аутентификации типа OIDC или Crowd в кластере.
Данные аутентификации и группы, полученные от провайдера аутентификации, кешируются на 10 секунд.
- работает только при включенном
- массив строкspec.crowd.groups
Список-фильтр групп, допустимых для приема из Crowd.
Токен пользователя будет содержать пересечение множеств групп из Crowd и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все группы из Crowd.
- строкаspec.crowd.usernamePrompt
Строка, которая будет отображаться возле поля для имени пользователя в форме ввода логина и пароля.
По умолчанию:
Crowd username
- строкаspec.displayName
Обязательный параметр
Имя провайдера, которое будет отображено на странице выбора провайдера для аутентификации.
Если настроен всего один провайдер, страница выбора провайдера показываться не будет.
- булевыйspec.enabled
Если значение
false, провайдер будет проигнорирован при формировании конфигурации Dex и не появится на странице логина.По умолчанию:
true - объектspec.github
Параметры провайдера GitHub (можно указывать? только если
type: Github).- строкаspec.github.clientID
Обязательный параметр
ID организации на GitHub.
- строкаspec.github.clientSecret
Обязательный параметр
Secret организации на GitHub.
- массив объектовspec.github.orgs
Массив названий организаций в GitHub.
- строкаspec.github.orgs.name
Обязательный параметр
Название организации.
- массив строкspec.github.orgs.teams
Список команд, допустимых для приема из GitHub.
Токен пользователя будет содержать объединенное множество команд из GitHub и команд из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все команды из GitHub.
- строкаspec.github.teamNameField
Формат команд, которые будут получены из GitHub.
Если в организации
acmeесть группаSite Reliability Engineers, в случае:nameбудет получена группа с именем['acme:Site Reliability Engineers'];slugбудет получена группа с именем['acme:site-reliability-engineers'];bothбудут получены группы с именами['acme:Site Reliability Engineers', 'acme:site-reliability-engineers'].
По умолчанию:
nameДопустимые значения:
name,slug,both - булевыйspec.github.useLoginAsID
Позволяет вместо использования внутреннего GitHub ID использовать имя пользователя.
- объектspec.gitlab
Параметры провайдера GitLab (можно указывать, только если
type: Gitlab).- строкаspec.gitlab.baseURL
Адрес GitLab.
Пример:
baseURL: https://gitlab.example.com - строкаspec.gitlab.clientID
Обязательный параметр
ID приложения, созданного в GitLab (Application ID).
- строкаspec.gitlab.clientSecret
Обязательный параметр
Secret приложения, созданного в GitLab (Secret).
- массив строкspec.gitlab.groups
Список-фильтр групп (пути групп — path, а не имена), допустимых для приема из GitLab.
Токен пользователя будет содержать пересечение множеств групп из GitLab и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все группы из GitLab.
- строкаspec.gitlab.rootCAData
A CA chain to validate the provider in PEM format.
Пример:
rootCAData: | -----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE----- - булевыйspec.gitlab.useLoginAsID
Позволяет вместо использования внутреннего GitLab ID, использовать имя пользователя.
- объектspec.ldap
Параметры провайдера LDAP.
- строкаspec.ldap.bindDN
Путь до сервис-аккаунта приложения в LDAP.
Пример:
bindDN: uid=serviceaccount,cn=users,dc=example,dc=com - строкаspec.ldap.bindPW
Пароль для сервис-аккаунта приложения в LDAP.
Пример:
bindPW: password - булевыйspec.ldap.enableBasicAuth
Включает возможность базовой аутентификации (Basic Authentication) для Kubernetes API server с использованием этого LDAP-провайдера.
В качестве учетных данных используются логин и пароль пользователя из LDAP. Эта функция недоступна если в кластере присутствует более одного провайдера аутентификации (IdP) типа
OIDC,CrowdилиLDAP.Работает только при включенном параметре publishAPI.
Полученные от IdP данные аутентификации и групп сохраняются в кеш на 10 секунд.
- объектspec.ldap.groupSearch
Настройки фильтра для поиска групп для указанного пользователя.
Подробнее о процессе фильтрации…
- строкаspec.ldap.groupSearch.baseDN
Обязательный параметр
Откуда будет начат поиск групп
Пример:
baseDN: cn=users,dc=example,dc=com - строкаspec.ldap.groupSearch.filter
Фильтр для директории с группами.
Пример:
filter: "(objectClass=person)" - строкаspec.ldap.groupSearch.nameAttr
Обязательный параметр
Имя атрибута, в котором хранится уникальное имя группы.
Пример:
nameAttr: name - массив объектовspec.ldap.groupSearch.userMatchers
Обязательный параметр
Список сопоставлений атрибута имени юзера с именем группы.
- строкаspec.ldap.groupSearch.userMatchers.groupAttr
Обязательный параметр
Имя атрибута, в котором хранятся имена пользователей, состоящих в группе.
Пример:
groupAttr: member - строкаspec.ldap.groupSearch.userMatchers.userAttr
Обязательный параметр
Имя атрибута, в котором хранится имя пользователя.
Пример:
userAttr: uid
- строкаspec.ldap.host
Обязательный параметр
Адрес и порт (опционально) LDAP-сервера.
Пример:
host: ldap.example.com:636 - булевыйspec.ldap.insecureNoSSL
Подключаться к каталогу LDAP не по защищенному порту.
Несовместимо с
startTLS,insecureSkipVerifyиrootCAData: еслиinsecureNoSSL: true, TLS отключён и эти параметры не имеют эффекта.По умолчанию:
false - булевыйspec.ldap.insecureSkipVerify
Не производить проверку подлинности провайдера с помощью TLS. Небезопасно, не рекомендуется использовать в production-окружениях.
Не используется при
insecureNoSSL: true.По умолчанию:
false - объектspec.ldap.kerberos
Опциональные настройки Kerberos (SPNEGO) SSO для LDAP.
- булевыйspec.ldap.kerberos.enabled
Включить поток аутентификации Kerberos SPNEGO для данного LDAP‑провайдера.
По умолчанию:
false - строкаspec.ldap.kerberos.expectedRealm
Необязательный требуемый realm (без учета регистра). Если указан и не совпадает с realm билета — вход отклоняется.
- булевыйspec.ldap.kerberos.fallbackToPassword
Если
true, при отсутствии/некорректном заголовкеAuthorization: Negotiateбудет показана форма ввода логина/пароля вместо ответа 401 сWWW-Authenticate: Negotiate.По умолчанию:
false - строкаspec.ldap.kerberos.keytabSecretName
Имя секрета в неймспейсе
d8-user-authn, содержащего ключkrb5.keytab, который монтируется в под Dex. - строкаspec.ldap.kerberos.krb5ConfConfigMapName
Необязательное имя ConfigMap с ключом
krb5.confдля монтирования в/etc/krb5.conf(обычно не требуется для офлайн‑проверки билетов). - строкаspec.ldap.kerberos.krb5ConfSecretName
Необязательное имя секрета с ключом
krb5.confдля монтирования в/etc/krb5.conf(обычно не требуется для офлайн‑проверки билетов). - строкаspec.ldap.kerberos.usernameFromPrincipal
Способ сопоставления Kerberos principal с именем пользователя в LDAP:
localpart,sAMAccountNameилиuserPrincipalName.По умолчанию:
LocalpartДопустимые значения:
Localpart,SAMAccountName,UserPrincipalName
- строкаspec.ldap.rootCAData
Цепочка CA в формате PEM, используемая для валидации TLS.
Не используется при
insecureNoSSL: true.Пример:
rootCAData: | -----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE----- - булевыйspec.ldap.startTLS
Использовать STARTTLS для шифрования.
Несовместимо с
insecureNoSSL.По умолчанию:
false - объектspec.ldap.userSearch
Обязательный параметр
Настройки фильтров пользователей, которые помогают сначала отфильтровать директории, в которых будет производиться поиск пользователей, а затем найти пользователя по полям (его имени, адресу электронной почты или отображаемому имени).
Подробнее о процессе фильтрации…
- строкаspec.ldap.userSearch.baseDN
Обязательный параметр
Откуда будет начат поиск пользователей.
Пример:
baseDN: cn=users,dc=example,dc=com - строкаspec.ldap.userSearch.emailAttr
Обязательный параметр
Имя атрибута, из которого будет получен email пользователя.
Пример:
emailAttr: mail - строкаspec.ldap.userSearch.filter
Позволяет добавить фильтр для директории с пользователями.
Пример:
filter: "(objectClass=person)" - строкаspec.ldap.userSearch.idAttr
Обязательный параметр
Имя атрибута, из которого будет получен ID пользователя.
Пример:
idAttr: uid - строкаspec.ldap.userSearch.nameAttr
Атрибут отображаемого имени пользователя.
Пример:
nameAttr: name - строкаspec.ldap.userSearch.username
Обязательный параметр
Имя атрибута, из которого будет получен username пользователя.
Пример:
username: uid
- строкаspec.ldap.usernamePrompt
Строка, которая будет отображаться возле поля для имени пользователя в форме ввода логина и пароля.
По умолчанию:
LDAP usernameПример:
usernamePrompt: SSO Username
- объектspec.oidc
Параметры провайдера OIDC (можно указывать, только если
type: OIDC).- массив строкspec.oidc.allowedGroups
Список групп, которые должны быть у пользователя для успешной аутентификации.
Если список содержит группу, которой у пользователя нет, аутентификация будет отклонена.
Если параметр не задан, проверка принадлежности к группам не выполняется.
- булевыйspec.oidc.basicAuthUnsupported
Использовать POST-запросы для общения с провайдером вместо добавления токена в Basic Authorization header.
В большинстве случаев Dex сам определяет, какой запрос ему нужно сделать, но иногда включение этого параметра может помочь.
По умолчанию:
false - объектspec.oidc.claimMapping
Некоторые провайдеры возвращают нестандартные claim’ы (например, mail). Claim mappings помогают Dex преобразовать их в стандартные claim’ы OIDC.
Dex может преобразовать нестандартный claim в стандартный, только если id_token, полученный от OIDC-провайдера, не содержит аналогичный стандартный claim.
- строкаspec.oidc.claimMapping.email
Claim, который будет использован для получения email пользователя.
По умолчанию:
email - строкаspec.oidc.claimMapping.groups
Claim, который будет использован для получения групп пользователя.
По умолчанию:
groups - строкаspec.oidc.claimMapping.preferred_username
Claim, который будет использован для получения предпочтительного имени пользователя.
По умолчанию:
preferred_username
- булевыйspec.oidc.claimMappingOverride
Если включено, сопоставление claim’ов (
claimMapping) будет переопределять стандартные claim’ы OIDC.По умолчанию сопоставление claim’ов будет использоваться только в том случае, если стандартные claim’ы OIDC отсутствуют, например, если в id_token нет claim’а
email, будет использоватьсяclaimMapping.email.По умолчанию:
false - строкаspec.oidc.clientID
Обязательный параметр
ID приложения, созданного в OIDC-провайдере.
- строкаspec.oidc.clientSecret
Обязательный параметр
Пароль приложения, созданного в OIDC-провайдере.
- булевыйspec.oidc.enableBasicAuth
Включает возможность basic-авторизации для Kubernetes API server.
В качестве credentials для basic-авторизации указываются логин и пароль пользователя из приложения, созданного в OIDC (возможно включить при указании только одного провайдера с типом OIDC/Crowd).
Работает только при включенном параметре publishAPI.
Полученные от IdP данные авторизации и групп сохраняются в кеш на 10 секунд.
- булевыйspec.oidc.getUserInfo
Запрашивать дополнительные данные об успешно подключенном пользователе.
По умолчанию:
false - булевыйspec.oidc.insecureSkipEmailVerified
Игнорировать информацию о статусе подтверждения email пользователя.
Как именно подтверждается email, решает сам провайдер. В ответе от провайдера приходит лишь информация — подтвержден email или нет.
По умолчанию:
false - булевыйspec.oidc.insecureSkipVerify
Не производить проверку подлинности провайдера с помощью TLS. Небезопасно, не рекомендуется использовать в production-окружениях.
По умолчанию:
false - строкаspec.oidc.issuer
Обязательный параметр
Адрес OIDC-провайдера.
Пример:
issuer: https://accounts.google.com - строкаspec.oidc.promptType
Определяет — должен ли Issuer запрашивать подтверждение и давать подсказки при аутентификации.
По умолчанию будет запрошено подтверждение при первой аутентификации. Допустимые значения могут изменяться в зависимости от Issuer.
По умолчанию:
consent - строкаspec.oidc.rootCAData
Цепочка CA в формате PEM, используемая для валидации TLS.
Пример:
rootCAData: | -----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE----- - массив строкspec.oidc.scopes
Список полей для включения в ответ при запросе токена.
По умолчанию:
["openid","profile","email","groups","offline_access"] - строкаspec.oidc.userIDKey
Claim, который будет использован для получения ID пользователя.
По умолчанию:
sub - строкаspec.oidc.userNameKey
Claim, который будет использован для получения имени пользователя.
По умолчанию:
name
- объектspec.saml
Параметры провайдера SAML (можно указывать, только если
type: SAML).- массив строкspec.saml.allowedGroups
Если задано, вход будет разрешён только членам хотя бы одной из перечисленных групп.
- строкаspec.saml.emailAttr
SAML-атрибут для маппинга в claim email.
По умолчанию:
email - строкаspec.saml.entityIssuer
Значение Issuer, ожидаемое в SAML-ответе. По умолчанию — URL callback.
- булевыйspec.saml.filterGroups
Если
true, коннектор будет фильтровать claim groups, оставляя только группы из спискаallowedGroups.По умолчанию:
false - строкаspec.saml.groupsAttr
SAML-атрибут для маппинга в claim groups.
- строкаspec.saml.groupsDelim
Разделитель для разбиения значения атрибута groups, если оно является одной строкой.
- булевыйspec.saml.insecureSkipSignatureValidation
Пропустить проверку подписи SAML-ответов. Небезопасно, использовать только для тестирования.
По умолчанию:
false - строкаspec.saml.nameIDPolicyFormat
Формат NameIDPolicy для запроса к IdP.
Допустимые значения:
persistent,emailAddress,unspecified,X509SubjectName,WindowsDomainQualifiedName,transient - строкаspec.saml.redirectURI
URI обратного вызова.
Переопределяет URL callback по умолчанию. Должен быть установлен в
https://<dex-domain>/callback. - строкаspec.saml.rootCAData
Цепочка CA в формате PEM, используемая для валидации TLS.
Пример:
rootCAData: | -----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE----- - строкаspec.saml.ssoIssuer
Значение Issuer, ожидаемое в SAML-ответе от IdP.
- строкаspec.saml.ssoURL
Обязательный параметр
URL для отправки SAML AuthnRequest (SSO URL провайдера).
Пример:
ssoURL: https://idp.example.com/saml/sso - строкаspec.saml.usernameAttr
SAML-атрибут для маппинга в claim username.
По умолчанию:
name
- строкаspec.type
Обязательный параметр
Тип внешнего провайдера.
Допустимые значения:
Github,Gitlab,BitbucketCloud,Crowd,OIDC,LDAP,SAML
Group
Scope: Cluster
Version: v1alpha1
Содержит информацию о статических группах.
- объектspec
Обязательный параметр
- массив объектовspec.members
Обязательный параметр
Список членов группы.
- строкаspec.members.kind
Обязательный параметр
Тип члена группы.
Допустимые значения:
User,Group - строкаspec.members.name
Обязательный параметр
Имя пользователя (члена группы) или название группы (члена группы).
- строкаspec.name
Обязательный параметр
Уникальное имя группы.
- объектspec.status
- массив объектовspec.status.errors
- строкаspec.status.errors.message
- объектspec.status.errors.objectRef
- строкаspec.status.errors.objectRef.kind
Допустимые значения:
User,Group - строкаspec.status.errors.objectRef.name
UserOperation
Scope: Cluster
- v1
- v1alpha1
Содержит информацию об операции над пользователем (сброс пароля, сброс 2FA, блокировка/разблокировка).
Для локальных пользователей операции ResetPassword, Reset2FA и Lock также удаляют
принадлежащие пользователю объекты Dex OfflineSessions и RefreshToken. Это завершает
активные offline-сессии и требует от пользователя повторной аутентификации.
- объектspec
Обязательный параметр
- строкаspec.initiatorType
Указывает, кем инициирована операция. Возможные значения:
admin— администратором;system— автоматически системой;self— самим пользователем.
- объектspec.lock
Параметры операции по блокировке пользователя.
- строкаspec.lock.for
Обязательный параметр
Длительность блокировки в формате Go (
30s,10m,1h,2h30m,7d) либоpermanent— бессрочная блокировка, снимается толькоUnlock. Дни раскрываются хуком как1d = 24hперед парсингом.Шаблон:
^(permanent|([0-9]+(\.[0-9]+)?(s|m|h|d))+)$
- объектspec.resetPassword
Параметры операции по сбросу пароля.
- строкаspec.resetPassword.newPasswordHash
Новый пароль в виде bcrypt-хеша.
Хеш должен быть получен заранее и передан в поле CR.
- объектspec.target
Идентификатор внешней (нелокальной) учётной записи, которой управляет внешний провайдер аутентификации (LDAP, Atlassian Crowd и т. п.).
Операции
LockиUnlockдляtargetвыполняются над объектом OfflineSessions, который хранит счётчик неудачных попыток входа и состояние блокировки для соответствующей пары(connectorID, email).Одновременно можно указать только одно из полей:
userилиtarget.- строкаspec.target.connectorID
Обязательный параметр
Идентификатор DexProvider (коннектора), через который входит пользователь.
Примеры:
connectorID: my-ldapconnectorID: my-crowd - строкаspec.target.email
Обязательный параметр
Email внешнего пользователя в том виде, в котором его сообщает коннектор.
Сохраняется в
OfflineSessions.emailи используется как стабильный идентификатор для административных операций.Пример:
email: jane.doe@example.org
- строкаspec.type
Обязательный параметр
Тип операции над пользователем. Возможные значения:
ResetPassword— сброс пароля;Reset2FA— сброс двухфакторной аутентификации;Lock— блокировка пользователя;Unlock— разблокировка пользователя.
Допустимые значения:
ResetPassword,Reset2FA,Lock,Unlock - строкаspec.user
Имя локального пользователя (ссылка на ресурс User).
Используется для операций над пользователями, которыми DKP управляет через CRD User (встроенный локальный коннектор).
Одновременно можно указать только одно из полей:
userилиtarget.Пример:
user: jane.doe
- объектstatus
- строкаstatus.completedAt
Время завершения операции.
- строкаstatus.message
Дополнительное сообщение о результате выполнения операции или причине ошибки.
- строкаstatus.phase
Текущий статус выполнения операции. Возможные значения:
Succeeded— операция успешно выполнена;Failed— операция завершилась ошибкой.
Допустимые значения:
Succeeded,Failed
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
Содержит информацию об операции над пользователем (сброс пароля, сброс 2FA, блокировка/разблокировка).
Для локальных пользователей операции ResetPassword, Reset2FA и Lock также удаляют
принадлежащие пользователю объекты Dex OfflineSessions и RefreshToken. Это завершает
активные offline-сессии и требует от пользователя повторной аутентификации.
- объектspec
Обязательный параметр
- строкаspec.initiatorType
Указывает, кем инициирована операция. Возможные значения:
admin— администратором;system— автоматически системой;self— самим пользователем.
- объектspec.lock
Параметры операции по блокировке пользователя.
- строкаspec.lock.for
Обязательный параметр
Длительность блокировки в формате Go (
30s,10m,1h,2h30m,7d) либоpermanent— бессрочная блокировка, снимается толькоUnlock. Дни раскрываются хуком как1d = 24hперед парсингом.Шаблон:
^(permanent|([0-9]+(\.[0-9]+)?(s|m|h|d))+)$
- объектspec.resetPassword
Параметры операции по сбросу пароля.
- строкаspec.resetPassword.newPasswordHash
Новый пароль в виде bcrypt-хеша.
Хеш должен быть получен заранее и передан в поле CR.
- строкаspec.type
Обязательный параметр
Тип операции над пользователем. Возможные значения:
ResetPassword— сброс пароля;Reset2FA— сброс двухфакторной аутентификации;Lock— блокировка пользователя;Unlock— разблокировка пользователя.
Допустимые значения:
ResetPassword,Reset2FA,Lock,Unlock - строкаspec.user
Обязательный параметр
Имя пользователя (ссылка на ресурс User).
Пример:
user: jane.doe
- объектstatus
- строкаstatus.completedAt
Время завершения операции.
- строкаstatus.message
Дополнительное сообщение о результате выполнения операции или причине ошибки.
- строкаstatus.phase
Текущий статус выполнения операции. Возможные значения:
Succeeded— операция успешно выполнена;Failed— операция завершилась ошибкой.
Допустимые значения:
Succeeded,Failed
User
Scope: Cluster
- v1
- v1alpha1
Содержит информацию о статическом пользователе.
- объектspec
Обязательный параметр
- строкаspec.email
Обязательный параметр
Email пользователя.
Важно! При использовании совместно с модулем user-authz, для выдачи прав конкретному пользователю в качестве имени пользователя в CR ClusterAuthorizationRule необходимо указывать
email.Пример:
email: user@domain.com - массив строкspec.groupsПараметр устарел
Список групп, в которых у пользователя есть членство.
Т.к. параметр устарел, добавление пользователя в группы теперь осуществляется через ресурс Group.
- строкаspec.password
Обязательный параметр
Хеш пароля пользователя в явном виде или закодированный в Base64.
Для получения хеша пароля в Base64 можно воспользоваться командой
echo -n '<PASSWORD>' | htpasswd -BinC 10 "" | cut -d: -f2 | tr -d '\n' | base64 -w0; echo. Также можно воспользоваться онлайн-сервисом (например, https://bcrypt-generator.com/).Пример:
password: JDJ5JDEwJGRNWGVGUVBkdUdYYVMyWDFPcGdZdk9HSy81LkdsNm5sdU9mUkhnNWlQdDhuSlh6SzhpeS5H - строкаspec.ttl
Время жизни учетной записи пользователя (TTL).
Задаётся в виде строки с указанием часов и минут: 30m, 1h, 2h30m, 24h.
Указать TTL можно только 1 раз. При повторном изменении TTL, дата
expireAtне обновляется.Шаблон:
^([0-9]+h([0-9]+m)?|[0-9]+m)$Пример:
ttl: 24h - строкаspec.userIDПараметр устарел
Уникальное имя (ID) пользователя.
Больше не используется. Заполняется автоматически.
- объектstatus
- строкаstatus.expireAt
Дата окончания действия учетной записи пользователя.
- Появляется только при заполнении поля
.spec.ttl. - При достижении этой даты учетная запись будет удалена.
- Синхронизируется раз в 5 минут. Возможен временной лаг между датой в этом поле и датой фактического удаления пользователя.
- Появляется только при заполнении поля
- массив строкstatus.groups
Список групп, в которых у пользователя есть членство.
- объектstatus.lock
Информация о блокировке учётной записи пользователя. Если объект присутствует и
state: true, пользователь не может аутентифицироваться до указанного времени или пока блокировка не будет снята администратором.Административные действия с учётной записью (блокировка, разблокировка, принудительная смена пароля, сброс 2FA) выполняются через ресурс UserOperation. При блокировке учётной записи администратором или при принудительной смене пароля все активные сессии пользователя (объекты Dex
OfflineSessionsиRefreshToken) удаляются — пользователь обязан пройти повторную аутентификацию; в случае принудительной смены пароля при следующем успешном входе ему будет показана форма смены пароля.- строкаstatus.lock.message
Человекочитаемое описание причины блокировки.
- строкаstatus.lock.reason
Машиночитаемая причина блокировки учётной записи. Используется для проверки политик и автоматических обработчиков.
Допустимые значения:
PasswordPolicyLockout,LockedByAdministrator - булевыйstatus.lock.state
Показывает, заблокирован ли в данный момент пользователь.
true— учётная запись заблокирована.false— учётная запись активна.
- строкаstatus.lock.until
Время (в формате RFC3339), до которого учётная запись будет оставаться заблокированной. После наступления этого времени блокировка снимается автоматически.
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
Содержит информацию о статическом пользователе.
- объектspec
Обязательный параметр
- строкаspec.email
Обязательный параметр
Email пользователя. Должен быть в нижнем регистре.
Важно! При использовании совместно с модулем user-authz для выдачи прав конкретному пользователю в качестве имени пользователя в custom resource ClusterAuthorizationRule необходимо указывать
email.Важно! Email-адреса проверяются на уникальность без учёта регистра. Dex автоматически преобразует email-адреса в нижний регистр при аутентификации. Для новых пользователей заглавные буквы в email-адресах не допускаются. Существующие пользователи с заглавными буквами в email могут быть обновлены без изменения поля email.
Пример:
email: user@domain.com - массив строкspec.groupsПараметр устарел
Список групп, в которых у пользователя есть членство.
Т.к. параметр устарел, добавление пользователя в группы теперь осуществляется через ресурс Group.
- строкаspec.password
Обязательный параметр
Хеш пароля пользователя в явном виде или закодированный в Base64.
Для получения хеша пароля в Base64 можно воспользоваться командой
echo -n '<PASSWORD>' | htpasswd -BinC 10 "" | cut -d: -f2 | tr -d '\n' | base64 -w0; echo. Также можно воспользоваться онлайн-сервисом (например, https://bcrypt-generator.com/).Важно. Если используется политика паролей с контролем сложности выше
None, пользователь будет обязан сменить установленный таким образом пароль после первого успешного входа в систему.Пример:
password: JDJ5JDEwJGRNWGVGUVBkdUdYYVMyWDFPcGdZdk9HSy81LkdsNm5sdU9mUkhnNWlQdDhuSlh6SzhpeS5H - строкаspec.ttl
Время жизни учетной записи пользователя (TTL).
Задается в виде строки с указанием часов и минут: 30m, 1h, 2h30m, 24h.
Указать TTL можно только 1 раз. При повторном изменении TTL дата
expireAtне обновляется.Шаблон:
^([0-9]+h([0-9]+m)?|[0-9]+m)$Пример:
ttl: 24h - строкаspec.userID
Уникальное имя (ID) пользователя.
Пример:
userID: '08a8684b-db88-4b73-90a9-3cd1661f5466'
- объектstatus
- строкаstatus.expireAt
Дата окончания действия учетной записи пользователя:
- Появляется только при заполнении поля
.spec.ttl. - При достижении этой даты учетная запись будет удалена.
- Синхронизируется раз в 5 минут. Возможен временной лаг между датой в этом поле и датой фактического удаления пользователя.
- Появляется только при заполнении поля
- массив строкstatus.groups
Список групп, в которых у пользователя есть членство.
- объектstatus.lock
Информация о блокировке учётной записи пользователя. Если объект присутствует и
state: true, пользователь не может аутентифицироваться до указанного времени или пока блокировка не будет снята администратором.Административные действия с учётной записью (блокировка, разблокировка, принудительная смена пароля, сброс 2FA) выполняются через ресурс UserOperation. При блокировке учётной записи администратором или при принудительной смене пароля все активные сессии пользователя (объекты Dex
OfflineSessionsиRefreshToken) удаляются — пользователь обязан пройти повторную аутентификацию; в случае принудительной смены пароля при следующем успешном входе ему будет показана форма смены пароля.- строкаstatus.lock.message
Человекочитаемое описание причины блокировки.
- строкаstatus.lock.reason
Машиночитаемая причина блокировки учётной записи. Используется для проверки политик и автоматических обработчиков.
Допустимые значения:
PasswordPolicyLockout,LockedByAdministrator - булевыйstatus.lock.state
Показывает, заблокирован ли в данный момент пользователь.
true— учётная запись заблокирована.false— учётная запись активна.
- строкаstatus.lock.until
Время (в формате RFC3339), до которого учётная запись будет оставаться заблокированной. После наступления этого времени блокировка снимается автоматически.