Skip to content

Keycloak: интеграция с Bank-Vaults

Для упрощения доступа к внутренним ресурсам, типа Grafana, ArgoCD было решено попробовать интегрировать Keycloak с Vault. В нашем случае – это Bank-Vaults Operator который используется в Kubernetes.

В данный момент у нас не стояла задача распределить по ролям, настроить для каждой свои политики – основной роли default с возможностью создавать/удалять/смотреть/апдейтить секреты вполне хватает. Поэтому ниже будет приведен пример именно такой настройки – считай дефолтной.

Во-первых начнем с настройки клиента, для этого перейдем в админпанель Keycloak и создадим client в нужном rearm’e.

Переходим в Keycloak, в правом меню нажимаем Clients, далее в таблице жмем кнопку Create

Далее, заполняем поля

Client ID

Root URL

Bank-Vaults Keycloak

В поле Client ID указываем имя клиента, а в поле Root URL – ссылку на

Vault (главное без слеша в конце!) и жмем Save.

Далее открываем данный Client ID, нажав на него в таблице в разделе Clients.

В открывшейся вкладке Settings нам необходимо изменить поля:

Access Type

Valid Redirect URIs

Base URL

Admin URL

Web Origins

Теперь опишем, что необходимо в них заполнить:

  • Access Type указываем confidential
  • Valid Redirect URIs указываем https://my-vault.com/ui/vault/auth/oidc/oidc/callback где my-vault.com домен на котором расположен Hashicorp Vault.
  • Base URL указываем просто /
  • Admin URL и Web Origins указываем домен Vault https://my-vault.com
  • И жмем снова Save.

В появившейся вкладке Credentials копируем Secret, он нам понадобится при заполнении переменным чарта.

Далее переходим на вкладку Client Scopes в боковом меню и жмем Create

Далее создаем scope с именем groups

В настройках указываем Protocol – openid-connect и жмем Save

Далее переходим снова в настройки нашего клиента (в боковом меню выбираем Clients и далее жмем на имя клиента)

Во вкладке клиента Client Scopes выбираем groups в поле Default Client Scopes и жмем Add selected

Далее, мы переходим во вкладку Mappers и создаем Protocol Mapper. Для этого жмем Create. Далее в открывшемся окне Create Protocol Mapper указываем в поле Name – groups, в поле Mapper Type указываем Group Membership, в поле Token Claim Name  указываем groups, а селектор в поле Full group path ставим в положение Off. Жмем Save.

Собственно настройка Keycloak на этом завершена.

Далее, указана часть конфигурации для Custom Resource уже установленного Vault Operator.

Пример настройки кастомного ресурса можно просмотреть по ссылке https://github.com/banzaicloud/bank-vaults/blob/main/operator/deploy/cr-oidc.yaml

Указанные ниже параметры, необходимо указать в разделе auth

Пример части переменных Bank-Vaults для настройки OIDC:

    - type: oidc
      config:
        oidc_discovery_url: "https://$HOST/auth/realms/$REALM_NAME"
        oidc_client_id: $CLIENT_NAME
        oidc_client_secret: $CLIENT_SECRET
        default_role: default
      roles:
        - name: default
          user_claim: email
          groups_claim: groups
          role_type: oidc
          allowed_redirect_uris:
            - http://localhost:8250/oidc/callback
            - https://localhost:8200/oidc/callback
            - http://localhost:8200/oidc/callback
            - https://$VAULT_DOMAIN/ui/vault/auth/oidc/oidc/callback
          policies: "allow_secrets"
          claim_mappings:
            email: email
            name: name
          oidc_scopes:
            - email
            - groups
            - openid
            - profile
          ttl: 20m
          max_ttl: 60m
          verbose_oidc_logging: false

где

$HOST – домен, где расположен Keycloak

$REALM_NAME – имя realm’a

$CLIENT_NAME – имя clientID

$CLIENT_SECRET – cекрет для clientID

$VAULT_DOMAIN – имя домена, на котором расположен Vault

Собственно на этом настройка Bank-Vaults завершена. Об установке Keycloak можно почитать в прошлой статье

Published inHOWTOKubernetesLinuxTools

Be First to Comment

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *