IDM: Jak šikovně updatovat mnoho uživatelů ve spravovaných systémech

Pokud dojde k úpravě na roli, která změní stav účtu na koncovém systému, je třeba tuto úpravu propsat u všech dotčených uživatelů. Toto je možné provést několika způsoby. Implementačně nejjednodušší je každou noc přeukládat všechny uživatele v IdM. V případě, že je v IdM velké množsví uživatelů však takové přeuložení může trvat i několik dní.
Další možností je ihned po změně na roli přeuložit všechny uživatele s danou rolí. Změny na rolích se ale obvykle dějí v pracovní době, což by vytížilo systém uprostřed dne, kdy se k němu připojují uživatelé.

Naše řešení

Pokud dojde ke změně na roli, která ovlivní účty, tak se role označí značkou k přeuložení. V noci pak běží naplánovaná úloha vyhledávající všechny uživatele, kteří mají přiřazenou nějakou označenou roli a přeuloží je. Systém není přes den zbytečně vytížen a k propsání změn na účtech dojde v noci.
Pokud při ukládání uživatele dojde k chybě (například dočasná nedostupnost systému), pak je značkou k přeuložení označen přímo daný uživatel a při dalším běhu přeuložení je znovu načten. To zajistí, že v případě nedostupnosti systému budou změněné informace propsány při dalším běhu.

Jak to funguje?

Každou noc nastartuje naplánovaná úloha přeuložení. Ta vyhledá všechny role označené značkou k přeuložení, u každé role vyhledá všechny uživatele, včetně uživatelů nadřazených rolí. Od označených rolí odebere značku k přeuložení. Následně vyhledá všechny uživatele označené přímo a přidá je do seznamu. Výsledný seznam je promíchán a rozdělen podle počtu vláken. Postup přeuložení je následující: uživatel je načten, jsou spočítány hodnoty všech atributů účtů, následně je uložen. To vyvolá propsání jeho účtů na koncové systémy. Pokud na některém systému dojde k chybě (například dočasná nedostupnost systému), pak je uživatel označen značkou k přeuložení, pokud ji již nemá. Následující běh přeuložení označených uživatelů takového uživatele najde a provede přeuložení znovu. V případě úspěchu je značka k přeuložení odebrána, aby uživatel nebyl načítán zbytečně.
Dle množsví prostředků a výkonu stroje může přeuložení běžet ve více vláknech. Každé vlákno pak zpracuje svou část uživatelů a celkový čas přeuložení je kratší.
Seznam uživatelů k přeuložení je promíchán, aby všechna vlákna běžela po přibližně stejnou dobu. Při řazení podle abecedy by mohlo dojít k situaci kdy jedno vlákno dostat pouze externisty/technické účty mající pouze jeden účet a skončí mnohem dříve než ostatní vlákna. Míchání je samozřejmě možné vypnout v konfiguraci.
Na jednom z projektů jsme tuto funkcionalitu dále rozšířili o označení všech uživatelů, kterým se změnil vedoucí.
Uživatel má u úvazku uloženou pracovní pozici, na které je jeho vedoucí, pokud se změní uživatel na této pozici  (jeden člověk vystřídá svého předchůdce na stejné pracovní pozici), jsou označeni všichni podřízení uživatelé a při přeuložení je změna vedoucího propsána do všech koncových systémů.

Závěr

Přeuložení označených uživatelů nám dává možnost zajistit propsání změn na rolích v době, kdy systém není vytížen přístupem uživatelů. Navíc se automaticky kontroluje úspešnost zápisu změn na systém a v případě neúspěchu bude docházet k opakování zápisu.
Pokud máte nějaké dotazy nebo návrhy na další vylepšení, neváhejte napsat na info@bcvsolutions.eu.

Leave a Reply