ready ldap
parent
bcb9dec04c
commit
7e5bf28182
Binary file not shown.
|
After Width: | Height: | Size: 6.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 8.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 7.8 KiB |
|
|
@ -46,7 +46,7 @@ vault policy write policyuser1 /home/vuser/policyUSER.hcl
|
||||||
```
|
```
|
||||||

|

|
||||||
|
|
||||||
Создадим групповую политику
|
Создадим групповую политику с полным доступом
|
||||||
```bash
|
```bash
|
||||||
nano policy_groupad_fullacess1.hcl
|
nano policy_groupad_fullacess1.hcl
|
||||||
|
|
||||||
|
|
@ -63,4 +63,196 @@ vault policy write policy_groupad_fullacess1 /home/vuser/policy_groupad_fullaces
|
||||||
```
|
```
|
||||||
vault policy list
|
vault policy list
|
||||||
vault policy read policy_groupad_fullacess1
|
vault policy read policy_groupad_fullacess1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Привяжем LDAP к AD
|
||||||
|
Идем и читаем *Auth Methods* https://developer.hashicorp.com/vault/docs/auth
|
||||||
|
|
||||||
|
Без чтения дальше продолжать бессмысленно. Особенно внимательно читаем LDAP Auth Method
|
||||||
|
Включаем LDAP по руководству, раздел Configuration
|
||||||
|
```
|
||||||
|
vault auth enable ldap
|
||||||
|
```
|
||||||
|
Сначала настроим связку с AD – потому что сейчас в Vault пользователей нет.
|
||||||
|
|
||||||
|
>Учитывать: пробелы и переносы строк значимы, если не поставите пробел перед закрывающим “\”, то получите проблемы. Учтите, в тестовой конфигурации пароль прописан в исполняемом файле в открытом виде, не забудьте потом удалить файл и историю.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nano ad_auth_1.sh
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
vault write auth/ldap/config \
|
||||||
|
url="ldap://192.168.32.155:389" \
|
||||||
|
groupdn="OU=N Watch,OU=Zoo MSK,DC=contoso,DC=lab" \
|
||||||
|
groupfilter="(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}}))" \
|
||||||
|
userdn="OU=N Watch,OU=Zoo MSK,DC=contoso,DC=lab " \
|
||||||
|
userattr=sAMAccountName \
|
||||||
|
groupattr="memberOf" \
|
||||||
|
insecure_tls=false \
|
||||||
|
deny_null_bind=true \
|
||||||
|
use_token_groups=true \
|
||||||
|
starttls=false
|
||||||
|
```
|
||||||
|
И выполняем
|
||||||
|
```
|
||||||
|
sh ad_auth_1.sh
|
||||||
|
```
|
||||||
|
теперь нам надо бы проверить что все работает и привязать юзеров к политикам.
|
||||||
|
|
||||||
|
Проверим через GUI
|
||||||
|
|
||||||
|
User- Ivanov, Password - Pa$$word3
|
||||||
|
|
||||||
|
Получаем ошибку:
|
||||||
|
```
|
||||||
|
Authentication failed: 1 error occurred: * error connecting to host "ldap://192.168.32.155:389": LDAP Result Code 200 "Network Error": dial tcp 192.168.32.155:389: connect: connection refused
|
||||||
|
```
|
||||||
|
|
||||||
|
Посмотрим в CLI
|
||||||
|
```
|
||||||
|
vault login -method=ldap username=Ivanov
|
||||||
|
```
|
||||||
|
та же ошибка, а все почему? Потому что по невнимательности я прописал
|
||||||
|
|
||||||
|
url="ldap://192.168.32.155:389" \
|
||||||
|
|
||||||
|
а AD у нас где? 192.168.31.151
|
||||||
|
|
||||||
|
и заодно, insecure_tls=false – а у нас ничего для TLS нет, так что читаем руководство еще раз,
|
||||||
|
|
||||||
|
insecure_tls - (bool, optional) - If true, skips LDAP server SSL certificate verification - insecure, use with caution!
|
||||||
|
|
||||||
|
**В БОЕВОЙ СРЕДЕ НЕ ЗАБЫВАЕМ СЕРТИФИКАТЫ AD!**
|
||||||
|
|
||||||
|
И мы же не прописали самое главное – bindDN!
|
||||||
|
|
||||||
|
Исправляемся, не зря в ldapsearch проверяли. Не забываем про “\”, кроме последней строки
|
||||||
|
|
||||||
|
`binddn="CN=Vault connector,OU=Vault,OU=Robo base,DC=contoso,DC=lab " \`
|
||||||
|
|
||||||
|
`bindpass="Pa!!word2"`
|
||||||
|
|
||||||
|
Исправляем, выполняем
|
||||||
|
|
||||||
|
```
|
||||||
|
vault auth disable ldap
|
||||||
|
vault auth enable ldap
|
||||||
|
sh ad_auth_1.sh
|
||||||
|
```
|
||||||
|
Учтите:
|
||||||
|
|
||||||
|
1) При выполнении vault auth disable ldap – будут удалены не только настройки ldap, но и пользователи. У нас пока пользователей нет, а когда будут – попробуйте и увидите.
|
||||||
|
|
||||||
|
2) При каждой удачной команде vault login(и так далее) – вы будете получать новый токен. Поэтому лучше бы держать две SSH сессии – одну с vault login и root token, а вторую для проверок. Я в тексте не пишу про переключение, потому что по лени ввожу vault login каждый раз.
|
||||||
|
|
||||||
|
*Проверяем*
|
||||||
|
|
||||||
|
`vault login -method=ldap username=Ivanov`
|
||||||
|
Получаем годное красивое
|
||||||
|
|
||||||
|
Error authenticating: Error making API request.
|
||||||
|
|
||||||
|
URL: PUT http://192.168.31.155:8200/v1/auth/ldap/login/Ivanov
|
||||||
|
|
||||||
|
Code: 400. Errors:
|
||||||
|
|
||||||
|
* ldap operation failed: failed to bind as user
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
И если вы на этом этапе подумали – «Ну что ж, заведем юзера в Vault!» - то вовсе не угадали.
|
||||||
|
|
||||||
|
Надо идти в логи AD и смотреть там ошибки авторизации – у какого юзера не идет авторизация. В моем случае – с Source Network Address: 192.168.31.155 прошла успешная авторизация пользователя CONTOSO\VaultSAM
|
||||||
|
|
||||||
|
Может быть, проблема в пароле товарища Иванова? Проверим. Сменим Pa$$word3 на Pa!!word3 –а вот и нет.
|
||||||
|
|
||||||
|
Но у нас есть товарищ Волк, без имени и фамилии. Проверим!
|
||||||
|
|
||||||
|
vault login -method=ldap username=volk
|
||||||
|
|
||||||
|
и все работает!
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
# Заводим MS AD юзеров в Vault LDAP
|
||||||
|
Не забудем перейти в соседнюю сессию или перелогинимся
|
||||||
|
```
|
||||||
|
vault login
|
||||||
|
```
|
||||||
|
Юзер у нас ходит, а политик ему не назначили – так заведем.
|
||||||
|
|
||||||
|
```
|
||||||
|
vault write auth/ldap/users/Ivanov
|
||||||
|
```
|
||||||
|
и получим ошибку, Must supply data or use –force
|
||||||
|
|
||||||
|
Заведем сразу с политикой -
|
||||||
|
|
||||||
|
```
|
||||||
|
vault write auth/ldap/users/Ivanov policies=policyuser1
|
||||||
|
vault login -method=ldap username=Ivanov
|
||||||
|
```
|
||||||
|
работает, отлично – политика и токен["default" "policyuser1"],а как с группой быть?
|
||||||
|
|
||||||
|
В конфиге я считерил и сразу прописал
|
||||||
|
|
||||||
|
`groupfilter="(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}}))`
|
||||||
|
|
||||||
|
В конфиге я считерил и сразу прописал
|
||||||
|
|
||||||
|
`groupfilter="(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}}))" \`
|
||||||
|
|
||||||
|
это известное читерство, описанное тут Поиск всех групп пользователя AD по протоколу LDAP, и случайно мне попавшееся в обсуждении на hashicorp
|
||||||
|
|
||||||
|
и в google groups ,да и в документации в разделе Group Membership Resolution, но как-то совсем косо, с первого второго и далее раза не очевидно.
|
||||||
|
|
||||||
|
**Проверим**:
|
||||||
|
|
||||||
|
```
|
||||||
|
vault login -method=ldap username=Petrov
|
||||||
|
```
|
||||||
|
теперь логинится, и получает политику ["default"]
|
||||||
|
|
||||||
|
Пропишем группу AD
|
||||||
|
|
||||||
|
```
|
||||||
|
vault login
|
||||||
|
vault policy list
|
||||||
|
vault write auth/ldap/groups/VltADM policies=policy_groupad_fullacess1
|
||||||
|
vault login -method=ldap username=Petrov
|
||||||
|
```
|
||||||
|
и получим что: Верно. Индейскую народную национальную избу мы получим. Логин есть – политики нет.
|
||||||
|
|
||||||
|
```
|
||||||
|
vault list auth/ldap/groups
|
||||||
|
vault delete auth/ldap/groups/VltADM
|
||||||
|
vault write "auth/ldap/groups/Vault login" policies=policy_groupad_fullacess1
|
||||||
|
vault login -method=ldap username=Petrov
|
||||||
|
["default" "policy_groupad_fullacess1"]
|
||||||
|
```
|
||||||
|
**Теперь про неприятное.**
|
||||||
|
|
||||||
|
Удалим пользователя Иванова без очистки токенов.
|
||||||
|
|
||||||
|
`vault delete auth/ldap/users/Ivanov`
|
||||||
|
|
||||||
|
зайдем им
|
||||||
|
|
||||||
|
`vault login -method=ldap username=Ivanov`
|
||||||
|
|
||||||
|
ОП – и у нас по прежнему есть старая политика. Для сброса придется в обязательном порядке отзывать токены –
|
||||||
|
|
||||||
|
Получить список токенов
|
||||||
|
|
||||||
|
`vault list auth/token/accessors`
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Перебрать каждый
|
||||||
|
|
||||||
|
`vault token lookup -accessor EHlDQ1tFHEgA9aq0R6IptIjo`
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
и так по всем. Не самая удобная процедура с точки зрения CLI, ну так Vault не под CLI заточен.
|
||||||
Loading…
Reference in New Issue