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 (объект)

    Обязательный параметр.

    • allowedGroups (массив строк)

      Группы, пользователям которых разрешено проходить аутентификацию.

      Дополнительно параметр помогает ограничить список групп до тех, которые несут для приложения полезную информацию.

      Например, в случае если у пользователя более 50-ти групп, но приложению grafana мы хотим передать только определенные 5 групп.

      По умолчанию: All groups are allowed.

    • applicationDomain (строка)

      Внешний адрес вашего приложения, с которого пользовательский запрос будет перенаправлен для авторизации в dex.

      Не должен содержать HTTP-схему.

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$

      Пример: "my-app.domain.com"

      Обязательный параметр.

    • applicationIngressCertificateSecretName (строка)

      Имя secret’а с TLS-сертификатом (от домена applicationDomain), который используется в Ingress-объекте приложения. Secret должен обязательно находится в том же namespace, что и DexAuthenticator.

      Пример: "ingress-tls"

    • applicationIngressClassName (строка)

      Название Ingress-класса, которое будет использоваться в Ingress-объекте (должно совпадать с названием Ingress-класса для applicationDomain).

      Пример: "nginx"

      Обязательный параметр.

    • keepUsersLoggedInFor (строка)

      Отвечает за то, как долго пользовательская сессия будет считаться активной, если пользователь бездействует (указывается с суффиксом s, m или h).

      По умолчанию: "168h"

      Пример: "24h"

    • nodeSelector (объект)

      Определяет nodeSelector для Pod’ов dex-authenticator.

      Если ничего не указано или указано false — будет использоваться автоматика.

      Формат: стандартный список nodeSelector. Pod’ы инстанса унаследуют это поле как есть.

    • sendAuthorizationHeader (булевый)

      Флаг, который отвечает за отправку конечному приложению заголовка Authorization: Bearer.

      Включать только если приложение умеет обрабатывать такой заголовок.

    • tolerations (массив объектов)

      Определяет tolerations для Pod’ов dex-authenticator.

      Если ничего не указано или указано false — будет использоваться автоматика.

      Формат: стандартный список toleration. Pod’ы инстанса унаследуют это поле как есть.

      • effect (строка)

        Определяет какому effect’у taint’а соответствует описываемый toleration. Пустой подразумевает соответствие любому effect.

        Допустимые значения: NoSchedule, PreferNoSchedule, NoExecute

      • key (строка)

        Определяет какому ключу (key) taint’a соответствует описываемый toleration. Пустой подразумевает соответствие любому ключу.

        Если ключ (key) не указан (пуст), то operator должен быть — Exists, что подразумевает соответствие любым value и key.

      • operator (строка)

        Определяет отношение ключа (key) к значению (value) — должен ли ключ быть равен (Equal) значению, или допустимо существование ключа с любым значением.

        Указание Exists равносильно допуску любого значения (для value), чтобы Pod с указанным toleration удовлетворял соответствующему taint.

        По умолчанию: "Equal"

        Допустимые значения: Exists, Equal

      • tolerationSeconds (целочисленный)

        Определяет период времени в секундах, в течении которого планировщик должен ждать, прежде чем вытеснить (evict) Pod с узла, если toleration перестал удовлетворять taint (справедливо только для effect NoExecute, иначе игнорируется).

        Если не установлено, то Pod не будет вытеснен с узла, если toleration перестал удовлетворять taint. Если установлен в ноль (или отрицателен), то Pod будет вытеснен с узла немедленно, если toleration перестал удовлетворять taint.

        По умолчанию: не установлено.

      • value (строка)

        Значение, которому должен удовлетворять toleration.

        Должно быть пустым, если operator — Exists.

    • whitelistSourceRanges (массив строк)

      Список CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу

      Шаблон: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$

      Пример: "192.168.42.0/24"

