DexAuthenticator
Scope: Namespaced
При появлении объекта DexAuthenticator
в namespace будут созданы:
- Deployment с oauth2-proxy и redis
- Service, ведущий на Deployment с oauth2-proxy
- Ingress, который принимает запросы по адресу
https://<applicationDomain>/dex-authenticator
и отправляет их в сторону сервиса - Secret’ы, необходимые для доступа к dex
Важно! При перезапуске pod’а с oauth2-proxy, при помощи refresh token’а будут получены и сохранены в память redis актуальные access token
и id token
.
- specобъект
Обязательный параметр
- spec.allowedGroupsмассив строк
Группы, пользователям которых разрешено проходить аутентификацию.
Дополнительно параметр помогает ограничить список групп до тех, которые несут для приложения полезную информацию.
Например, в случае если у пользователя более 50-ти групп, но приложению grafana мы хотим передать только определенные 5 групп.
По умолчанию:
All groups are allowed.
- spec.applicationDomainстрока
Обязательный параметр
Внешний адрес вашего приложения, с которого пользовательский запрос будет перенаправлен для авторизации в dex.
Не должен содержать HTTP-схему.
Шаблон:
^[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-сертификатом (от домена
applicationDomain
), который используется в Ingress-объекте приложения. Secret должен обязательно находится в том же namespace, что и DexAuthenticator.Пример:
applicationIngressCertificateSecretName: ingress-tls
- spec.applicationIngressClassNameстрока
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-объекте (должно совпадать с названием Ingress-класса для
applicationDomain
).Пример:
applicationIngressClassName: nginx
- spec.keepUsersLoggedInForстрока
Отвечает за то, как долго пользовательская сессия будет считаться активной, если пользователь бездействует (указывается с суффиксом s, m или h).
По умолчанию:
"168h"
Пример:
keepUsersLoggedInFor: 24h
- spec.nodeSelectorобъект
Определяет
nodeSelector
для Pod’овdex-authenticator
.Если ничего не указано или указано
false
— будет использоваться автоматика.Формат: стандартный список
nodeSelector
. Pod’ы инстанса унаследуют это поле как есть. - булевый
Флаг, который отвечает за отправку конечному приложению заголовка
Authorization: Bearer
.Включать только если приложение умеет обрабатывать такой заголовок.
- spec.signOutURLстрока
Передайте URL приложения, запросы с которого будут проксированы на URL выхода у Dex authenticator.’
- spec.tolerationsмассив объектов
Определяет
tolerations
для Pod’овdex-authenticator
.Если ничего не указано или указано
false
— будет использоваться автоматика.Формат: стандартный список toleration. Pod’ы инстанса унаследуют это поле как есть.
- 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), чтобы Pod с указанным toleration удовлетворял соответствующему taint.По умолчанию:
"Equal"
Допустимые значения:
Exists
,Equal
- spec.tolerations.tolerationSecondsцелочисленный
Определяет период времени в секундах, в течении которого планировщик должен ждать, прежде чем вытеснить (evict) Pod с узла, если toleration перестал удовлетворять taint (справедливо только для effect
NoExecute
, иначе игнорируется).Если не установлено, то Pod не будет вытеснен с узла, если toleration перестал удовлетворять taint. Если установлен в ноль (или отрицателен), то Pod будет вытеснен с узла немедленно, если toleration перестал удовлетворять taint.
По умолчанию: не установлено.
- spec.tolerations.valueстрока
Значение, которому должен удовлетворять toleration.
Должно быть пустым, если operator —
Exists
.
- spec.tolerations.effectстрока
- 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.allowedGroupsмассив строк
При появлении объекта DexAuthenticator
в namespace будут созданы:
- Deployment с oauth2-proxy и redis
- Service, ведущий на Deployment с oauth2-proxy
- Ingress, который принимает запросы по адресу
https://<applicationDomain>/dex-authenticator
и отправляет их в сторону сервиса - Secret’ы, необходимые для доступа к dex
Важно! При перезапуске pod’а с oauth2-proxy, при помощи refresh token’а будут получены и сохранены в память redis актуальные access token
и id token
.
- specобъект
Обязательный параметр
- spec.allowedGroupsмассив строк
Группы, пользователям которых разрешено проходить аутентификацию.
Дополнительно параметр помогает ограничить список групп до тех, которые несут для приложения полезную информацию.
Например, в случае если у пользователя более 50-ти групп, но приложению grafana мы хотим передать только определенные 5 групп.
По умолчанию:
All groups are allowed.
- spec.applicationDomainстрока
Обязательный параметр
Внешний адрес вашего приложения, с которого пользовательский запрос будет перенаправлен для авторизации в dex.
Не должен содержать HTTP-схему.
Шаблон:
^[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-сертификатом (от домена
applicationDomain
), который используется в Ingress-объекте приложения. Secret должен обязательно находится в том же namespace, что и DexAuthenticator.Пример:
applicationIngressCertificateSecretName: ingress-tls
- spec.applicationIngressClassNameстрока
Обязательный параметр
Название Ingress-класса, которое будет использоваться в Ingress-объекте (должно совпадать с названием Ingress-класса для
applicationDomain
).Пример:
applicationIngressClassName: nginx
- spec.keepUsersLoggedInForстрока
Отвечает за то, как долго пользовательская сессия будет считаться активной, если пользователь бездействует (указывается с суффиксом s, m или h).
По умолчанию:
"168h"
Пример:
keepUsersLoggedInFor: 24h
- spec.nodeSelectorобъект
Определяет
nodeSelector
для Pod’овdex-authenticator
.Если ничего не указано или указано
false
— будет использоваться автоматика.Формат: стандартный список
nodeSelector
. Pod’ы инстанса унаследуют это поле как есть. - булевый
Флаг, который отвечает за отправку конечному приложению заголовка
Authorization: Bearer
.Включать только если приложение умеет обрабатывать такой заголовок.
- spec.signOutURLстрока
Передайте URL приложения, запросы с которого будут проксированы на URL выхода у Dex authenticator.’
- spec.tolerationsмассив объектов
Определяет
tolerations
для Pod’овdex-authenticator
.Если ничего не указано или указано
false
— будет использоваться автоматика.Формат: стандартный список toleration. Pod’ы инстанса унаследуют это поле как есть.
- 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), чтобы Pod с указанным toleration удовлетворял соответствующему taint.По умолчанию:
"Equal"
Допустимые значения:
Exists
,Equal
- spec.tolerations.tolerationSecondsцелочисленный
Определяет период времени в секундах, в течении которого планировщик должен ждать, прежде чем вытеснить (evict) Pod с узла, если toleration перестал удовлетворять taint (справедливо только для effect
NoExecute
, иначе игнорируется).Если не установлено, то Pod не будет вытеснен с узла, если toleration перестал удовлетворять taint. Если установлен в ноль (или отрицателен), то Pod будет вытеснен с узла немедленно, если toleration перестал удовлетворять taint.
По умолчанию: не установлено.
- spec.tolerations.valueстрока
Значение, которому должен удовлетворять toleration.
Должно быть пустым, если operator —
Exists
.
- spec.tolerations.effectстрока
- 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.allowedGroupsмассив строк
DexClient
Scope: Namespaced
Позволяет приложениям, поддерживающим DC-аутентификацию взаимодействовать с dex.
- specобъект
Обязательный параметр
- spec.allowedGroupsмассив строк
Список групп, участникам которых разрешено подключаться к этому клиенту;
По умолчанию: разрешено всем группам.
- spec.redirectURIsмассив строк
Список адресов, на которые допустимо редиректить dex’у после успешного прохождения аутентификации.
- spec.trustedPeersмассив строк
ID клиентов, которым позволена cross аутентификация.
- spec.allowedGroupsмассив строк
Позволяет приложениям, поддерживающим DC-аутентификацию взаимодействовать с dex.
- specобъект
Обязательный параметр
- spec.allowedGroupsмассив строк
Список групп, участникам которых разрешено подключаться к этому клиенту;
По умолчанию: разрешено всем группам.
- spec.redirectURIsмассив строк
Список адресов, на которые допустимо редиректить dex’у после успешного прохождения аутентификации.
- spec.trustedPeersмассив строк
ID клиентов, которым позволена cross аутентификация.
- spec.allowedGroupsмассив строк
DexProvider
Scope: Cluster
Описывает конфигурацию подключения стороннего провайдера.
С его помощью можно гибко настроить интеграцию каталога учетных записей с 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.bitbucketCloud.clientIDстрока
- 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-авторизации для Kubernetes API server.
В качестве credentials для basic-авторизации указываются логин и пароль пользователя из приложения, созданного в Crowd (возможно включить при указании только одного провайдера с типом Crowd).
Работает только при включенном
publishAPI
.Полученные от Crowd данные авторизации и групп сохраняются в кэш на 10 секунд.
- spec.crowd.groupsмассив строк
Список-фильтр групп, допустимых для приема из Crowd.
Токен пользователя будет содержать пересечение множеств групп из Crowd и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все группы из Crowd.
- spec.crowd.usernamePromptстрока
Строка, которая будет отображаться возле поля для имени пользователя в форме ввода логина и пароля.
По умолчанию:
"Crowd username"
- spec.crowd.baseURLстрока
- spec.displayNameстрока
Обязательный параметр
Имя провайдера, которое будет отображено на странице выбора провайдера для аутентификации.
Если настроен всего один провайдер, страница выбора провайдера показываться не будет.
- 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.orgs.nameстрока
- 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.github.clientIDстрока
- 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.useLoginAsIDбулевый
Позволяет вместо использования внутреннего GitLab ID, использовать имя пользователя.
- spec.gitlab.baseURLстрока
- spec.ldapобъект
Параметры провайдера LDAP.
- spec.ldap.bindDNстрока
Путь до сервис-аккаунта приложения в LDAP.
Пример:
bindDN: uid=serviceaccount,cn=users,dc=example,dc=com
- spec.ldap.bindPWстрока
Пароль для сервис-аккаунта приложения в LDAP.
Пример:
bindPW: password
- 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.groupSearch.userMatchers.groupAttrстрока
- spec.ldap.groupSearch.baseDNстрока
- spec.ldap.hostстрока
Обязательный параметр
Адрес и порт (опционально) LDAP-сервера.
Пример:
host: ldap.example.com:636
- spec.ldap.insecureNoSSLбулевый
Подключаться к каталогу LDAP не по защищенному порту.
По умолчанию:
false
- spec.ldap.insecureSkipVerifyбулевый
Не производить проверку подлинности провайдера при помощи TLS. Не безопасно, не рекомендуется использовать в production-окружениях.
По умолчанию:
false
- spec.ldap.rootCADataстрока
Цепочка CA в формате PEM, используемая для валидации TLS.
Пример:
-----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE-----
- spec.ldap.startTLSбулевый
Использовать STARTTLS для шифрования.
По умолчанию:
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строка
Обязательный параметр
Имя атрибута из которого будет получен идентификатор пользователя.
Пример:
idAttr: uid
- spec.ldap.userSearch.nameAttrстрока
Атрибут отображаемого имени пользователя.
Пример:
nameAttr: name
- spec.ldap.userSearch.usernameстрока
Обязательный параметр
Имя атрибута из которого будет получен username пользователя.
Пример:
username: uid
- spec.ldap.userSearch.baseDNстрока
- spec.ldap.usernamePromptстрока
Строка, которая будет отображаться возле поля для имени пользователя в форме ввода логина и пароля.
По умолчанию:
"LDAP username"
Пример:
usernamePrompt: SSO Username
- spec.ldap.bindDNстрока
- spec.oidcобъект
Параметры провайдера OIDC (можно указывать только если
type: OIDC
).- 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"
- spec.oidc.claimMapping.groupsстрока
Claim, который будет использован для получения групп пользователя.
По умолчанию:
"groups"
- spec.oidc.claimMapping.preferred_usernameстрока
Claim, который будет использован для получения предпочтительного имени пользователя.
По умолчанию:
"preferred_username"
- spec.oidc.claimMapping.emailстрока
- spec.oidc.clientIDстрока
Обязательный параметр
ID приложения, созданного в OIDC провайдере.
- spec.oidc.clientSecretстрока
Обязательный параметр
Пароль приложения, созданного в OIDC провайдере.
- spec.oidc.getUserInfoбулевый
Запрашивать дополнительные данные об успешно подключенном пользователе.
По умолчанию:
false
- spec.oidc.insecureSkipEmailVerifiedбулевый
Игнорировать информацию о статусе подтверждения e-mail пользователя.
Как именно подтверждается e-mail решает сам провайдер. В ответе от провайдера приходит лишь информация — подтвержден e-mail или нет.
По умолчанию:
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.
Пример:
-----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.oidc.basicAuthUnsupportedбулевый
- spec.typeстрока
Обязательный параметр
Тип внешнего провайдера.
Допустимые значения:
Github
,Gitlab
,BitbucketCloud
,Crowd
,OIDC
,LDAP
- spec.bitbucketCloudобъект
Описывает конфигурацию подключения стороннего провайдера.
С его помощью можно гибко настроить интеграцию каталога учетных записей с 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.bitbucketCloud.clientIDстрока
- 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-авторизации для Kubernetes API server.
В качестве credentials для basic-авторизации указываются логин и пароль пользователя из приложения, созданного в Crowd (возможно включить при указании только одного провайдера с типом Crowd).
Работает только при включенном
publishAPI
.Полученные от Crowd данные авторизации и групп сохраняются в кэш на 10 секунд.
- spec.crowd.groupsмассив строк
Список-фильтр групп, допустимых для приема из Crowd.
Токен пользователя будет содержать пересечение множеств групп из Crowd и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.
Если параметр не указан, токен пользователя будет содержать все группы из Crowd.
- spec.crowd.usernamePromptстрока
Строка, которая будет отображаться возле поля для имени пользователя в форме ввода логина и пароля.
По умолчанию:
"Crowd username"
- spec.crowd.baseURLстрока
- spec.displayNameстрока
Обязательный параметр
Имя провайдера, которое будет отображено на странице выбора провайдера для аутентификации.
Если настроен всего один провайдер, страница выбора провайдера показываться не будет.
- 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.orgs.nameстрока
- 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.github.clientIDстрока
- 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.useLoginAsIDбулевый
Позволяет вместо использования внутреннего GitLab ID, использовать имя пользователя.
- spec.gitlab.baseURLстрока
- spec.ldapобъект
Параметры провайдера LDAP.
- spec.ldap.bindDNстрока
Путь до сервис-аккаунта приложения в LDAP.
Пример:
bindDN: uid=serviceaccount,cn=users,dc=example,dc=com
- spec.ldap.bindPWстрока
Пароль для сервис-аккаунта приложения в LDAP.
Пример:
bindPW: password
- 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.groupSearch.userMatchers.groupAttrстрока
- spec.ldap.groupSearch.baseDNстрока
- spec.ldap.hostстрока
Обязательный параметр
Адрес и порт (опционально) LDAP-сервера.
Пример:
host: ldap.example.com:636
- spec.ldap.insecureNoSSLбулевый
Подключаться к каталогу LDAP не по защищенному порту.
По умолчанию:
false
- spec.ldap.insecureSkipVerifyбулевый
Не производить проверку подлинности провайдера при помощи TLS. Не безопасно, не рекомендуется использовать в production-окружениях.
По умолчанию:
false
- spec.ldap.rootCADataстрока
Цепочка CA в формате PEM, используемая для валидации TLS.
Пример:
-----BEGIN CERTIFICATE----- MIIFaDC... -----END CERTIFICATE-----
- spec.ldap.startTLSбулевый
Использовать STARTTLS для шифрования.
По умолчанию:
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строка
Обязательный параметр
Имя атрибута из которого будет получен идентификатор пользователя.
Пример:
idAttr: uid
- spec.ldap.userSearch.nameAttrстрока
Атрибут отображаемого имени пользователя.
Пример:
nameAttr: name
- spec.ldap.userSearch.usernameстрока
Обязательный параметр
Имя атрибута из которого будет получен username пользователя.
Пример:
username: uid
- spec.ldap.userSearch.baseDNстрока
- spec.ldap.usernamePromptстрока
Строка, которая будет отображаться возле поля для имени пользователя в форме ввода логина и пароля.
По умолчанию:
"LDAP username"
Пример:
usernamePrompt: SSO Username
- spec.ldap.bindDNстрока
- spec.oidcобъект
Параметры провайдера OIDC (можно указывать только если
type: OIDC
).- 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"
- spec.oidc.claimMapping.groupsстрока
Claim, который будет использован для получения групп пользователя.
По умолчанию:
"groups"
- spec.oidc.claimMapping.preferred_usernameстрока
Claim, который будет использован для получения предпочтительного имени пользователя.
По умолчанию:
"preferred_username"
- spec.oidc.claimMapping.emailстрока
- spec.oidc.clientIDстрока
Обязательный параметр
ID приложения, созданного в OIDC провайдере.
- spec.oidc.clientSecretстрока
Обязательный параметр
Пароль приложения, созданного в OIDC провайдере.
- spec.oidc.getUserInfoбулевый
Запрашивать дополнительные данные об успешно подключенном пользователе.
По умолчанию:
false
- spec.oidc.insecureSkipEmailVerifiedбулевый
Игнорировать информацию о статусе подтверждения e-mail пользователя.
Как именно подтверждается e-mail решает сам провайдер. В ответе от провайдера приходит лишь информация — подтвержден e-mail или нет.
По умолчанию:
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.
Пример:
-----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.oidc.basicAuthUnsupportedбулевый
- spec.typeстрока
Обязательный параметр
Тип внешнего провайдера.
Допустимые значения:
Github
,Gitlab
,BitbucketCloud
,Crowd
,OIDC
,LDAP
- spec.bitbucketCloudобъект
User
Scope: Cluster
Содержит информацию о статическом пользователе.
- specобъект
Обязательный параметр
- spec.emailстрока
Обязательный параметр
E-mail пользователя.
Важно! При использовании совместно с модулем user-authz, для выдачи прав конкретному пользователю в качестве имени пользователя в CR ClusterAuthorizationRule необходимо указывать
email
.Пример:
email: user@domain.com
- spec.groupsмассив строк
Список групп, в которых у пользователя есть членство.
- spec.passwordстрока
Обязательный параметр
Хэшированный пароль пользователя.
Для получения хэшированного пароля можно воспользоваться командой
echo "$password" | htpasswd -inBC 10 "" | tr -d ':\n' | sed 's/$2y/$2a/'
. Или воспользоваться онлайн-сервисом.Шаблон:
^\$2[ayb]\$.{56}$
Пример:
password: "$2a$10$F9ey7zW.sVliT224RFxpWeMsgzO.D9YRG54a8T36/K2MCiT41nzmC"
- 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'
- spec.emailстрока
Содержит информацию о статическом пользователе.
- specобъект
Обязательный параметр
- spec.emailстрока
Обязательный параметр
E-mail пользователя.
Важно! При использовании совместно с модулем user-authz, для выдачи прав конкретному пользователю в качестве имени пользователя в CR ClusterAuthorizationRule необходимо указывать
email
.Пример:
email: user@domain.com
- spec.groupsмассив строк
Список групп, в которых у пользователя есть членство.
- spec.passwordстрока
Обязательный параметр
Хэшированный пароль пользователя.
Для получения хэшированного пароля можно воспользоваться командой
echo "$password" | htpasswd -inBC 10 "" | tr -d ':\n' | sed 's/$2y/$2a/'
. Или воспользоваться онлайн-сервисом.Шаблон:
^\$2[ayb]\$.{56}$
Пример:
password: "$2a$10$F9ey7zW.sVliT224RFxpWeMsgzO.D9YRG54a8T36/K2MCiT41nzmC"
- 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'
- spec.emailстрока