Thank you for reading this post, don't forget to subscribe!
Для упрощения доступа к внутренним ресурсам, типа Grafana, ArgoCD было решено попробовать интегрировать Keycloak с Vault. В нашем случае — это Bank-Vaults Operator который используется в Kubernetes.
В данный момент у нас не стояла задача распределить по ролям, настроить для каждой свои политики — основной роли default с возможностью создавать/удалять/смотреть/апдейтить секреты вполне хватает. Поэтому ниже будет приведен пример именно такой настройки — считай дефолтной.
Во-первых начнем с настройки клиента, для этого перейдем в админпанель Keycloak и создадим client в нужном rearm’e.
Переходим в Keycloak, в правом меню нажимаем Clients, далее в таблице жмем кнопку Create
Далее, заполняем поля
Client ID
Root URL
В поле 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
- 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 завершена.