При появлении объекта 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 (объект)

    Обязательный параметр.

    • allowedGroups (массив строк)

      Группы, пользователям которых разрешено проходить аутентификацию.

      Дополнительно параметр помогает ограничить список групп до тех, которые несут для приложения полезную информацию.

      Например, в случае если у пользователя более 50-ти групп, но приложению grafana мы хотим передать только определенные 5 групп.

      По умолчанию: All groups are allowed.

    • applicationDomain (строка)

      Внешний адрес вашего приложения, с которого пользовательский запрос будет перенаправлен для авторизации в dex.

      Не должен содержать HTTP-схему.

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$

      Пример: "my-app.domain.com"

      Обязательный параметр.

    • applicationIngressCertificateSecretName (строка)

      Имя secret’а с TLS-сертификатом (от домена applicationDomain), который используется в Ingress-объекте приложения. Secret должен обязательно находится в том же namespace, что и DexAuthenticator.

      Пример: "ingress-tls"

    • applicationIngressClassName (строка)

      Название Ingress-класса, которое будет использоваться в Ingress-объекте (должно совпадать с названием Ingress-класса для applicationDomain).

      Пример: "nginx"

      Обязательный параметр.

    • keepUsersLoggedInFor (строка)

      Отвечает за то, как долго пользовательская сессия будет считаться активной, если пользователь бездействует (указывается с суффиксом s, m или h).

      По умолчанию: "168h"

      Пример: "24h"

    • nodeSelector (объект)

      Определяет nodeSelector для Pod’ов dex-authenticator.

      Если ничего не указано или указано false — будет использоваться автоматика.

      Формат: стандартный список nodeSelector. Pod’ы инстанса унаследуют это поле как есть.

    • sendAuthorizationHeader (булевый)

      Флаг, который отвечает за отправку конечному приложению заголовка Authorization: Bearer.

      Включать только если приложение умеет обрабатывать такой заголовок.

    • tolerations (массив объектов)

      Определяет tolerations для Pod’ов dex-authenticator.

      Если ничего не указано или указано false — будет использоваться автоматика.

      Формат: стандартный список toleration. Pod’ы инстанса унаследуют это поле как есть.

      • effect (строка)

        Определяет какому effect’у taint’а соответствует описываемый toleration. Пустой подразумевает соответствие любому effect.

        Допустимые значения: NoSchedule, PreferNoSchedule, NoExecute

      • key (строка)

        Определяет какому ключу (key) taint’a соответствует описываемый toleration. Пустой подразумевает соответствие любому ключу.

        Если ключ (key) не указан (пуст), то operator должен быть — Exists, что подразумевает соответствие любым value и key.

      • operator (строка)

        Определяет отношение ключа (key) к значению (value) — должен ли ключ быть равен (Equal) значению, или допустимо существование ключа с любым значением.

        Указание Exists равносильно допуску любого значения (для value), чтобы Pod с указанным toleration удовлетворял соответствующему taint.

        По умолчанию: "Equal"

        Допустимые значения: Exists, Equal

      • tolerationSeconds (целочисленный)

        Определяет период времени в секундах, в течении которого планировщик должен ждать, прежде чем вытеснить (evict) Pod с узла, если toleration перестал удовлетворять taint (справедливо только для effect NoExecute, иначе игнорируется).

        Если не установлено, то Pod не будет вытеснен с узла, если toleration перестал удовлетворять taint. Если установлен в ноль (или отрицателен), то Pod будет вытеснен с узла немедленно, если toleration перестал удовлетворять taint.

        По умолчанию: не установлено.

      • value (строка)

        Значение, которому должен удовлетворять toleration.

        Должно быть пустым, если operator — Exists.

    • whitelistSourceRanges (массив строк)

      Список CIDR, которым разрешено проходить аутентификацию. Если параметр не указан, аутентификацию разрешено проходить без ограничения по IP-адресу

      Шаблон: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$

      Пример: "192.168.42.0/24"

DexClient

Scope: Namespaced

