Tmavé pozadí

Denodo Platform - Global Security Policies

Josef Kotouček
Josef Kotouček 14. 3. 2025
Denodo Platform - Global Security Policies

Denodo Platform kromě Advanced Privileges (této problamatice věnován předešlý blog s názvem Denodo Platform - Advanced Privileges) implementuje bezpečnostní politiky prostřednictvím svého modulu Global Security Policies (dále jen GSP) založeného na sémantice využívající tagy namísto datových artefaktů. Ty jsou abstrahovány z fyzických datových zdrojů pod nimi, jsou snadněji spravovatelné a méně náchylné k chybám.

Problematiku nastavení GSP si ukážeme na příkladu, kdy považujeme čísla bankovních účtů uživatelů za „citlivá“ data a chceme je nějak maskovat. Jelikož čísla bankovních účtů mohou figurovat na více view (v našem konkrétním příkladu na dvou), využijeme právě tag tak, abychom se nenastavovali s každým sloupcem (na druhém view bylo číslo rozděleno dokonce do dvou, přesto implementujeme jeden tag) a jeho zabezpečením separátně. Šetříme tak náš čas a zároveň díky tagům zpřehledňujeme systém práv a restrikcí.

Nejprve si pro přehled ukážeme ony dvě view, a to zakaznici_auta a zakaznici_motorky. Každé view pochází z jiného zdroje (Oracle a PostgreSQL), přesto není problém na ně implementovat jeden tag (jednu společnou bezpečností politiku).

0_1.png

view zakaznici_auta

0_2.png

view zakaznici_motorky

Abychom si do budoucna ušetřili práci s nastavením (přiřazením tagu) pro každého uživatele, bude tag aplikovat na roli s názvem tagy. Její vytvoření je stejné jako v příspěvku Denodo Platform - Advanced Privileges – bezpečný přístup k datům (v tomto se nic nemění).

 

Založení tagu bankovni_ucet

Realizace a implementace tagu má dva stupně. Nejprve je nutné samotný tag založit a přidělit k němu view, ze kterých posléze navolíme konkrétní sloupce. Druhým krokem je pak vybrat z předdefinovaných možností, co má tag s danými sloupci udělat … např. nahradit text hvězdičkami, čísla null hodnotou atd.

Přejděme tedy k vytvoření tagu.  Kliknutím na File > New > Tag založíme nový tag, přičem na úvodní záložce pouze doplníme název (volitelně popisek). 

1_1.png

Následně vybereme view a na nich atributy.

1_2.png

 

Nasazení tagu

Po založení tagu můžeme plynule přejít k druhému kroku. Vyplníme název a připíšeme poznámku, ze které byl mělo být jasné, co bude mít implementace GSP za následek. Následně vybereme roli tagy. V navazujícím výběru použije námi vytvořený tag bankovni_ucet, neboť v něm se nachází view a atributy, na které má tag dopad.

2_1.png

Přiřadíme datalake (pokud máme více stejných view v různých databázích, není nic snazšího, než doplnit celkový výčet a opět využít sílu jedné implementace napříč databázemi namísto nastavování všechno x krát dle počtu databází) a vybereme samotný tag bankovni_ucet. Poté už jen definujeme, co se má s hodnotami ve sloupcích dít.

2_2.png

Celkové nastavení můžeme zkontrolovat v přehledu GSP.

2_3.png

 

Dopad tagu bankovni_ucet na zobrazovaná data

Nyní už nám nezbývá nic jiného než vyzkoušet, jestli tag funguje správně a dojde k překrytí všech údajů týkajících se bankovních účtů. Schválně necháme spojení obou view přes union, aby bylo vidět, jak se chová maskování dat i v tomto případě. Kromě jiného počtu hvězdiček (*), které logicky vzniká jejich řetězením za dva sloupce (view zakaznici_motorky … početnení problém ošetřit přes funkci), je výstup tak, jak jsme si předsevzali na začátku.

3_1.png

 

 

Advanced privileges a GSP - jde to spolu? 

Pokud jste přečetli oba články věnované oblasti bezpečnosti nad daty, které máme v datalake, jistě Vás napadlo, jestli je možné kombinovat Advanced Privileges a GSP. Ano, je to možné. Pro poslední ukázku využijeme vše dříve připravené (roli tagy, view zakaznici_auta a zakaznici_motorky). Zároveň však vytvoříme ještě jedno view uzivatel_zeme, které bude kombinovat uživatele a v jaké zemi aktuálně pracuje. Ona země je pro nás rozhodující, protože podle ní bude vyfiltrován obsah zákazníckých view. Cílem tedy je skrýt ty řádky zemí, ve které aktuálně náš uživatel, který generuje data, nepracuje.

Když se podíváte na obrázek výše, po přihlášení náš uživatel Luboš Houska vidí všechny řádky z obou view (pomocí tagu má zakrytý obsah sloupců týkajících se bankovních účtu). Využijeme sloupec zeme a nastavíme Advanced Privileges tak, že jeho aktuální země, ve které pracuje, bude mít dopat na řádky, které uvidí ve svém výstupu. Nejprve však musíme vytvořit nové view uzivatel_zeme, kde k uživateli uvedeme zemi.

4_0.png

Následně upravíme roli tagy tak, že doplníme view restriction na sloupec zeme obou zákazníckých view.

4_1.png

Protože je Luboš na pracovní cestě na Slovensku, po provedení selectu nad oběmi view je zobrazen obsah jen těch řádků, kde je uvedeno ve sloupci zeme Slovensko.

4_2.png

Když však provedeme update hodnoty (Slovensko změníme na Českou republiku) ve view uzivatel_zeme ...

4_3.png

... v následném generování výstupu dochází ke změně obsahu vracených dat.

4_4.png

 

Závěr

Na jednoduchém příkladu jsme si ukázali, že kombinace Advanced Privileges a GSP je možná. Zároveň lze využít interní funkce Denodo Platform a docílit tak ještě širšího využítí celého konceptu rolí a security nad daty.

Josef Kotouček
Josef Kotouček 14. 3. 2025