Skip to content

Настройка аутентификации через ldap

Запуск сервера в dev-режиме

Скачаем vault и установим : https://developer.hashicorp.com/vault/install

В рамках демонстрации запустим сервер в dev режиме

vault server -dev

После запуска сервера, установим переменную окружения VAULT_ADDR, чтобы указать адрес сервера Vault:

export VAULT_ADDR='http://127.0.0.1:8200'

Настройка политик доступа

Создадим политику для пути "secret/data/Engineering":

path "secret/data/Engineering" {
    capabilities = ["create", "read", "update", "delete", "list"]
}

Применим созданную политику с помощью команды:
vault policy write engineering Engineering.hcl

Также, можно создать политику напрямую через командную строку:

vault policy write mysql-policy - <<EOF
....политика path "secret/data/"...
EOF

Настройка аутентификации через LDAP

Для аутентификации пользователей через LDAP, включим данный метод в Vault:

vault auth enable ldap

Далее, сконфигурируем подключение к LDAP серверу(сервис аккаунт в freeipa нужно создать uidvault):

vault write auth/ldap/config \
url="ldaps://freeipa.truedev.ru" \
userattr=uid \
userdn="cn=users,cn=accounts,dc=truedev,dc=ru" \
groupdn="cn=groups,cn=accounts,dc=truedev,dc=ru" \
groupattr="cn" \
binddn="uid=uidvault,cn=sysaccounts,cn=etc,dc=truedev,dc=ru" \
bindpass='YUqFuq..........js' \
insecure_tls=false \
starttls=false

В LDAP достаточно привязать политики на путь к секретам с группами(jwt,oidc нужно создавать роль потому что через роль можно настроить много доп параметров которые передаются через токен)

Создадим группы в ldap и свяжем их с политиками:

vault write auth/ldap/groups/vault policies=..,..
После этой команды в разделе vault - ldap - groups появятся создадутся только те группы на которые назначены политики, группа vault должна быть в ldap.

Но есть и Groups внутренние без привязки к внешним сервисам(ldap, oidc..): например - в vault внутренная группа Contractors - и есть пользователь User (создали через userpass auth method), которому мы не хотим cоздавать учетку в ldap. - dev.team группа в ldap и нужно назначить доступ к общим секретам для Contractors and dev.team.

В Groups создаем dev.team(external, alias - на группу dev.team из ldap, чтобы связать с группой из ldap)

Потом создаем общую группу Shared (internal), members (dev.team, Contractors)

и на группу Shared можно вешать политику https://developer.hashicorp.com/vault/tutorials/enterprise/namespaces#set-up-entities-and-groups

Аутентификация пользователя и проверка прав

Для аутентификации пользователя через LDAP используем следующую команду:

vault login -method=ldap username='Dev Green'
После успешной аутентификации, можно проверить права доступа пользователя к определённому пути:
vault token capabilities secret/data/Engineering

References:

  • https://docs-bigbang.dso.mil/1.55.0/packages/vault/docs/keycloak/#Vault-configuration
  • https://www.youtube.com/watch?v=aGp8pb7KRIo