Позволяет приложениям, поддерживающим DC-аутентификацию взаимодействовать с dex.

  • spec (объект)

    Обязательный параметр.

    • allowedGroups (массив строк)

      Список групп, участникам которых разрешено подключаться к этому клиенту;

      По умолчанию: разрешено всем группам.

    • redirectURIs (массив строк)

      Список адресов, на которые допустимо редиректить dex’у после успешного прохождения аутентификации.

    • trustedPeers (массив строк)

      ID клиентов, которым позволена cross аутентификация.

      Подробнее….

Позволяет приложениям, поддерживающим DC-аутентификацию взаимодействовать с dex.

  • spec (объект)

    Обязательный параметр.

    • allowedGroups (массив строк)

      Список групп, участникам которых разрешено подключаться к этому клиенту;

      По умолчанию: разрешено всем группам.

    • redirectURIs (массив строк)

      Список адресов, на которые допустимо редиректить dex’у после успешного прохождения аутентификации.

    • trustedPeers (массив строк)

      ID клиентов, которым позволена cross аутентификация.

      Подробнее….

DexProvider

Scope: Cluster

Описывает конфигурацию подключения стороннего провайдера.

С его помощью можно гибко настроить интеграцию каталога учетных записей с Kubernetes.

  • spec (объект)

    Обязательный параметр.

    • bitbucketCloud (объект)

      Параметры провайдера Bitbucket Cloud (можно указывать только если type: BitbucketCloud).

      • clientID (строка)

        ID приложения созданного в Bitbucket Cloud (Key).

        Обязательный параметр.

      • clientSecret (строка)

        Secret приложения созданного в Bitbucket Cloud (Secret).

        Обязательный параметр.

      • includeTeamGroups (булевый)

        Включает в список команд все группы команды, в которых состоит пользователь.

        Пример групп пользователя с включенной опцией:

        groups=["my_team", "my_team/administrators", "my_team/members"]
        

        По умолчанию: false

      • teams (массив строк)

        Список команд, допустимых для приема из Bitbucket Cloud’а.

        Токен пользователя будет содержать объединенное множество команд из Bitbucket Cloud и команд из этого списка. Если если множество окажется пустым, авторизация не будет считаться не успешной

        Токен будет содержать команды пользователя в claim groups, как и у других провайдеров.

    • crowd (объект)

      Параметры провайдера Crowd (можно указывать только если type: Crowd).

      • baseURL (строка)

        Адрес Crowd.

        Пример: "https://crowd.example.com/crowd"

        Обязательный параметр.

      • clientID (строка)

        ID приложения созданного в Crowd (Application Name).

        Обязательный параметр.

      • clientSecret (строка)

        Пароль приложения созданного в Crowd (Password).

        Обязательный параметр.

      • enableBasicAuth (булевый)

        Включает возможность basic-авторизации для Kubernetes API server.

        В качестве credentials для basic-авторизации указываются логин и пароль пользователя из приложения, созданного в Crowd (возможно включить при указании только одного провайдера с типом Crowd).

        Работает только при включенном publishAPI.

        Полученные от Crowd данные авторизации и групп сохраняются в кэш на 10 секунд.

      • groups (массив строк)

        Список групп, допустимых для приема из Crowd.

        Токен пользователя будет содержать объединенное множество групп из Crowd и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.

        Если параметр не указан, токен пользователя будет содержать все группы из Crowd.

      • usernamePrompt (строка)

        Строка, которая будет отображаться возле поля для имени пользователя в форме ввода логина и пароля.

        По умолчанию: "Crowd username"

    • displayName (строка)

      Имя провайдера, которое будет отображено на странице выбора провайдера для аутентификации.

      Если настроен всего один провайдер, страница выбора провайдера показываться не будет.

      Обязательный параметр.

    • github (объект)

      Параметры провайдера GitHub (можно указывать только если type: Github).

      • clientID (строка)

        ID организации на GitHub.

        Обязательный параметр.

      • clientSecret (строка)

        Secret организации на GitHub.

        Обязательный параметр.

      • orgs (массив объектов)

        Массив названий организаций в GitHub.

        • name (строка)

          Название организации.

          Обязательный параметр.

        • teams (массив строк)

          Список команд, допустимых для приема из GitHub.

          Токен пользователя будет содержать объединенное множество команд из GitHub и команд из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.

          Если параметр не указан, токен пользователя будет содержать все команды из 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

      • useLoginAsID (булевый)

        Позволяет вместо использования внутреннего GitHub ID, использовать имя пользователя.

    • gitlab (объект)

      Параметры провайдера GitLab (можно указывать только если type: Gitlab).

      • baseURL (строка)

        Адрес GitLab.

        Пример: "https://gitlab.example.com"

      • clientID (строка)

        ID приложения созданного в GitLab (Application ID).

        Обязательный параметр.

      • clientSecret (строка)

        Secret приложения созданного в GitLab (Secret).

        Обязательный параметр.

      • groups (массив строк)

        Список групп (пути групп — path, а не имена), допустимых для приема из GitLab.

        Токен пользователя будет содержать объединенное множество групп из GitLab и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.

        Если параметр не указан, токен пользователя будет содержать все группы из GitLab’а.

      • useLoginAsID (булевый)

        Позволяет вместо использования внутреннего GitLab ID, использовать имя пользователя.

    • ldap (объект)

      Параметры провайдера LDAP.

      • bindDN (строка)

        Путь до сервис-аккаунта приложения в LDAP.

        Пример: "uid=serviceaccount,cn=users,dc=example,dc=com"

      • bindPW (строка)

        Пароль для сервис-аккаунта приложения в LDAP.

        Пример: "password"

      • groupSearch (объект)

        Настройки фильтра для поиска групп для указанного пользователя.

        Подробнее о процессе фильтрации…

        • baseDN (строка)

          Откуда будет начат поиск групп

          Пример: "cn=users,dc=example,dc=com"

          Обязательный параметр.

        • filter (строка)

          Фильтр для директории с группами.

          Пример: "(objectClass=person)"

        • nameAttr (строка)

          Имя атрибута, в котором хранится уникальное имя группы.

          Пример: "name"

          Обязательный параметр.

        • userMatchers (массив объектов)

          Список сопоставлений атрибута имени юзера с именем группы.

          Обязательный параметр.

          • groupAttr (строка)

            Имя атрибута, в котором хранятся имена пользователей, состоящих в группе.

            Пример: "member"

            Обязательный параметр.

          • userAttr (строка)

            Имя атрибута, в котором хранится имя пользователя.

            Пример: "uid"

            Обязательный параметр.

      • host (строка)

        Адрес и порт (опционально) LDAP-сервера.

        Пример: "ldap.example.com:636"

        Обязательный параметр.

      • insecureNoSSL (булевый)

        Подключаться к каталогу LDAP не по защищенному порту.

        По умолчанию: false

      • insecureSkipVerify (булевый)

        Не производить проверку подлинности ответа от провайдера с помощью rootCAData.

        По умолчанию: false

      • rootCAData (строка)

        CA, используемый для валидации TLS.

        Пример:

        -----BEGIN CERTIFICATE-----
        MIIFaDC...
        -----END CERTIFICATE-----
        
      • startTLS (булевый)

        Использовать STARTTLS для шифрования.

        По умолчанию: false

      • userSearch (объект)

        Настройки фильтров пользователей, которые помогают сначала отфильтровать директории, в которых будет производиться поиск пользователей, а затем найти пользователя по полям (его имени, адресу электронной почты или отображаемому имени).

        Подробнее о процессе фильтрации…

        Обязательный параметр.

        • baseDN (строка)

          Откуда будет начат поиск пользователей.

          Пример: "cn=users,dc=example,dc=com"

          Обязательный параметр.

        • emailAttr (строка)

          Имя атрибута из которого будет получен email пользователя.

          Пример: "mail"

          Обязательный параметр.

        • filter (строка)

          Позволяет добавить фильтр для директории с пользователями.

          Пример: "(objectClass=person)"

        • idAttr (строка)

          Имя атрибута из которого будет получен идентификатор пользователя.

          Пример: "uid"

          Обязательный параметр.

        • nameAttr (строка)

          Атрибут отображаемого имени пользователя.

          Пример: "name"

        • username (строка)

          Имя атрибута из которого будет получен username пользователя.

          Пример: "uid"

          Обязательный параметр.

      • usernamePrompt (строка)

        Строка, которая будет отображаться возле поля для имени пользователя в форме ввода логина и пароля.

        По умолчанию: "LDAP username"

        Пример: "SSO Username"

    • oidc (объект)

      Параметры провайдера OIDC (можно указывать только если type: OIDC).

      • basicAuthUnsupported (булевый)

        Использовать POST-запросы для общения с провайдером, вместо добавления токена в Basic Authorization header.

        В большинстве случаев dex сам определяет, какой запрос ему нужно сделать, но иногда включение этого параметра может помочь.

        По умолчанию: false

      • clientID (строка)

        ID приложения, созданного в OIDC провайдере.

        Обязательный параметр.

      • clientSecret (строка)

        Пароль приложения, созданного в OIDC провайдере.

        Обязательный параметр.

      • getUserInfo (булевый)

        Запрашивать дополнительные данные об успешно подключенном пользователе.

        Подробнее…

        По умолчанию: false

      • insecureSkipEmailVerified (булевый)

        Игнорировать информацию о статусе подтверждения e-mail пользователя.

        Как именно подтверждается e-mail решает сам провайдер. В ответе от провайдера приходит лишь информация — подтвержден e-mail или нет.

        По умолчанию: false

      • issuer (строка)

        Адрес OIDC-провайдера.

        Пример: "https://accounts.google.com"

        Обязательный параметр.

      • promptType (строка)

        Определяет — должен ли Issuer запрашивать подтверждение и давать подсказки при аутентификации.

        По умолчанию будет запрошено подтверждение при первой аутентификации. Допустимые значения могут изменяться в зависимости от Issuer.

        По умолчанию: "consent"

      • scopes (массив строк)

        Список полей для включения в ответ при запросе токена.

        По умолчанию: ["openid","profile","email","groups","offline_access"]

      • userIDKey (строка)

        Claim, который будет использован для получения ID пользователя.

        По умолчанию: "sub"

      • userNameKey (строка)

        Claim, который будет использован для получения имени пользователя.

        По умолчанию: "name"

    • type (строка)

      Тип внешнего провайдера.

      Допустимые значения: Github, Gitlab, BitbucketCloud, Crowd, OIDC, LDAP

      Обязательный параметр.

