Konfiguracja Vault Hashicorp: Uwierzytelnianie za pomocą LDAP

Konfiguracja LDAP

W zeszłym tygodniu zapoznaliśmy się z podstawami podstaw Vault Hashicorp. Teraz zajmiemy się konfiguracją LDAP. Jeśli nie miałeś nigdy głębszego kontaku z LDAP polecam na początek zytrax.
Pierwszą rzeczą jaką musimy znać jest konfiguracja naszego serwera, a dokładniej nazwa serwera (ldapUrl), ścieżka do użytkowników w domenie (tzw. Distinguish name, userDN), nazwa domeny (domain), unikalny identyfikator rekordu użytkownika (principalAttribute).

Żeby znaleźć informacje na własną rękę polecam ADExplorer z pakietu SysinternalsSuite (do pobrania tutaj).

ADExplorer – bardzo szybki start

Plik ADExplorer.exe zawiera cały program, uruchamiamy go dwuklikiem. Powinno wyświetlić się poniższe okno. Klikamy OK i czekamy na połączenie.

Po połączeniu z serwerem jesteśmy w stanie odczytać jego adres (zaznaczony na czerwono). W zielonym okręgu jest lupa, którą musimy kliknąć w celu wyszukiwania.

Po kliknięciu wyświetla się okno wyszukiwania.

  • Pole Attribute opisuje względem jakiej Właściwości przeszukujemy LDAP.
  • Value to Wartość jaką mają posiadać obiekty w danym atrybucie. Asterysk (*) zastępuje dowolny ciąg znaków
  • Add służy do dodania aktualnej pary Właściwość Wartość do zapytania
  • Remove usuwa aktualnie podświetloną parę w zapytaniu
  • Search wykonuje zapytanie
  • Każdy znaleziony wpis pojawia się w tabeli powyżej przycisku Search

Teraz czeka nas chwila zabawy, ponieważ musimy wyszukać nasze konto. Każde drzewo jest inne, ale jest kilka rzeczy które pomogą szybko znaleźć co potrzebujemy:

  • Spróbuj wyszukać w rozwijanej liście właściwości name, sn, surname, email, mail
  • Spróbuj przeszukać atrybuty zawierające słowo primary pod kątem swojej nazwy domenowej
  • Spróbuj wyszukać jakiegokolwiek użytkownika – przeglądając jego rekord łatwo zorientujesz się w strukturze rekordu użytkownika

Kiedy już znajdziemy swój wpis, ścieżka do naszego użytkownika pojawi się w zaznaczonym miejscu i będzie w formacie:

CN=<Unikalny identyfikator>,CN=A,CN=B,DC=EXAMPLE,DC=COM;

Po odrzuceniu pierwszej części “CN=identyfikator,”, zostaje nam userDN (CN=A,CN=B,DC=EXAMPLE,DC=COM).

Ostatnie co musimy znaleźć to unikalny identyfikator rekordu użytkownika. Będzie on zawierał w nazwie wyraz principal, a jego wartością będzie login@domena.

Właściwa konfiguracja LDAP

Napierw wyeksportujmy potrzebne wartości:

principalAttribute="principal"
upnDomain="example.com"
userDN="CN=A,CN=B,DC=EXAMPLE,DC=COM"
ldapUrl="ldap://example.com"

Do celów testowych LDAP może być skonfigurowany dwoma komendami:

vault auth enable ldap
vault write auth/ldap/config^
  url=$ldapUrl^
  userattr=$principalAttribute^
  insecure_tls=true^
  starttls=false^
  upndomain=$upnDomain^
  binddn=""^
  userdn=$userDN

Jeśli wszytko się udało, możemy się uwierzytelnić:

curl -s POST \
 http://127.0.0.1:8200/v1/auth/ldap/login/<naszLogin> \
 -d '{
"password":"<naszeHaslo>"
}'

Odpowiedź jest całkiem spora:

$ curl -s POST  http://127.0.0.1:8200/v1/auth/ldap/login/<naszLogin>  -d '{
"password":"<naszeHaslo>"
}' | json_pp

{
   "data" : {},
   "warnings" : [
      "no LDAP groups found in groupDN ''; only policies from locally-defined groups available"
   ],
   "lease_id" : "",
   "renewable" : false,
   "auth" : {
      "client_token" : "8be1e395-b1f0-be9f-69b5-db90205c1af2",
      "metadata" : {
         "username" : "<naszLogin>"
      },
      "lease_duration" : 2764800,
      "entity_id" : "f7ccf9a5-a66f-4922-2137-ba95ba774125",
      "accessor" : "8278050c-1a62-f7ad-93e0-10c9e43707e5",
      "renewable" : true,
      "policies" : [
         "default",
         "developers"
      ]
   },
   "wrap_info" : null,
   "request_id" : "cb48256d-fd30-4416-0b16-7f8f6a8d5e3c",
   "lease_duration" : 0
}

Nas interesuje tymczasowo kilka właściwości:

  • client_token – token którego będziemy używali do zapytań
  • policies – polityki jakim podlegamy. Powinieneś mieć je tymczasowo puste, a uzupełnimy je za tydzień
  • warnings – ponieważ nie skonfigurowaliśmy grup LDAP. Większość z nas nie będzie miała dostępu do jego konfiguracji, więc na razie się nie przejmujemy

Dodatkowo widnieje informacja, że nie znaleziono grup do których należy użytkownik. Programiści, zwykle nie mają dostępu do konfiguracji grup LDAP, ale problem można obejść przetrzymując grupy bezpośrednio w serwerze Vaulta.

W tym momencie mamy działające uwierzytelnienie z użyciem LDAP. Za tydzień pozanmy polityki, sposób ich użycia do autoryzacji oraz odczytamy pierwszy sekret jako zawykły użytkownik.

Leave a Reply

Your email address will not be published. Required fields are marked *