Mám použít CzechIdM nebo LDAP? Oba!

V diskuzi nad způsobem správy uživatelských účtů ve větším prostředí jsem se několikrát setkal s argumente, že identity manager je přece zbytečný, když je možné nasadit „LDAP“. Zkusím tedy sepsat pár svých myšlenek na toto téma, třeba to někomu ze čtenářů pomůže.

Aby se dalo „rozhodnout“ co je lepší použít, je nutné si nejdřív ujastnit k čemu Identity Manager a „LDAP“ slouží.

Co je Identity Manager

jsem už několikrát psal(1,2,3), ale raději to znovu zopakuji :-)

Identity Manager (dále jen IdM) je program, který slouží k usnadnění a automatizaci správy uživatelských účtů. Většinou řídí automaticky velkou část životního cyklu uživatele v síti.

Často implementovaný životní cyklus (založení – úpravy existujícího – odstranění účtu) ve zjednodušené podobě:

  • Informace o uživatelích jsou získávány z personálního systému
    • Zdrojů dat může být více, různé pro zaměstnance, externisty…
    • Lze mít i samostatný zdroj dat pro jeden konkrétní atribut
  • Automatické založení uživatele
    • Informace IT oddělení o novém uživateli (většinou s předstihem před nástupem do práce aby měli čas připravit techniku)
    • Přiřazení základních rolí (=oprávnění ve spravovaných systémech) dle typu uživatele (zaměstnanec, brigádník, externista)
    • Přiřazení oprávnění na základě organizačního zařazení
    • Informace vedoucího o novém zaměstnanci a zároveň umožnění přidání dalších oprávnění
  • Úpravy existujícího uživatele na základě změn v personálním systému
    • Změna jména uživatele
    • Změna organizačního zařazení a s tím souvisejících práv
    • Vyřazení z evidenčního počtu
  • Ukončení pracovního poměru
    • Zařazení účtů do karantény
    • Zaslání informace IT oddělení kvůli odevzdání techniky
    • Po uplynutí karantény smazání účtů

K automatizované správě životního cyklu uživatele je třeba přidat ještě procesy spouštěné ručně:

  • Žádost o změnu oprávnění uživatele – přidání/odebrání práv nadřízeným
  • Různé automatické registrace do systémů bez nutnosti schvalování
  • Žádosti o přidělení „ne-IT“ prostředků (třeba kartička na obědy nebo cokoliv jiného)

Zivotni cyklus

IdM umožňuje uživatelům spouštět procesy z „samoobsluhy“ – speciálního jednoduchého rozhraní pro běžné uživatele odkud uživatel může měnit heslo, zobrazit si stav svých účtů a práv, spustit povolené procesy nebo třeba provést schválení pokud je schvalovatelem. Každá role(=oprávnění) totiž může mít přiděleného schvalovatele a jakékoliv přidělení této role podléhá jeho rozhodnutí.

Aby mohl IdM účty spravovat, je napojen pomocí „konektorů“ do spravovaných systémů. Konektory se snaží se systémem komunikovat „jeho“ běžným způsobem – UNIX se spravuje přes SSH spouštěním příkazů jako by to dělal admin, LDAPv3 pro „LDAP“ servery, do databáze se připojuje přes JDBC, pro připojení k MS Active Directory se používá agent, který běží na Windows v doméně a přes jejich systémová volání se provádí správa. IdM umožňuje spravovat různé systémy, které s jejichž autoři s automatizací vzdálené správy kolikrát ani nepočítali – zjednodušeně říkáme „jakmile to umí komunikovat po síti, tak to budeme spravovat :-)“.

Další důležité funkce jako auditování stavu účtů na spravovaných systémech, automatické reakce na nežádoucí situace (založení účtu mimo IdM), reportování, hromadné změny, synchronizace dat mezi systémy (např. přebírání čísla karty a předávání do dalších systémů) jsou běžnou součástí.

Jednou z implementací je i náš identity manager CzechIdM.

CzechIdM (stejně tak například i SUN IdM) si interně uchovává co nejméně informací o uživatelských účtech. Ve vlastní databázi má uložené základní údaje o uživateli (jméno, příjmení, email), seznam rolí přidělených v IdM a seznam účtů na spravovaných systémech.

IdM neslouží jako autentizační a autorizační služba na síti, ale „pouze“ jako nástroj pro správu uživatelů.

A co je „LDAP“?

LDAP je často označován adresářový server i když je to také zkratka názvu protokolu pro přístup k nim. LDAP popsal pěkně Lukáš Jelínek ve svém článku o stavbě poštovního serveru. Další informace je možné najít např. na Wikipedii nebo u Karla Benáka.

Aplikace musí být na získávání informací o uživatelích z adresářového serveru připravena. Integrovat aplikaci a adresářový server lze na více úrovních:

  • Úplná integrace
    • Všechny informace o uživatelích a jejich právech jsou pouze v adresářovém serveru
  • Částečná integrace
    • Adresářový server obsahuje základní informace o uživatelích a jejich oprávněních – aplikace si ukládá některá data lokálně ve své vlastní databázi, ale zákaldní role uživatele a jeho autentizaci přebírá z adresářového serveru. V některých případech má zapsaná ve svá databázi i další dodatečná podrobnější oprávnění uživatele.
    • Adresářový server slouží pouze pro autentizaci uživatele a lokálně má úplný profil uživatele

Často používanou adresářovou službou je MS Active Directory, v unixovém prostředí je spíš znám OpenLDAP.

Adesářový server slouží jako centrální úložiště informací o uživatelských účtech a jako autnetizační a autorizační služba.

Co teda mám použít?

Z výše uvedeného popisu mi vychází, že oba nástroje řeší rozdílnou oblast správy uživatelů. Dle mého názoru si Identity Manager a adresářový server nekonkurují, ale spíš se vhodně doplňují.

Většinou přicházíme do prostředí kde jsou uživatelské účty v MS Windows spravovovány přes MS Active Directory, Samba doménu nebo eDirectory. Další používané aplikace pak mívají vlastní databázi uživatelů ve kterých jsou uživatelé spravováni ručně administrátory. V takovém případě implementujeme Identity Manager, který automatizuje správu.

Když přijdeme do společnosti, kde neexistuje žádná centrální správa, každý uživatel má svůj lokální účet na počítači, tak začínáme implementací Samba domény a adresářového serveru. Teprve když je doména vyřešena a je pořádek v uživatelských účtech na pracovních stanicích začínáme řešit automatizaci správy uživatelů jak v doméně tak i v dalších používaných aplikacích.