Описывает конфигурацию подключения стороннего провайдера.

С его помощью можно гибко настроить интеграцию каталога учетных записей с Kubernetes.

  • spec (объект)

    Обязательный параметр.

    • bitbucketCloud (объект)

      Параметры провайдера Bitbucket Cloud (можно указывать только если type: BitbucketCloud).

      • clientID (строка)

        ID приложения созданного в Bitbucket Cloud (Key).

        Обязательный параметр.

      • clientSecret (строка)

        Secret приложения созданного в Bitbucket Cloud (Secret).

        Обязательный параметр.

      • includeTeamGroups (булевый)

        Включает в список команд все группы команды, в которых состоит пользователь.

        Пример групп пользователя с включенной опцией:

        groups=["my_team", "my_team/administrators", "my_team/members"]
        

        По умолчанию: false

      • teams (массив строк)

        Список команд, допустимых для приема из Bitbucket Cloud’а.

        Токен пользователя будет содержать объединенное множество команд из Bitbucket Cloud и команд из этого списка. Если если множество окажется пустым, авторизация не будет считаться не успешной

        Токен будет содержать команды пользователя в claim groups, как и у других провайдеров.

    • crowd (объект)

      Параметры провайдера Crowd (можно указывать только если type: Crowd).

      • baseURL (строка)

        Адрес Crowd.

        Пример: "https://crowd.example.com/crowd"

        Обязательный параметр.

      • clientID (строка)

        ID приложения созданного в Crowd (Application Name).

        Обязательный параметр.

      • clientSecret (строка)

        Пароль приложения созданного в Crowd (Password).

        Обязательный параметр.

      • enableBasicAuth (булевый)

        Включает возможность basic-авторизации для Kubernetes API server.

        В качестве credentials для basic-авторизации указываются логин и пароль пользователя из приложения, созданного в Crowd (возможно включить при указании только одного провайдера с типом Crowd).

        Работает только при включенном publishAPI.

        Полученные от Crowd данные авторизации и групп сохраняются в кэш на 10 секунд.

      • groups (массив строк)

        Список групп, допустимых для приема из Crowd.

        Токен пользователя будет содержать объединенное множество групп из Crowd и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.

        Если параметр не указан, токен пользователя будет содержать все группы из Crowd.

      • usernamePrompt (строка)

        Строка, которая будет отображаться возле поля для имени пользователя в форме ввода логина и пароля.

        По умолчанию: "Crowd username"

    • displayName (строка)

      Имя провайдера, которое будет отображено на странице выбора провайдера для аутентификации.

      Если настроен всего один провайдер, страница выбора провайдера показываться не будет.

      Обязательный параметр.

    • github (объект)

      Параметры провайдера GitHub (можно указывать только если type: Github).

      • clientID (строка)

        ID организации на GitHub.

        Обязательный параметр.

      • clientSecret (строка)

        Secret организации на GitHub.

        Обязательный параметр.

      • orgs (массив объектов)

        Массив названий организаций в GitHub.

        • name (строка)

          Название организации.

          Обязательный параметр.

        • teams (массив строк)

          Список команд, допустимых для приема из GitHub.

          Токен пользователя будет содержать объединенное множество команд из GitHub и команд из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.

          Если параметр не указан, токен пользователя будет содержать все команды из 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

      • useLoginAsID (булевый)

        Позволяет вместо использования внутреннего GitHub ID, использовать имя пользователя.

    • gitlab (объект)

      Параметры провайдера GitLab (можно указывать только если type: Gitlab).

      • baseURL (строка)

        Адрес GitLab.

        Пример: "https://gitlab.example.com"

      • clientID (строка)

        ID приложения созданного в GitLab (Application ID).

        Обязательный параметр.

      • clientSecret (строка)

        Secret приложения созданного в GitLab (Secret).

        Обязательный параметр.

      • groups (массив строк)

        Список групп (пути групп — path, а не имена), допустимых для приема из GitLab.

        Токен пользователя будет содержать объединенное множество групп из GitLab и групп из этого списка. Если множество окажется пустым, авторизация не будет считаться успешной.

        Если параметр не указан, токен пользователя будет содержать все группы из GitLab’а.

      • useLoginAsID (булевый)

        Позволяет вместо использования внутреннего GitLab ID, использовать имя пользователя.

    • ldap (объект)

      Параметры провайдера LDAP.

      • bindDN (строка)

        Путь до сервис-аккаунта приложения в LDAP.

        Пример: "uid=serviceaccount,cn=users,dc=example,dc=com"

      • bindPW (строка)

        Пароль для сервис-аккаунта приложения в LDAP.

        Пример: "password"

      • groupSearch (объект)

        Настройки фильтра для поиска групп для указанного пользователя.

        Подробнее о процессе фильтрации…

        • baseDN (строка)

          Откуда будет начат поиск групп

          Пример: "cn=users,dc=example,dc=com"

          Обязательный параметр.

        • filter (строка)

          Фильтр для директории с группами.

          Пример: "(objectClass=person)"

        • nameAttr (строка)

          Имя атрибута, в котором хранится уникальное имя группы.

          Пример: "name"

          Обязательный параметр.

        • userMatchers (массив объектов)

          Список сопоставлений атрибута имени юзера с именем группы.

          Обязательный параметр.

          • groupAttr (строка)

            Имя атрибута, в котором хранятся имена пользователей, состоящих в группе.

            Пример: "member"

            Обязательный параметр.

          • userAttr (строка)

            Имя атрибута, в котором хранится имя пользователя.

            Пример: "uid"

            Обязательный параметр.

      • host (строка)

        Адрес и порт (опционально) LDAP-сервера.

        Пример: "ldap.example.com:636"

        Обязательный параметр.

      • insecureNoSSL (булевый)

        Подключаться к каталогу LDAP не по защищенному порту.

        По умолчанию: false

      • insecureSkipVerify (булевый)

        Не производить проверку подлинности ответа от провайдера с помощью rootCAData.

        По умолчанию: false

      • rootCAData (строка)

        CA, используемый для валидации TLS.

        Пример:

        -----BEGIN CERTIFICATE-----
        MIIFaDC...
        -----END CERTIFICATE-----
        
      • startTLS (булевый)

        Использовать STARTTLS для шифрования.

        По умолчанию: false

      • userSearch (объект)

        Настройки фильтров пользователей, которые помогают сначала отфильтровать директории, в которых будет производиться поиск пользователей, а затем найти пользователя по полям (его имени, адресу электронной почты или отображаемому имени).

        Подробнее о процессе фильтрации…

        Обязательный параметр.

        • baseDN (строка)

          Откуда будет начат поиск пользователей.

          Пример: "cn=users,dc=example,dc=com"

          Обязательный параметр.

        • emailAttr (строка)

          Имя атрибута из которого будет получен email пользователя.

          Пример: "mail"

          Обязательный параметр.

        • filter (строка)

          Позволяет добавить фильтр для директории с пользователями.

          Пример: "(objectClass=person)"

        • idAttr (строка)

          Имя атрибута из которого будет получен идентификатор пользователя.

          Пример: "uid"

          Обязательный параметр.

        • nameAttr (строка)

          Атрибут отображаемого имени пользователя.

          Пример: "name"

        • username (строка)

          Имя атрибута из которого будет получен username пользователя.

          Пример: "uid"

          Обязательный параметр.

      • usernamePrompt (строка)

        Строка, которая будет отображаться возле поля для имени пользователя в форме ввода логина и пароля.

        По умолчанию: "LDAP username"

        Пример: "SSO Username"

    • oidc (объект)

      Параметры провайдера OIDC (можно указывать только если type: OIDC).

      • basicAuthUnsupported (булевый)

        Использовать POST-запросы для общения с провайдером, вместо добавления токена в Basic Authorization header.

        В большинстве случаев dex сам определяет, какой запрос ему нужно сделать, но иногда включение этого параметра может помочь.

        По умолчанию: false

      • clientID (строка)

        ID приложения, созданного в OIDC провайдере.

        Обязательный параметр.

      • clientSecret (строка)

        Пароль приложения, созданного в OIDC провайдере.

        Обязательный параметр.

      • getUserInfo (булевый)

        Запрашивать дополнительные данные об успешно подключенном пользователе.

        Подробнее…

        По умолчанию: false

      • insecureSkipEmailVerified (булевый)

        Игнорировать информацию о статусе подтверждения e-mail пользователя.

        Как именно подтверждается e-mail решает сам провайдер. В ответе от провайдера приходит лишь информация — подтвержден e-mail или нет.

        По умолчанию: false

      • issuer (строка)

        Адрес OIDC-провайдера.

        Пример: "https://accounts.google.com"

        Обязательный параметр.

      • promptType (строка)

        Определяет — должен ли Issuer запрашивать подтверждение и давать подсказки при аутентификации.

        По умолчанию будет запрошено подтверждение при первой аутентификации. Допустимые значения могут изменяться в зависимости от Issuer.

        По умолчанию: "consent"

      • scopes (массив строк)

        Список полей для включения в ответ при запросе токена.

        По умолчанию: ["openid","profile","email","groups","offline_access"]

      • userIDKey (строка)

        Claim, который будет использован для получения ID пользователя.

        По умолчанию: "sub"

      • userNameKey (строка)

        Claim, который будет использован для получения имени пользователя.

        По умолчанию: "name"

    • type (строка)

      Тип внешнего провайдера.

      Допустимые значения: Github, Gitlab, BitbucketCloud, Crowd, OIDC, LDAP

      Обязательный параметр.

