Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Интеграция между Keycloak и StarVault

1. Описание задачи

Требуется предоставить доступ пользователям из каталога LDAP к секретам в StarVault. Авторизация должна проходить через Keycloak.

2. Какие проблемы решает статья

  • Настройка интеграции между каталогом LDAP и StarVault через Keycloak.

  • Управление доступом к секретам в StarVault осуществляется через группы в каталоге LDAP.

3. Предварительные условия

  • У вас есть root-токен StarVault.

  • У вас есть доступ администратора к Keycloak.

  • Настроена интеграция между каталогом LDAP и Keycloak.

  • В каталоге LDAP созданы группы и в них добавлены пользователи.

4. Описание решения

4.1. Настройка Keycloak

  1. Откройте веб-консоль Keycloak и убедитесь, что группы из каталога LDAP синхронизированы в Keycloak.

    Если группы не синхронизированы, добавьте group-ldap-mapper в настройки федерации LDAP и синхронизируйте группы LDAP в Keycloak.

  2. Перейдите на вкладку Client scopes и создайте scope с именами groupmembership и username для протокола OpenID Connect.

  3. Откройте настройки username и добавьте маппер username из преднастроенных мапперов (From predefined mappers).

  4. Откройте настройки groupmembership и добавьте маппер By configuration с именем Group Membership и следующими настройками:

    • В поле Name укажите groupmembership

    • В поле Token Claim Name укажите groupmembership

    • Выключите опцию Full group path

  5. Перейдите на вкладку 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>

  6. В настройках нового клиента перейдите на вкладку Client scopes и убедитесь, что ранее созданные scopes присутствуют в списке.

  7. Перейдите на вкладку Credentials и сохраните Client Secret.

4.2. Настройка StarVault

4.2.1. Настройка авторизации через Keycloak

Не все действия по настройке можно выполнить через веб-консоль.

  1. Зайдите по SSH на сервер StarVault и выполните команду:

    starvault login

    Введите root-токен при запросе.

  2. Включите метод авторизации OIDC:

    starvault auth enable oidc
  3. Настройте метод авторизации 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

  4. Настройте роль для метода авторизации 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. Подготовка доступа

  1. Сохраните название хранилища и секрета, к которому вы хотите предоставить доступ, или создайте их.

  2. Создайте политику для предоставления доступа к секрету (через веб-консоль StarVault или CLI). Например, для предоставления доступа на чтение к секрету test в хранилище kv используйте следующую политику:

    path "kv/data/test" {
        capabilities = ["read"]
    }
  3. На вкладке Доступ выберите раздел Группы и создайте группу:

    • В поле Название укажите имя группы так же, как группа названа в каталоге LDAP.

    • В поле Тип укажите внешний.

    • В поле Политики укажите созданную ранее политику.

    • Нажмите Создать, чтобы создать группу. Откроется страница с параметрами созданной группы.

  4. Нажмите Добавить псевдоним.

    • В поле Название укажите имя псевдонима так же, как группа названа в каталоге LDAP.

    • В поле Бэкенд аутентификации выберите имя метода аутентификации OIDC.

    • Нажмите Создать, чтобы создать псевдоним.

4.3. Проверка

  1. Зайдите в веб-консоль StarVault.

  2. Выберите метод авторизации OIDC и нажмите кнопку авторизации.

  3. Во всплывающем окне введите имя и пароль от учетной записи, которая является членом группы с доступом к секрету.

  4. Проверьте, что есть доступ к секрету.