Denodo Platform - Advanced Privileges - bezpečný přístup k datům
Denodo Platform podporuje autentizační a autorizační mechanismy založené na uživatelích a rolích s oprávněními od jednotlivých view přes celé schéma až pro specifické datové produkty. Díky sofistikovanému přístupu k právům a rolím nástroj poskytuje velmi jemný přístup až na úroveň buněk (aplikuje zabezpečení na základě řádků i sloupců), a to včetně možnosti maskování jejich obsahu. Pod tím si představme stav, že ne všichni uživatelé mají mít přístup např. ke sloupci mezd v určitém view. Abychom nemuseli vytvářet duplikát view pro tyto uživatele, díky technice view restriction můžeme jednoduše „zakrýt“ obsah tohoto sloupce a ušetřit tak čas a mnohdy nervy, jak celý scope skrývání obsahu vůbec vyřešit.
Z pohledu přístupu Denodo Platform můžeme rozlišit dvě pojetí. Prvním je soubor omezení Advanced Privileges, kdy je možné uživateli (buď přímo jemu, nebo jemu přiřazené roli) zamezit přístup k určitým řádkům nebo sloupcům. Případně nějakým způsobem obsah konkrétní buňky "překrýt" textovým řetězcem, null hodnotou apod. Druhou možností je využítí tzv. tagů, které jsou součástí Global Security Policies (nejsou součástí tohoto blog příspěvku). Pro obě výše uvedené možnosti platí, že nastavení zabezpečení založené na řádcích či sloupcích obvykle nevyžaduje žádné složité kódování a správci přístupu jej mohou definovat graficky v kontextu přirozeného jazyka.
Teorie je věc jedna, praxe mnohdy jiná. My si na několika vybraných příkladech níže ukážeme, jak výše uvedené Advanced Privileges v Denodo Platform fungují a že implementace skutečně nepředstavuje složité harakiri, které se v čase stane jen těžko uchopitelné a uříditelné.
A aby bylo ukázáno celé kouzlo možností práv a restrikcí, všechny ukázkové příklady budou realizovány na jednom a témže view rt_dv_zamestnanci. Obsah tohoto view (sloupce a řádky) jsou vidět na obrázku níže.
K tomuto view bude přistupovat šesti různých uživatelů dle hierarchie či pracovní náplně (pan ředitel, účetní Miládka, HR manažerka Lída, sekretářka Věrka, stávající zaměstnanec Luboš a nový pracovník Jarda) tak, aby bylo názorně ukázáno, že přestože všichni zobrazují obsah přes VQL query z jednoho zdroje, implementace rolí (restrikcí v nich) má dopad na vracený obsah.
Zároveň byly vytvořeny role, a to column_hide , row_hide, hr, bookkeeping a office, které přiřadíme postupně výše uvedeným osobám. V rámci role jsme provedli omezení viditelnosti dat následujícím způsobem:
- column_hide – uživatel s touto rolí nezobrazí obsah vybraných sloupců
- row_hide – uživatel s touto rolí nezobrazí obsah vybraných řádků
- hr – uživatel s touto rolí má modifikovaný pohled na sloupec mzda
- bookkeeping – uživatel s touto rolí má modifikovaný pohled na sloupec email a telefon
- office – uživatel s touto rolí vidí pouze svou mzdu (nevidí mzdu jiných zaměstnanců)
A nyní si už v praxi můžeme ukázat restrikce z pohledu jednotlivých osob. Jelikož pan ředitel nemá žádné omezení z pohledu dat, bude jeho pohled zobrazen jen jednou (v první ukázce). Ostatní osoby a role budeme kombinovat dle potřeby tak, abychom si ukázali různé možnosti, které Denodo Platform v oblasti bezpečnosti přístupu k datům nabízí.
Sloupcové omezení
V prvním příkladu si ukážeme omezení dat na celý sloupec. Tzn., pokud uživatel vybere do svého VQL query sloupec, jehož obsah mu byl rolí zakázán, query mu nic nevrátí (vrátí, hlášku že k danému sloupci nemá přístup 😀).
Role column_hide a omezení na sloupce rodné číslo, mzda a měna.
Nejprve tedy pan ředitel, který nemá žádná omezení. Jeho výstup dále nebudeme v rámci jednotlivých příkladů generovat, protože bychom replikovali stále stejný obsah.
A nyní téže view z pohledu zaměstnance Luboše Housky, který má přístup pouze ke sloupcům jméno, příjmení, hiearchie, pozice, telefon a email. Pokud selectem vrací "povolené" atributy, je výstup následující.
Když však Luboš generuje s rolí column_hide obsah přes * ...
... nebo do daného VQL query zakombinuje sloupec omezený restrikcí (např. rodné číslo), je informován, že nemá nárok zobrazit data za daný sloupec či sloupce.
Řádkové omezení
Druhý příklad nám bude simulovat omezení nikoliv na sloupec, ale řádek. Opět zde bude vystupovat Luboš, ale nyní s rolí row_hide. Ta má nastavenu viditelnost jenom na řádky, ve kterých se ve sloupci pozice vyskytuje hodnota zaměstnanec nebo vedoucí.
Role column_hide a omezení dle pozice.
Když tedy Luboš spustí stejné VQL query jako v prvním příkladu, z výstupu mu „zmizí“ řádky s hodnotou ředitel, hr, účetní a sekretářka ve sloupci pozice.
Maskování dat
Denodo Platform umí „znepřístupňovat“ nejen celé řádky či sloupce, ale také maskovat hodnoty v nich dle potřeby. To si nyní ukážeme v rámci třetího příkladu. Zde už budou vystupovat naše účetní Miládka a HR manažerka Lída.
Nejprve výstup vygenerujeme za paní účetní. Jen pro připomenutí, té byla přidána role bookkeepings s maskováním hodnot ve sloupci telefon a email.
Aby maskování nebylo stejné v každém sloupci, jsou u tel. čísla vidět vždy první a poslední dvě čísla. U emailu pak první a poslední písmeno z jména a příjmení (zřetězeného) + vše za @.
Maskování dat v kombinaci se sloupcovým omezením
Naopak HR manažerce Lídě skryjeme mzdu všech zaměstnanců. Zároveň jí odebereme přístup ke sloupci hierarchie (opět ukázka toho, že je možné kombinovat oba způsoby). Tzn. když Lída nechá vygenerovat data za všechny sloupce ve view rt_dv_zamestnanci, je jí vrácena hláška, ke kterému sloupci nemá přístup.
Když výstup omezí na sloupce, ke kterým má díky roli hr přístup, vidí již hodnoty kromě sloupce mzda.
Maskování dat v kombinaci s uživatelským účtem
Do poslední ukázky z oblasti nastavení práv a restrikcí zakombinujeme naši sekretářku Věrku. Díky propracovanému systému oprávnění a omezení se nemusíte bát „pustit“ do Denodo Platform ani jí 😀. Jelikož Věrka prošla základním školení práce v Denodo Platform, její znalosti jsou naprosto dostatečné k splnění pracovního úkolu, kdy má prostřednictvím e-mailu pozvat všechny zaměstnance na firemní teambuilding.
Věrka od HR manažerky ví, že celou organizační strukturu evidujeme ve view rt_dv_zamestnanci (zde najde e-maily na všechny dotčené osoby). Aby bylo v případě potřeby ze strany sekretariátu možné dohledat základní informace o zaměstnancích, byly vytvořena role s názvem office.
Podmínka (omezení viditelnosti dat) na sloupec mzda v roli office podle uživatele
Uživatelé po přidělení této role mají přístup pouze k view rt_dv_zamestnanci. A jelikož toto view také zahrnuje informace o mzdách, byla zároveň nastavena restrikce tak, aby uživatel po přiřazení role office viděl výplatu jen u sama sebe. Pokud select provede naše sekretářka, vidí tedy pouze svou mzdu.
Jelikož zadáním bylo obeslat přes e-maily všechny zaměstnance, Věrka spustí jednoduché query nad view a e-maily nakopíruje do e-mailového klienta a má hotovo 🙂.
Že platí výše uvedené (tedy uživatel vidí jen svou mzdu) nám ukáže nový zaměstnanec Jarda Chuďas. Po přiřazení role office a generování výstupu Jarda nevidí mzdu žádného uživatele (ani svou), neboť prozatím údaje o něm nebyly zavedeny do view rt_dv_zamestnanci.
Když se pokusím poslední příklad shrnout ... Věrka splnila svůj úkol, aniž by musel být vytvořen „klon“ daného view (např. kvůli výši mzdě, ke které nemá mít přístup každý uživatel). Opět tedy i ona použila to stejné view … jen ošetřené pomocí další view restrikce tak, aby měla přístup k informacím (sloupcům a řádkům), které skutečně potřebuje a zároveň neviděla data, které s výkonem její práce nesouvisí.
Závěr
Výše uvedené možnosti, jak zamezit přístup k datům či data před uživateli „skrýt“ jsou součástí celé produktové řady Denodo Platform. Představené funkcionality je možné využít již od základní verze Standard. Zároveň nejvyšší varianta Enterprise Plus nabízí ještě možnost tzv. tagů. A na ty se podíváme v následujícím článku.