DexAuthenticator
Scope: Namespaced
При появлении объекта DexAuthenticator
в пространстве имен будут созданы:
- Deployment с OAuth2-Proxy и Redis;
- Сервис (Service), ведущий на OAuth2-Proxy;
- Ingress-ресурс, который принимает запросы по адресу
https://<applicationDomain>/dex-authenticator
и отправляет их в сторону сервиса; - Секреты, необходимые для доступа к Dex.
Внимание. При перезапуске пода с 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
- массив объектов
Список дополнительных приложений, для которых необходима аутентификация.
- строка
Обязательный параметр
Домен приложения (для использования в Ingress-ресурсе), запросы на который будут перенаправлены в Dex для аутентификации.
Внимание. Домен не должен содержать HTTP-схему.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- строка
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$
- массив строк
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
Пример:
whitelistSourceRanges: - 192.168.42.0/24
- строка
Обязательный параметр
Адрес приложения (домен DNS для Ingress-ресурса), для которого необходима аутентификация.
Внимание. Адрес не должен содержать HTTP-схему.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Пример:
applicationDomain: my-app.domain.com
- строка
Имя секрета (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
- строка
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-ресурсе (должно совпадать с названием Ingress-класса для домена приложения).
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Пример:
applicationIngressClassName: nginx
- объект
Определяет
nodeSelector
для подовdex-authenticator
.Формат: стандартный список nodeSelector. Поды инстанса унаследуют это поле как есть.
- булевый
Флаг, который отвечает за отправку конечному приложению заголовка
Authorization: Bearer
.Внимание. Включайте, только если приложение умеет обрабатывать такой заголовок.
- массив объектов
Определяет
tolerations
для подовdex-authenticator
.Формат: стандартный список toleration. Поды инстанса унаследуют это поле как есть.
- строка
Определяет отношение ключа (key) к значению (value) — должен ли ключ быть равен (
Equal
) значению или допустимо существование ключа с любым значением.Указание
Exists
равносильно допуску любого значения для value, чтобы под с указанным toleration удовлетворял соответствующему taint.По умолчанию:
"Equal"
Допустимые значения:
Exists
,Equal
- целочисленный
Определяет период времени в секундах, в течение которого планировщик должен ждать, прежде чем выгнать (evict) под с узла, если toleration перестал удовлетворять taint’у (справедливо только для effect
NoExecute
, иначе игнорируется).Если не установлено, тогда под не будет выгнан с узла, если toleration перестал удовлетворять taint’у. Если установлен в ноль (или отрицателен), под будет выгнан с узла немедленно, если toleration перестал удовлетворять taint’у..
По умолчанию используется значение «не установлено».
- массив строк
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
Пример:
whitelistSourceRanges: - 192.168.42.0/24
- массив объектов
Обязательный параметр
Список приложений, для которых необходима аутентификация.
- строка
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$
- массив строк
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
Пример:
whitelistSourceRanges: - 192.168.42.0/24
- булевый
Флаг, который отвечает за отправку конечному приложению заголовка
Authorization: Bearer
.Внимание. Включайте, только если приложение умеет обрабатывать такой заголовок.
- массив объектов
Определяет tolerations для подов
dex-authenticator
.Формат: стандартный список toleration. Поды инстанса унаследуют это поле как есть.
- строка
Определяет отношение ключа (key) к значению (value) — должен ли ключ быть равен (
Equal
) значению или допустимо существование ключа с любым значением.Указание
Exists
равносильно допуску любого значения для value, чтобы под с указанным toleration удовлетворял соответствующему taint.По умолчанию:
"Equal"
Допустимые значения:
Exists
,Equal
- целочисленный
Определяет период времени в секундах, в течение которого планировщик должен ждать, прежде чем выгнать (evict) под с узла, если toleration перестал удовлетворять taint’у (справедливо только для effect
NoExecute
, иначе игнорируется).Если не установлено, тогда под не будет выгнан с узла, если toleration перестал удовлетворять taint’у. Если установлен в ноль (или отрицателен), под будет выгнан с узла немедленно, если toleration перестал удовлетворять taint’у..
По умолчанию используется значение «не установлено».
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
При появлении объекта DexAuthenticator
в пространстве имен будут созданы:
- Deployment с OAuth2-Proxy и Redis;
- Сервис (Service), ведущий на OAuth2-Proxy;
- Ingress-ресурс, который принимает запросы по адресу
https://<applicationDomain>/dex-authenticator
и отправляет их в сторону сервиса; - Секреты, необходимые для доступа к Dex.
Внимание. При перезапуске пода с 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
- массив объектов
Список дополнительных приложений, для которых необходима аутентификация.
- строка
Обязательный параметр
Домен приложения (для использования в Ingress-ресурсе), запросы на который будут перенаправлены в Dex для аутентификации.
Внимание. Домен не должен содержать HTTP-схему.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- строка
Имя секрета (Secret) с TLS-сертификатом для домена приложения, который используется в Ingress-ресурсе приложения. Секрет должен обязательно находиться в том же пространстве имен, что и DexAuthenticator.
Шаблон:
^(|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$
- массив строк
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
Пример:
whitelistSourceRanges: - 192.168.42.0/24
- строка
Обязательный параметр
Адрес приложения (домен DNS для Ingress-ресурса), для которого необходима аутентификация.
Внимание. Адрес не должен содержать HTTP-схему.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Пример:
applicationDomain: my-app.domain.com
- строка
Имя секрета (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
- строка
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-ресурсе (должно совпадать с названием Ingress-класса для домена приложения).
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Пример:
applicationIngressClassName: nginx
- объект
Определяет
nodeSelector
для подовdex-authenticator
.Формат: стандартный список nodeSelector. Поды инстанса унаследуют это поле как есть.
- булевый
Флаг, который отвечает за отправку конечному приложению заголовка
Authorization: Bearer
.Внимание. Включайте, только если приложение умеет обрабатывать такой заголовок.
- массив объектов
Определяет
tolerations
для подовdex-authenticator
.Формат: стандартный список toleration. Поды инстанса унаследуют это поле как есть.
- строка
Определяет отношение ключа (key) к значению (value) — должен ли ключ быть равен (
Equal
) значению или допустимо существование ключа с любым значением.Указание
Exists
равносильно допуску любого значения для value, чтобы под с указанным toleration удовлетворял соответствующему taint.По умолчанию:
"Equal"
Допустимые значения:
Exists
,Equal
- целочисленный
Определяет период времени в секундах, в течение которого планировщик должен ждать, прежде чем выгнать (evict) под с узла, если toleration перестал удовлетворять taint’у (справедливо только для effect
NoExecute
, иначе игнорируется).Если не установлено, тогда под не будет выгнан с узла, если toleration перестал удовлетворять taint’у. Если установлен в ноль (или отрицателен), под будет выгнан с узла немедленно, если toleration перестал удовлетворять taint’у..
По умолчанию используется значение «не установлено».
- массив строк
Список адресов в формате CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу.
Пример:
whitelistSourceRanges: - 192.168.42.0/24
DexClient
Scope: Namespaced
Позволяет приложениям, поддерживающим 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).
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
Позволяет приложениям, поддерживающим 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).
DexProvider
Scope: Cluster
Описывает конфигурацию подключения стороннего провайдера.
С его помощью можно гибко настроить интеграцию каталога учетных записей с Kubernetes.
- объект
Параметры провайдера Bitbucket Cloud (можно указывать, только если
type: BitbucketCloud
).- массив строк
Список-фильтр команд, допустимых для приема из Bitbucket Cloud.
Токен пользователя будет содержать пересечение множеств команд из Bitbucket Cloud и команд из этого списка. Если если множество окажется пустым, авторизация не будет считаться успешной.
Токен будет содержать команды пользователя в claim
groups
, как и у других провайдеров.
- булевый
Включает возможность basic-авторизации для Kubernetes API server.
В качестве credentials для basic-авторизации указываются логин и пароль пользователя из приложения, созданного в Crowd (возможно включить при указании только одного провайдера с типом OIDC/Crowd).
Работает только при включенном
publishAPI
.Полученные от IdP данные авторизации и групп сохраняются в кэш на 10 секунд.
- массив строк
Список-фильтр групп, допустимых для приема из Crowd.
Токен пользователя будет содержать пересечение множеств групп из Crowd и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все группы из Crowd.
- массив строк
Список-фильтр команд, допустимых для приема из GitHub.
Токен пользователя будет содержать пересечение множеств команд из GitHub и команд из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все команды из GitHub.
- строка
Формат команд, которые будут получены из 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
- массив строк
Список-фильтр групп (пути групп — path, а не имена), допустимых для приема из GitLab.
Токен пользователя будет содержать пересечение множеств групп из GitLab и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все группы из GitLab.
- объект
Настройки фильтра для поиска групп для указанного пользователя.
Подробнее о процессе фильтрации…
- массив объектов
Обязательный параметр
Список сопоставлений атрибута имени юзера с именем группы.
- объект
Обязательный параметр
Настройки фильтров пользователей, которые помогают сначала отфильтровать директории, в которых будет производиться поиск пользователей, а затем найти пользователя по полям (его имени, адресу электронной почты или отображаемому имени).
Подробнее о процессе фильтрации…
- объект
Некоторые провайдеры возвращают нестандартные claim’ы (например, mail). Claim mappings помогают Dex преобразовать их в стандартные claim’ы OIDC.
Dex может преобразовать нестандартный claim в стандартный, только если id_token, полученный от OIDC-провайдера, не содержит аналогичный стандартный claim.
- строка
Claim, который будет использован для получения предпочтительного имени пользователя.
По умолчанию:
"preferred_username"
- булевый
Если включено, сопоставление claim’ов (
claimMapping
) будет переопределять стандартные claim’ы OIDC.По умолчанию сопоставление claim’ов будет использоваться только в том случае, если стандартные claim’ы OIDC отсутствуют, например, если в id_token нет claim’а
email
, будет использоватьсяclaimMapping.email
.По умолчанию:
false
- булевый
Включает возможность basic-авторизации для Kubernetes API server.
В качестве credentials для basic-авторизации указываются логин и пароль пользователя из приложения, созданного в OIDC (возможно включить при указании только одного провайдера с типом OIDC/Crowd).
Работает только при включенном параметре publishAPI.
Полученные от IdP данные авторизации и групп сохраняются в кэш на 10 секунд.
- булевый
Запрашивать дополнительные данные об успешно подключенном пользователе.
По умолчанию:
false
- массив строк
Список полей для включения в ответ при запросе токена.
По умолчанию:
["openid","profile","email","groups","offline_access"]
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
Описывает конфигурацию подключения стороннего провайдера.
С его помощью можно гибко настроить интеграцию каталога учетных записей с Kubernetes.
- объект
Параметры провайдера Bitbucket Cloud (можно указывать, только если
type: BitbucketCloud
).- массив строк
Список-фильтр команд, допустимых для приема из Bitbucket Cloud.
Токен пользователя будет содержать пересечение множеств команд из Bitbucket Cloud и команд из этого списка. Если если множество окажется пустым, авторизация не будет считаться успешной.
Токен будет содержать команды пользователя в claim
groups
, как и у других провайдеров.
- булевый
Включает возможность basic-авторизации для Kubernetes API server.
В качестве credentials для basic-авторизации указываются логин и пароль пользователя из приложения, созданного в Crowd (возможно включить при указании только одного провайдера с типом OIDC/Crowd).
Работает только при включенном
publishAPI
.Полученные от IdP данные авторизации и групп сохраняются в кэш на 10 секунд.
- массив строк
Список-фильтр групп, допустимых для приема из Crowd.
Токен пользователя будет содержать пересечение множеств групп из Crowd и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все группы из Crowd.
- массив строк
Список команд, допустимых для приема из GitHub.
Токен пользователя будет содержать объединенное множество команд из GitHub и команд из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все команды из GitHub.
- строка
Формат команд, которые будут получены из 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
- массив строк
Список-фильтр групп (пути групп — path, а не имена), допустимых для приема из GitLab.
Токен пользователя будет содержать пересечение множеств групп из GitLab и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все группы из GitLab.
- объект
Настройки фильтра для поиска групп для указанного пользователя.
Подробнее о процессе фильтрации…
- массив объектов
Обязательный параметр
Список сопоставлений атрибута имени юзера с именем группы.
- объект
Обязательный параметр
Настройки фильтров пользователей, которые помогают сначала отфильтровать директории, в которых будет производиться поиск пользователей, а затем найти пользователя по полям (его имени, адресу электронной почты или отображаемому имени).
Подробнее о процессе фильтрации…
- объект
Некоторые провайдеры возвращают нестандартные claim’ы (например, mail). Claim mappings помогают Dex преобразовать их в стандартные claim’ы OIDC.
Dex может преобразовать нестандартный claim в стандартный, только если id_token, полученный от OIDC-провайдера, не содержит аналогичный стандартный claim.
- строка
Claim, который будет использован для получения предпочтительного имени пользователя.
По умолчанию:
"preferred_username"
- булевый
Если включено, сопоставление claim’ов (
claimMapping
) будет переопределять стандартные claim’ы OIDC.По умолчанию сопоставление claim’ов будет использоваться только в том случае, если стандартные claim’ы OIDC отсутствуют, например, если в id_token нет claim’а
email
, будет использоватьсяclaimMapping.email
.По умолчанию:
false
- булевый
Включает возможность basic-авторизации для Kubernetes API server.
В качестве credentials для basic-авторизации указываются логин и пароль пользователя из приложения, созданного в OIDC (возможно включить при указании только одного провайдера с типом OIDC/Crowd).
Работает только при включенном параметре publishAPI.
Полученные от IdP данные авторизации и групп сохраняются в кэш на 10 секунд.
- булевый
Запрашивать дополнительные данные об успешно подключенном пользователе.
По умолчанию:
false
- массив строк
Список полей для включения в ответ при запросе токена.
По умолчанию:
["openid","profile","email","groups","offline_access"]
User
Scope: Cluster
Содержит информацию о статическом пользователе.
- строка
Обязательный параметр
Email пользователя.
Важно! При использовании совместно с модулем user-authz, для выдачи прав конкретному пользователю в качестве имени пользователя в CR ClusterAuthorizationRule необходимо указывать
email
.Пример:
email: user@domain.com
- массив строк
Список групп, в которых у пользователя есть членство.
Т.к. параметр устарел, добавление пользователя в группы теперь осуществляется через ресурс Group.
- строка
Обязательный параметр
Хэш пароля пользователя в явном виде или закодированный в Base64.
Для получения хэша пароля в Base64 можно воспользоваться командой
echo "<PASSWORD>" | htpasswd -BinC 10 "" | cut -d: -f2 | base64 -w0
. Также можно воспользоваться онлайн-сервисом (например, https://bcrypt-generator.com/).Пример:
password: JDJ5JDEwJE9HN1lOOUhnOXU5NmY2cGp4R3NIcS56NWQuOVQxQ0VrdWIud3BRdVJ5Sy5QQU5INlpKNDguCgo=
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
Содержит информацию о статическом пользователе.
- строка
Обязательный параметр
Email пользователя.
Важно! При использовании совместно с модулем user-authz для выдачи прав конкретному пользователю в качестве имени пользователя в custom resource ClusterAuthorizationRule необходимо указывать
email
.Пример:
email: user@domain.com
- массив строк
Список групп, в которых у пользователя есть членство.
Т.к. параметр устарел, добавление пользователя в группы теперь осуществляется через ресурс Group.
- строка
Обязательный параметр
Хэш пароля пользователя в явном виде или закодированный в Base64.
Для получения хэша пароля в Base64 можно воспользоваться командой
echo "<PASSWORD>" | htpasswd -BinC 10 "" | cut -d: -f2 | base64 -w0
. Также можно воспользоваться онлайн-сервисом (например, https://bcrypt-generator.com/).Пример:
password: JDJ5JDEwJE9HN1lOOUhnOXU5NmY2cGp4R3NIcS56NWQuOVQxQ0VrdWIud3BRdVJ5Sy5QQU5INlpKNDguCgo=