Hromadné akce v CzechIdM

Před několika dny jsme administrátorům našeho Identity Managementu CzechIdM nabídli novou možnost – spouštění takzvaných hromadných akcí. V článku se s hromadnými akcemi blíže seznámíme, naučíme se je používat a na jednoduchém příkladu si ukážeme jejich využití.

Administrátorské rozhraní

CzechIdM nabízí dvě oddělená webová rozhraní: jedno pro běžné uživatele, druhé z bezpečnostních důvodů zcela oddělené pro administrátory. Právě administrátorské rozhraní před nedávnem obohatila záložka „Hromadné akce“. Po jejím rozkliknutí se objeví jednoduchý formulář:

K čemu jsou hromadné akce dobré?

Pomocí hromadných akcí může administrátor snadno upravit velké množství uživatelských účtů. Stačí do textového pole zadat vstupní data v CSV formátu:

command;user;NAZEV_ATRIBUTU
PRIKAZ1;UZIVATEL1;ATRIBUT1
PRIKAZ2;UZIVATEL2;ATRIBUT2
PRIKAZ3;UZIVATEL3;ATRIBUT3
...
PRIKAZn;UZIVATELn;ATRIBUTn

konkrétně například:

command;user;lastName
UPDATE;novak;Novák
UPDATE;viznerova;Víznerová

První řádek vždy obsahuje hlavičku. Každý další řádek znamená jednu dílčí akci na jednom uživateli. Po kliknutí na tlačítko „Spustit akci“ se začnou dílčí akce provádět a upravovat uživatelské účty. Pozor, pořadí dílčích akcí není zaručené, nelze se spoléhat na to, že se dílčí akce na prvním řádku provede skutečně jako první!

Dílčí akce se skládá z příkazu, označení uživatele a hodnot atributu. Ve výše uvedeném příkladu provedeme na účet „novak“ příkaz „UPDATE „s hodnotou příjmení „Novák“ a na účet „viznerova“ příkaz „UPDATE“ s hodnotou příjmení „Víznerová“.

U příkazu „UPDATE“ ještě zůstaneme – pro administrátora může být velmi užitečný.

Syntaxe příkazu „UPDATE“

Asi nejobvyklejším administrátorským požadavkem je změna uživatelského účtu. K tomu slouží v hromadných akcích příkaz „UPDATE“. S jeho pomocí může administrátor přepsat nebo modifikovat libovolný uživatelský atribut. Například

command;user;firstName;lastName;attributes.phone
UPDATE;navratilova;Jana;Kořínková;123456789

upraví křestní jméno uživatelky „navratilova“ na „Jana“, příjmení na „Kořínková“ a nastaví jí hodnotu extended atributu „phone“ na „123456789“.

Situace ovšem nemusí být vždy tak jednoduchá – jeden atribut nemusí obsahovat jen jednu hodnotu, ale rovnou jejich seznam. Typickým atributem je seznam přiřazených rolí. Pokud bychom chtěli uživateli Novák pomocí hromadné akce přiřadit role „Správce databáze“ a „Vedoucí“, museli bychom už znát všechny jeho role současné a v příkazu je všechny vyjmenovat, což by bylo pracné. Proto je tu možnost rozšíření seznamu:

command;user;roles
UPDATE;novak;|MERGE|Správce databáze|Vedoucí

Symbol „|” na začátku hodnoty atributu říká, že budeme pracovat se seznamem a nikoli s jedinou hodnotou. Následuje klíčové slovo „MERGE“ říkající, že se dále uvedené role oddělené opět symbolem „|“ budou přidávat. Pro odebrání vyjmenovaných rolí bychom mohli použít klíčové slovo „REMOVE“, anebo role uživatele Novák přece jenom nastavit nezávisle na rolích předchozích pomocí příkazu „SET“.

Použití těchto klíčových slov nejlépe ilustruje série příkladů:

Role před: [Uživatel Active Directory, Vedoucí]
UPDATE;novak;|MERGE|Správce databáze|Vedoucí
Role po: [Uživatel Active Directory, Vedoucí, Správce databáze]
Role před: [Uživatel Active Directory, Vedoucí]
UPDATE;novak;|REMOVE|Správce databáze|Vedoucí
Role po: [Uživatel Active Directory]
Role před: [Uživatel Active Directory, Vedoucí]
UPDATE;novak;|SET|Správce databáze|Vedoucí
Role po: [Správce databáze, Vedoucí]

Příklad z praxe – hromadný import e-mailů

Užitečnost hromadných akcí hezky ilustruje nedávný příklad z praxe. Náš zákazník si přál spravovat pomocí CzechIdM e-mailové adresy svých zaměstnanců a propagovat je na ostatní systémy. Většina zaměstnanců měla e-mailovou adresu pevně definovaného formátu podle jména a příjmení, a její algoritmické odvození proto nebylo těžké. Bohužel se zde ale vyskytovaly také stovky výjimek – adres jiného tvaru. Jediným zdrojem takových výjimečných adres byl personálním oddělením pečlivě vedený excelový soubor. V prvních třech sloupcích se nacházelo jméno, příjmení a osobní číslo, ve čtvrtém, zda má dotyčný standardní e-mail, a v pátém případná nestandardní adresa.

Abychom pro import mohli použít hromadnou akci, museli jsme data převést do příslušného CSV formátu.

Nejprve jsme tedy museli do šestého sloupce algoritmicky vytvořit standardní e-mailové adresy – to bylo snadné pomocí podmínky a zřetězení v excelovské funkci – a pro nestandardní adresy do šestého sloupce zkopírovat všechny výjimky:

F2=IF(EXACT(D2;"standardni");CONCATENATE(LOWER(A2);".";LOWER(B2);"@firma.cz");IF(NOT(EXACT(E2;"")); H2))

Ze souboru jsme vyřízli dva zajímavé sloupce – osobní číslo a e-mail – a exportovali výsledek do .csv. Jelikož by e-maily neměly obsahovat háčky a čárky, odstranili jsme diakritiku šikovným příkazem

iconv -f utf8 -t ascii//TRANSLIT file.csv

a získali požadovaná data:

12345;jiri.novak@firma.cz
12346;hana.navratilova@firma.cz
12347;pepa.konecny@firma.cz
...

Připsali jsme hlavičku, doplnili klíčové slovo „UPDATE“ na začátek každého řádku a výsledný text vložili v administrátorském rozhraní CzechIdM do pole pro definici hromadné akce:

command;user;email
UPDATE;12345;jiri.novak@firma.cz
UPDATE;12346;hana.navratilova@firma.cz
UPDATE;12347;pepa.konecny@firma.cz
...

Za několik minut už CzechIdM disponovalo všemi e-mailovými adresami a mohlo je sdílet s ostatními systémy zákazníka.

Závěr

V článku jsme se seznámili s novinkou pro všechny administrátory CzechIdM, s hromadnými akcemi. Ukázali jsme si syntaxi užitečného příkazu UPDATE a předvedli užitečnost na praktickém příkladu při hromadném importu e-mailů z excelovského dokumentu. Kdybyste se ohledně CzechIdM chtěli na cokoli zeptat, napište mi na vojtech.matocha@bcvsolutions.eu! Těšíme se na Vaše otázky!