Пример конфигурации модуля | An example of the module configuration |
В примере представлена конфигурация модуля | The example shows the configuration of the ‘user-authn` module in the Deckhouse Kubernetes Platform. |
yaml apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: user-authn spec: version: 2 enabled: true settings: kubeconfigGenerator:
| yaml apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: user-authn spec: version: 2 enabled: true settings: kubeconfigGenerator:
|
Примеры настройки провайдера | Configuring a provider |
GitHub | GitHub |
В примере представлены настройки провайдера для интеграции с GitHub. | The example shows the provider’s settings for integration with GitHub. |
yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: github spec: type: Github displayName: My Company GitHub github: clientID: plainstring clientSecret: plainstring | yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: github spec: type: Github displayName: My Company Github github: clientID: plainstring clientSecret: plainstring |
В организации GitHub необходимо создать новое приложение. | In your GitHub organization, create a new application: |
Для этого выполните следующие шаги:
| To do this, go to |
Полученные | Paste the generated |
Если организация GitHub находится под управлением клиента, перейдите в | If the GitHub organization is managed by the client, go to |
GitLab | GitLab |
В примере представлены настройки провайдера для интеграции с GitLab. | The example shows the provider’s settings for integration with GitLab. |
yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: gitlab spec: type: Gitlab displayName: Dedicated Gitlab gitlab: baseURL: https://gitlab.example.com clientID: plainstring clientSecret: plainstring groups:
| yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: gitlab spec: type: Gitlab displayName: Dedicated Gitlab gitlab: baseURL: https://gitlab.example.com clientID: plainstring clientSecret: plainstring groups:
|
В GitLab проекта необходимо создать новое приложение. | Create a new application in the GitLab project. |
Для этого выполните следующие шаги:
| To do this, you need to:
|
Полученные | Paste the generated |
Atlassian Crowd | Atlassian Crowd |
В примере представлены настройки провайдера для интеграции с Atlassian Crowd. | The example shows the provider’s settings for integration with Atlassian Crowd. |
yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: crowd spec: type: Crowd displayName: Crowd crowd: baseURL: https://crowd.example.com/crowd clientID: plainstring clientSecret: plainstring enableBasicAuth: true groups:
| yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: crowd spec: type: Crowd displayName: Crowd crowd: baseURL: https://crowd.example.com/crowd clientID: plainstring clientSecret: plainstring enableBasicAuth: true groups:
|
В соответствующем проекте Atlassian Crowd необходимо создать новое | Create a new |
Для этого выполните следующие шаги:
| To do this, go to |
Полученные | Paste the generated |
Группы CROWD укажите в lowercase-формате для Custom Resource | CROWD groups are specified in the lowercase format for the custom resource |
Bitbucket Cloud | Bitbucket Cloud |
В примере представлены настройки провайдера для интеграции с Bitbucket. | The example shows the provider’s settings for integration with Bitbucket Cloud. |
yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: gitlab spec: type: BitbucketCloud displayName: Bitbucket bitbucketCloud: clientID: plainstring clientSecret: plainstring includeTeamGroups: true teams:
| yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: bitbucket spec: type: BitbucketCloud displayName: Bitbucket bitbucketCloud: clientID: plainstring clientSecret: plainstring includeTeamGroups: true teams:
|
Для настройки аутентификации необходимо в Bitbucket в меню команды создать нового OAuth consumer. | Create a new OAuth consumer in the Bitbucket’s team menu. |
Для этого выполните следующие шаги:
| To do this, go to |
Полученные | Paste the generated |
OIDC (OpenID Connect) | OIDC (OpenID Connect) |
Аутентификация через OIDC-провайдера требует регистрации клиента (или создания приложения). Сделайте это по документации вашего провайдера (например, Okta, Keycloak, Gluu или Blitz). | Authentication through the OIDC provider requires registering a client (or “creating an application”). Please refer to the provider’s documentation on how to do it (e.g., Okta, Keycloak, Gluu). |
Полученные в ходе выполнения инструкции | Paste the generated |
Ниже можно ознакомиться с некоторыми примерами. | Okta |
Okta | The example shows the provider’s settings for integration with Okta. |
В примере представлены настройки провайдера для интеграции с Okta: | yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: okta spec: type: OIDC displayName: My Company Okta oidc: issuer: https://my-company.okta.com clientID: plainstring clientSecret: plainstring insecureSkipEmailVerified: true getUserInfo: true |
yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: okta spec: type: OIDC displayName: My Company Okta oidc: issuer: https://my-company.okta.com clientID: plainstring clientSecret: plainstring insecureSkipEmailVerified: true getUserInfo: true | Blitz Identity Provider |
Blitz Identity Provider | Note that you must specify a URL to redirect the user after authorization when registering the application with the Blitz Identity Provider. When using |
На стороне провайдера Blitz Identity Provider при регистрации приложения необходимо указать URL для перенаправления пользователя после авторизации. При использовании | The example below shows the provider settings for integration with Blitz Identity Provider. |
В примере представлены настройки провайдера для интеграции с Blitz Identity Provider: | yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: blitz spec: displayName: Blitz Identity Provider oidc: basicAuthUnsupported: false claimMapping: email: email groups: your_claim # Claim for getting user groups, configured on the Blitz clientID: clientID clientSecret: clientSecret getUserInfo: true insecureSkipEmailVerified: true # Set to true if there is no need to verify the user’s email insecureSkipVerify: false issuer: https://yourdomain.idblitz.ru/blitz promptType: consent scopes:
|
yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: blitz spec: displayName: Blitz Identity Provider oidc: basicAuthUnsupported: false claimMapping: email: email groups: your_claim # Claim для получения групп пользователя, группы пользователя настраиваются на стороне провайдера Blitz Identity Provider clientID: clientID clientSecret: clientSecret getUserInfo: true insecureSkipEmailVerified: true # Установить true, если нет необходимости в проверке email пользователя insecureSkipVerify: false issuer: https://yourdomain.idblitz.ru/blitz promptType: consent scopes:
| For the application logout to work correctly (the token being revoked so that re-authorization is required), set |
Чтобы корректно отрабатывал выход из приложений (происходил отзыв токена и требовалась повторная авторизация), нужно установить | To ensure granular user access to applications, you have to: |
Для обеспечения гранулированного доступа пользователя к приложениям необходимо: |
|
| Below is an example for prometheus: |
Пример для Prometheus: | yaml apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: prometheus spec: version: 2 settings: auth: allowedUserGroups:
|
yaml apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: prometheus spec: version: 2 settings: auth: allowedUserGroups:
| LDAP |
LDAP | The example shows the provider’s settings for integration with Active Directory. |
В примере представлены настройки провайдера для интеграции с Active Directory: | yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: active-directory spec: type: LDAP displayName: Active Directory ldap: host: ad.example.com:636 insecureSkipVerify: true |
yaml apiVersion: deckhouse.io/v1 kind: DexProvider metadata: name: active-directory spec: type: LDAP displayName: Active Directory ldap: host: ad.example.com:636 insecureSkipVerify: true | bindDN: cn=Administrator,cn=users,dc=example,dc=com bindPW: admin0! |
bindDN: cn=Administrator,cn=users,dc=example,dc=com bindPW: admin0! | usernamePrompt: Email Address |
usernamePrompt: Email Address | userSearch: baseDN: cn=Users,dc=example,dc=com filter: “(objectClass=person)” username: userPrincipalName idAttr: DN emailAttr: userPrincipalName nameAttr: cn |
userSearch: baseDN: cn=Users,dc=example,dc=com filter: “(objectClass=person)” username: userPrincipalName idAttr: DN emailAttr: userPrincipalName nameAttr: cn | groupSearch: baseDN: cn=Users,dc=example,dc=com filter: “(objectClass=group)” userMatchers:
|
groupSearch: baseDN: cn=Users,dc=example,dc=com filter: “(objectClass=group)” userMatchers:
| To configure authentication, create a read-only user (service account) in LDAP. |
Для настройки аутентификации заведите в LDAP read-only-пользователя (service account). | Specify the generated user path and password in the
|
Полученные путь до пользователя и пароль укажите в параметрах
| Configuring the OAuth2 client in Dex for connecting an application |
Настройка OAuth2-клиента в Dex для подключения приложения | This configuration is suitable for applications that can independently perform oauth2 authentication without using an oauth2 proxy.
The |
Этот вариант настройки подходит приложениям, которые имеют возможность использовать OAuth2-аутентификацию самостоятельно, без помощи | |
yaml apiVersion: deckhouse.io/v1 kind: DexClient metadata: name: myname namespace: mynamespace spec: redirectURIs:
| |
yaml apiVersion: deckhouse.io/v1 kind: DexClient metadata: name: myname namespace: mynamespace spec: redirectURIs:
| |
After the | |
После создания такого ресурса в Dex будет зарегистрирован клиент с идентификатором (clientID) | The client access password (clientSecret) will be stored in the secret object: |
Пароль доступа к клиенту (clientSecret) сохранится в секрете: | yaml apiVersion: v1 kind: Secret metadata: name: dex-client-myname namespace: mynamespace type: Opaque data: clientSecret: c2VjcmV0 |
yaml apiVersion: v1 kind: Secret metadata: name: dex-client-myname namespace: mynamespace type: Opaque data: clientSecret: c2VjcmV0 | |
An example of creating a static user | |
Пример создания статического пользователя | Create a password and enter its hash in the |
Придумайте пароль и укажите его хэш-сумму в поле | Use the command below to calculate the password hash: |
Для вычисления хэш-суммы пароля воспользуйтесь командой: | shell echo “$password” | htpasswd -BinC 10 “” | cut -d: -f2 | base64 -w0 |
shell echo “$password” | htpasswd -BinC 10 “” | cut -d: -f2 | base64 -w0 | Alternatively, you can use the online service to calculate the password hash. |
Также можно воспользоваться онлайн-сервисом. | |
yaml apiVersion: deckhouse.io/v1 kind: User metadata: name: admin spec: email: admin@yourcompany.com password: $2a$10$etblbZ9yfZaKgbvysf1qguW3WULdMnxwWFrkoKpRH1yeWa5etjjAa ttl: 24h | |
yaml apiVersion: deckhouse.io/v1 kind: User metadata: name: admin spec: email: admin@yourcompany.com password: $2a$10$etblbZ9yfZaKgbvysf1qguW3WULdMnxwWFrkoKpRH1yeWa5etjjAa ttl: 24h | |
Example of adding a static user to a group | |
Пример добавления статического пользователя в группу | |
yaml apiVersion: deckhouse.io/v1alpha1 kind: Group metadata: name: admins spec: name: admins members:
| |
yaml apiVersion: deckhouse.io/v1alpha1 kind: Group metadata: name: admins spec: name: admins members:
| |
How to set permissions for a user or group | |
Выдача прав пользователю или группе | Parameters in the custom resource |
Для настройки используются параметры в Custom Resource |