User

Scope: Cluster

Содержит информацию о статическом пользователе.

  • spec (объект)

    Обязательный параметр.

    • email (строка)

      E-mail пользователя.

      Важно! При использовании совместно с модулем user-authz, для выдачи прав конкретному пользователю в качестве имени пользователя в CR ClusterAuthorizationRule необходимо указывать email.

      Пример: "user@domain.com"

      Обязательный параметр.

    • groups (массив строк)

      Список групп, в которых у пользователя есть членство.

    • password (строка)

      Хэшированный пароль пользователя.

      Для получения хэшированного пароля можно воспользоваться командой echo "$password" | htpasswd -inBC 10 "" | tr -d ':\n' | sed 's/$2y/$2a/'. Или воспользоваться онлайн-сервисом.

      Шаблон: ^\$2[ayb]\$.{56}$

      Пример: "$2a$10$F9ey7zW.sVliT224RFxpWeMsgzO.D9YRG54a8T36/K2MCiT41nzmC"

      Обязательный параметр.

    • ttl (строка)

      Время жизни учетной записи пользователя (TTL).

      Задается в виде строки с указанием time unit: 30m, 1h, 24h. Либо в минутах, либо в часах.

      Указать TTL можно только 1 раз. При повторном изменении TTL, дата expireAt не обновляется.

      Шаблон: ^\d+(?:m|h)$

      Пример: "24h"

    • userID (строка)

      Уникальное имя (ID) пользователя.

      Пример: "08a8684b-db88-4b73-90a9-3cd1661f5466"

