Пример конфигурации модуля | 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: 1 enabled: true settings: kubeconfigGenerator:
| yaml apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: user-authn spec: version: 1 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-формате для кастомного ресурса | 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) |
В примере представлены настройки провайдера для интеграции с Okta. | The example shows the provider’s settings for integration with 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 |
Аутентификация через OIDC-провайдера требует регистрации клиента (или создания приложения). Сделайте это по документации вашего провайдера (например, Okta, Keycloak, Gluu). | 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 |
LDAP | LDAP |
В примере представлены настройки провайдера для интеграции с Active Directory. | The example shows the provider’s settings for integration with 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:
|
Для настройки аутентификации заведите в LDAP read-only-пользователя (service account). | To configure authentication, create a read-only user (service account) in LDAP. |
Полученные путь до пользователя и пароль укажите в параметрах
| Specify the generated user path and password in the
|
Настройка OAuth2-клиента в Dex для подключения приложения | Configuring the OAuth2 client in Dex for connecting an application |
Этот вариант настройки подходит приложениям, которые имеют возможность использовать oauth2-аутентификацию самостоятельно, без помощи | This configuration is suitable for applications that can independently perform oauth2 authentication without using an oauth2 proxy.
The |
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:
|
После создания такого ресурса в Dex будет зарегистрирован клиент с идентификатором (clientID) | After the |
Пароль доступа к клиенту (clientSecret) сохранится в секрете: | The client access password (clientSecret) will be stored in the secret object: |
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 -inBC 10 “” | tr -d ‘:\n’ | sed ‘s/$2y/$2a/’ | shell echo “$password” | htpasswd -inBC 10 “” | tr -d ‘:\n’ | sed ‘s/$2y/$2a/’ |
Также можно воспользоваться онлайн-сервисом. | 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 groups:
|
По умолчанию пользователь получит роль | By default, the user is assigned the role User. |
Пример добавления статического пользователя в группу | 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 |