Centralizovaná správa souborového systému prostřednictvím CzechIdM – realizace
Popisem způsobu, jakým náš Identity Manager CzechIdM může spravovat oprávnění na souborovém systému, se věnuje článek Centralizovaná správa souborového systému. Zde je názorně ukázáno, jak jednoduše se dají oprávnění prostřednictvím CzechIdM spravovat, jak si mohou jednotliví uživatelé žádat o oprávnění na sdílené adresáře, jak funguje schvalování přístupů z pohledu vedoucích jednotlivých uživatelů, případně z pohledu vlastníka dat atd. V tomto článku se podíváme na správu oprávnění prostřednictvím CzechIdM z pohledu realizace. Tak do toho!
Obecný popis řešení
Z pohledu CzechIdM se přidělením nějakého ACL oprávnění na sdílený adresář rozumí přidělení odpovídající adresářové role danému uživateli. Adresářové role se od klasických rolí Identity Manageru liší jen minimálně. Jediným podstatným rozdílem je to, že při přidělování adresářové role uživateli se musí specifikovat oprávnění, které má uživatel dostat na daný adresář. Oprávnění je tedy parametrem dané instance adresářové role. Přidělením adresářové role se nastavuje příslušné oprávnění rekurzivně na všechny následníky daného adresáře (pokud tedy nemá uživatel specifikované jiné oprávnění pro nějaký z následníků daného adresáře). Vyvstávají otázky, jakým způsobem CzechIdM nastavuje příslušná ACL oprávnění na souborovém systému a jakým způsobem vytváří, maže a upravuje adresářové role, aby odpovídaly adresářové struktuře souborového systému. Pojďme se tedy na to podívat.
Zdroj informací o adresářové struktuře
Aby si mohli uživatelé žádat o práva na sdílené adresáře, tak musí mít CzechIdM k dispozici model adresářové struktury na daném souborovém serveru, dle kterého spravuje adresářové role. Tento model obsahuje záznamy pro všechny adresáře do určité hloubky adresářové struktury (parametr dané implementace), přičemž se dále eviduje vlastník daného adresáře, čas poslední rekoncilace a synchronizace a tzv. DID, což je jednoznačný identifikátor adresáře, který se nikdy nemění. DID se zapisuje do extended atributů adresářů a slouží například ke správné identifikaci adresáře při jeho přesunu a přejmenování. Tento model adresářové struktury se ukládá do tzv. přechodové databáze, ke které se CzechIdM připojuje jako k jakémukoliv jinému systému. Tato databáze obsahuje kromě tabulky s informacemi o adresářovém modelu také tabulku, kde se evidují ACL oprávnění jednotlivých uživatelů na jednotlivé adresáře a čas, kdy došlo k poslední modifikaci daného záznamu. V poslední tabulce “přechodové databáze” se ukládají informace o času skončení poslední synchronizace a rekoncilace.
Přechodová databáze slouží tedy z pohledu CzechIdM jako zdroj informací o adresářové struktuře na souborovém serveru a jako zdroj informací o tom, kdo má mít kam nastaveny jaká práva. Pokud si tedy uživatel v CzechIdM požádá o práva na nějaký adresář a vlastník dat mu tyto práva potvrdí, tak se potřebné informace zapíší právě do přechodové databáze. Tato databáze může běžet na stejném serveru jako CzechIdM, na souborovém serveru, případně někde úplně jinde.
Jak se vytváří adresářový model v přechodové databázi a jak se propagují práva na adresáře a soubory
Nyní se dostáváme k tomu, jakým způsobem se v přechodové databázi vytváří model adresářové struktury na souborovém serveru a jak se propagují ACL oprávnění na samotné adresáře a soubory. Slouží k tomu sada PERLovských skriptů a podpůrných tříd (pro práci s databází, pro logování prováděných operací, pro načítání konfiguračních údajů), které běží na souborovém serveru. Stěžejní je následující trojice skriptů:
- nacteni.pl – Skript slouží pro načtení adresářové struktury do přechodové databáze. Z konfiguračního souboru si skript přečte, pro jaký adresářový podstrom má model vytvořit, tj. jaký je kořen adresářového modelu, a do jaké hloubky má model vytvářet. Tento skript se spouští pouze jednou a to při nasazení správy oprávnění pomocí CzechIdM do provozu. Před spuštěním rekoncilačního skriptu (reconacl.pl) je totiž potřeba, aby byl adresářový model vytvořen a aby byly importovány stávající ACL oprávnění uživatelů. Pokud bychom spustili rekoncilační skript bez importovaných stávajících práv, tak by rekoncilační skript předpokládal, že žádná práva být nastavena nemají a všechna ACL-ka by na souborovém systému (v daném podstromu) smazal. Proto je potřeba před jeho spuštěním výchozí práva naimportovat. A abychom to mohli provézt, tak musíme mít vytvořen adresářový model, abychom se mohli na jednotlivé záznamy adresářů odkazovat.
- reconacl.pl – Úkolem rekoncilačního skriptu je uvézt ACL oprávnění na souborovém systému do konzistentního stavu s právy v přechodové databázi a případně v databázi aktualizovat adresářový model. Skript prochází všechny adresáře v daném podstromu a dle DID kontroluje jejich stav vzhledem k datům v databázi. Pro nové adresáře vytvoří v přechodové databázi záznamy. U stávajících adresářů kontroluje jejich stav a případně aktualizuje ACL-ka, pokud jsou na souborovém systému nastavena jinak než v databázi. Pokud došlo na souborovém systému ke kopírování/přesunu adresářů, tak opraví model. Nakonec skript projde adresáře v databázi, u kterých nebyla provedena žádná aktualizace, a zkontroluje jejich existenci na disku. Rekoncilační skript je vhodné spouštět nejlépe jednou denně (pravidelné spuštění CRONem) a mimo provozní špičku, aby zbytečně nezatěžoval server.
- syncacl.pl – Synchronizační skript v krátkých intervalech (každých x-minut) kontroluje práva v přechodové databázi a nová oprávnění propaguje na souborový systém. Skript si vyhledá nová práva, která se přidala od poslední synchronizace, seřadí je od nejstaršího po nejnovější a dle nich nastavuje příslušná ACL oprávnění. Na závěr se do přechodové databáze zapíše čas skončení synchronizace, aby skript při dalším spuštění věděl, odkud pokračovat. Pravidelné spouštění synchronizační ho skriptu je opět naplánováno v CRONu.
Napojení CzechIdM na přechodovou databázi
Zatím jsme si popsali, jakým způsobem se spravuje přechodová databáze s modelem adresářové struktury a jak se nastavují ACL oprávnění na soubory a adresáře. Zbývá nám objasnit, jak s přechodovou databází komunikuje CzechIdM.
V CzechIdM jsou nakonfigurovány dva systémy, které s ní pracují. První z nich (smb_dir) pracuje s adresářovým modelem a slouží především k vytváření a správě adresářových rolí. K tomuto účelu je v CzechIdM napsáno speciální workflow, které se v pravidelných intervalech spouští a aktualizuje adresářové role, aby odpovídali modelu v databázi. Pokud například byl na souborovém systému odstraněn adresář, tak rekoncilační skript “reconacl.pl” smaže daný záznam v přechodové databázi a při následném spuštění daného workflow v CzechIdM dojde k odebrání příslušné adresářové role u všech identit, které ji měly přiřazenou, a k následnému smazání dané role.
Druhý ze systémů (smb_rights) slouží pro správu práv. Pokud si uživatel prostřednictvím CzechIdM požádá o nějakou adresářovou roli a vedoucí a vlastník dat mu přiřazení role schválí, tak se příslušná práva prostřednictvím tohoto systému zapíší přímo a ihned do přechodové databáze. Pro tento systém je připraveno rekoncilační workflow, které se spouští při nasazení této realizace do provozu. Říkali jsme si, že po vytvoření adresářového modelu skriptem “nacteni.pl” se do přechodové databáze musí importovat stávající ACL oprávnění pro uživatele. Je však také potřeba, aby se odpovídajícím identitám pro tyto výchozí práva přiřadili odpovídající adresářové role, což provede právě ono rekoncilační workflow.
Budoucí rozšíření
Stále hledáme způsoby, jak výše popsané řešení zlepšit a rozšířit. Příkladem může být:
- použití linuxového nástroje inotify – inotify slouží pro monitoring změn prováděných na souborovém systému. Výstup inotify je tedy možné použít k okamžité reakci na prováděné změny. Pokud se například vytvoří nový adresář, tak to inotify zjistí a příslušně zareaguje. Monitorující skript poté zapíše záznam pro nově vytvořený adresář do přechodové databáze.
- “blacklist” na adresáře – pro některé adresáře nemusí být vhodné, aby se pro ně vytvářely adresářové role o které si mohou obyčejní uživatelé žádat, případně pro některé adresářové role si mohou žádat pouze určité skupiny uživatelů atd.
Přínosy našeho řešení
Závěrem si pojďme shrnout hlavní přínosy našeho řešení správy oprávnění na sdílené adresáře.
- delegace správy na jednotlivé uživatele – uživatel se přihlásí do CzechIdM a zažádá si o přístup do daného adresáře, vlastníkovi dat se odešle mail, že má v CzechIdM vytvořen úkol, ve kterém může potvrdit oprávnění pro tohoto uživatele, případně mu žádost zamítnout
- standardizace schvalovacích procesů – např. žádost uživatele na čtení adresáře musí schválit nejprve jeho vedoucí a poté vlastník adresáře
- auditovatelnost oprávnění v čase – v CzechIdM je možné vytvářet reporty o tom, kdo má kam přidělena práva, kdy došlo k modifikaci určitého oprávnění, kdo danou modifikaci potvrdil atd.
- zvýšení bezpečnosti – při odchodu zaměstnance ze společnosti se mu automaticky a ihned odeberou všechna oprávnění a všechny přístupy
- přehledné rozhraní – každý uživatel po přihlášení do CzechIdM vidí, kam má přiděleny jaká práva, administrátoři vidí v CzechIdM kdo schvaluje přidělení dané adresářové role apod.
Závěr
V článku jsme si popsali, jakým způsobem spravuje CzechIdM oprávnění na sdílené adresáře. Pokud by Vás zajímaly bližší detaily nebo byste se chtěli dozvědět o systému CzechIdM více informací, tak neváhejte a napište mně na info@bcvsolutions.eu. Rád Vám zodpovím všechny Vaše otázky.