Содержит информацию о статическом пользователе.

  • spec (объект)

    Обязательный параметр.

    • email (строка)

      E-mail пользователя.

      Важно! При использовании совместно с модулем user-authz, для выдачи прав конкретному пользователю в качестве имени пользователя в CR ClusterAuthorizationRule необходимо указывать email.

      Пример: "user@domain.com"

      Обязательный параметр.

    • groups (массив строк)

      Список групп, в которых у пользователя есть членство.

    • password (строка)

      Хэшированный пароль пользователя.

      Для получения хэшированного пароля можно воспользоваться командой echo "$password" | htpasswd -inBC 10 "" | tr -d ':\n' | sed 's/$2y/$2a/'. Или воспользоваться онлайн-сервисом.

      Шаблон: ^\$2[ayb]\$.{56}$

      Пример: "$2a$10$F9ey7zW.sVliT224RFxpWeMsgzO.D9YRG54a8T36/K2MCiT41nzmC"

      Обязательный параметр.

    • ttl (строка)

      Время жизни учетной записи пользователя (TTL).

      Задается в виде строки с указанием time unit: 30m, 1h, 24h. Либо в минутах, либо в часах.

      Указать TTL можно только 1 раз. При повторном изменении TTL, дата expireAt не обновляется.

      Шаблон: ^\d+(?:m|h)$

      Пример: "24h"

    • userID (строка)

      Уникальное имя (ID) пользователя.

      Пример: "08a8684b-db88-4b73-90a9-3cd1661f5466"