Интеграция между Keycloak и StarVault
1. Описание задачи
Требуется предоставить доступ пользователям из каталога LDAP к секретам в StarVault. Авторизация должна проходить через Keycloak.
2. Какие проблемы решает статья
-
Настройка интеграции между каталогом LDAP и StarVault через Keycloak.
-
Управление доступом к секретам в StarVault осуществляется через группы в каталоге LDAP.
3. Предварительные условия
-
У вас есть root-токен StarVault.
-
У вас есть доступ администратора к Keycloak.
-
Настроена интеграция между каталогом LDAP и Keycloak.
-
В каталоге LDAP созданы группы и в них добавлены пользователи.
4. Описание решения
4.1. Настройка Keycloak
-
Откройте веб-консоль Keycloak и убедитесь, что группы из каталога LDAP синхронизированы в Keycloak.
Если группы не синхронизированы, добавьте
group-ldap-mapperв настройки федерации LDAP и синхронизируйте группы LDAP в Keycloak. -
Перейдите на вкладку Client scopes и создайте scope с именами
groupmembershipиusernameдля протокола OpenID Connect. -
Откройте настройки
usernameи добавьте мапперusernameиз преднастроенных мапперов (From predefined mappers). -
Откройте настройки
groupmembershipи добавьте маппер By configuration с именем Group Membership и следующими настройками:-
В поле Name укажите
groupmembership -
В поле Token Claim Name укажите
groupmembership -
Выключите опцию Full group path
-
-
Перейдите на вкладку Clients и создайте нового клиента со следующими настройками:
-
В поле Client type укажите
OpenID Connect -
В поле Client ID укажите
starvault -
В поле Name укажите
starvault -
Включите опцию Always display in UI
-
Включите опцию Client authentication
-
Выберите следующие значения для Authentication flow:
-
Standard flow -
Direct access grants -
Service accounts roles
-
-
В поле Root URL укажите
https://<STARVAULT_URL>/ui/vault/auth/oidc/oidc/callback -
В поле Valid redirect URIs укажите следующие значения:
-
https://<STARVAULT_URL>/ui/vault/auth/oidc/oidc/callback -
https://<STARVAULT_URL>/oidc/oidc/callback
-
-
В поле Web origins укажите
https://<STARVAULT_URL>
-
-
В настройках нового клиента перейдите на вкладку Client scopes и убедитесь, что ранее созданные scopes присутствуют в списке.
-
Перейдите на вкладку Credentials и сохраните Client Secret.
4.2. Настройка StarVault
4.2.1. Настройка авторизации через Keycloak
|
Не все действия по настройке можно выполнить через веб-консоль. |
-
Зайдите по SSH на сервер StarVault и выполните команду:
starvault loginВведите root-токен при запросе.
-
Включите метод авторизации OIDC:
starvault auth enable oidc -
Настройте метод авторизации OIDC:
starvault write auth/oidc/config oidc_discovery_url="https://<KEYCLOAK_URL>/realms/<REALM>" oidc_client_id="starvault" oidc_client_secret="<KEYCLOAK_CLIENT_SECRET>" default_role="default" (1)1 Замените выделенные значения на данные из Keycloak. Где:
-
<KEYCLOAK_URL>— URL-адрес сервера Keycloak -
<REALM>— имя realm в Keycloak -
<KEYCLOAK_CLIENT_SECRET>— секрет клиента, полученный на шаге 7
-
-
Настройте роль для метода авторизации OIDC:
starvault write auth/oidc/role/default user_claim="preferred_username" groups_claim="groupmembership" allowed_redirect_uris="https://<STARVAULT_URL>/ui/vault/auth/oidc/oidc/callback,https://<STARVAULT_URL>/oidc/oidc/callback" bound_audiences="starvault" oidc_scopes="openid" ttl="1h" (1)1 Замените выделенные значения на данные из StarVault. Где:
-
<STARVAULT_URL>— URL-адрес сервера StarVault
-
4.2.2. Подготовка доступа
-
Сохраните название хранилища и секрета, к которому вы хотите предоставить доступ, или создайте их.
-
Создайте политику для предоставления доступа к секрету (через веб-консоль StarVault или CLI). Например, для предоставления доступа на чтение к секрету
testв хранилищеkvиспользуйте следующую политику:path "kv/data/test" { capabilities = ["read"] } -
На вкладке Доступ выберите раздел Группы и создайте группу:
-
В поле Название укажите имя группы так же, как группа названа в каталоге LDAP.
-
В поле Тип укажите внешний.
-
В поле Политики укажите созданную ранее политику.
-
Нажмите Создать, чтобы создать группу. Откроется страница с параметрами созданной группы.
-
-
Нажмите Добавить псевдоним.
-
В поле Название укажите имя псевдонима так же, как группа названа в каталоге LDAP.
-
В поле Бэкенд аутентификации выберите имя метода аутентификации OIDC.
-
Нажмите Создать, чтобы создать псевдоним.
-