Для упрощения доступа к внутренним ресурсам, типа 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:
- 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 можно почитать в прошлой статье
Be First to Comment