Hashicorp Vault
OIDC аутентификация
В качестве OIDC провайдера можно использовать Keycloak. Там создаем Realm роли и назначаем из пользователю. Также необходимо сделать так, чтобы назначенные роли попали в id_token, который выдается со стороны Keycloak после аутентификации (информация есть здесь https://stackoverflow.com/questions/68741412/grafana-generic-oauth-role-assignment).
Создаем oidc метод доступа (обязательно указываем роль по умолчанию)
# to do
Создаем роль для oidc
vault write auth/oidc/role/default -<<EOF { "allowed_redirect_uris": ["https://vault.example.com/ui/vault/auth/oidc/oidc/callback"], "user_claim":"email", "groups_claim":"roles", "bound_audiences": "vault", "oidc_scopes": "openid roles", "ttl": "8h" } EOF
Команда выше подразумевает, что id_token из Keycloak содержит поле roles с массивом Realm ролей.
Уже можно пробовать зайти через OIDC и получить доступ в объеме default политики.
Допустим уже существует политика admin, которая предоставляет административный доступ к Vault. Чтобы к ней привязаться ролью vault-admin из Keycloak нам потребуется создать т.н. identity/group
и identity/group-alias
.
Кроме того, нам потребуется получить т.н. mount_accessor
для oidc
vault auth list -detailed Path Plugin Accessor ------- ------ -------- oidc/ oidc auth_oidc_123 <------------ mount_accessor ...
Создаем identity/group
(идентификатор группы пригодится в следующей команде)
vault write identity/group \ name="vault-admin-group" \ type="external" \ policies="admin" Key Value --- ----- id 123123 name vault-admin-group
Создаем identity/group-alias
vault write identity/group-alias \ name="vault-admin" \ mount_accessor="auth_oidc_123" \ canonical_id="123123"
Здесь значения для mount_accessor
и cacnonical_id
определяются в командах выше.
В данной конфигурации, пользователю с Realm ролью vault-admin будет назначена политика admin в Vault.
Для добавления новых ролей необходимо выполнить:
- на стороне Keycloak создаем роль и назначаем ее пользователю
- на стороне Vault создаем политику для этой роли, а также соответствующие
identity/group
иidentity/group-alias