Schováváme citlivá data v Azure SQL Database s Data Masking

Azure SQL má zajímavou funkci Data Masking, která "za živa zahvězdičkuje" citlivá data. Přemýšlel jsem, k čemu je to dobré.

Pokud řešíme přístup uživatelů k datům a některý z nich jednoduše číslo kreditní karty nebo rodné číslo vidět nemá, použil bych asi jinou metodu. například column security (o tom jindy), nedal bych přístup k hlavní tabulce, ale pouze view, které tyto údaje neobsahuje nebo bych celou logiku implementoval aplikačně v nějaké mikroslužbě. K čemu tedy maskování dat?

Maskování dat

Mě se líbí následující scénář. V rámci agilního (ale i tradičního) vývoje potřebujeme aplikace dobře testovat. V jednoduchých testech si vystačíme zcela bez databáze, použijeme mockup nebo testovací data. V pozdějších fázích je ale vhodné se co nejvíce přiblížit provozní situaci co do dat samotných a jejich objemu. Chybějící sloupeček je problém, protože kód počítá, že tam bude a mít jiný kód pro testování a jiný pro produkci by popíralo celý smysl. Sloupeček tam chceme, potřebujeme i reálná data, jen citlivé údaje ať zobrazí jen třeba poslední 3 čísla karty, ale zbytek je za hvězdičkou.

Jak toho dosáhnout? Mohli bychom udělat skript, který bude načítat tabulku a přepisovat ji do jiné databáze  s tím, že zahvězdičkuje co potřebujeme. To je náročná čas, na datový tok a spotřebu zdrojů a peněz. Data Masking v Azure SQL tohle dokáže přímo za běhu. Nemusíte nic nikam kopírovat, stačí pro některé uživatele data schovávat a pro jiné ne.

Vyzkoušejme si Data Masking

Vytvořte si databázi v Azure a použijte vzorovou. Připojte se do DB a přidejme si jednoho nového uživatele. Použijeme contained usera (tedy existuje pouze v DB, ne v master). Přidejte ho jako read only.

 

Odpojte se od DB coby administrátor a připojte se jako tento nový uživatel. Zkuste si vypsat pár sloupců z tabulky zákazníků.

Pojďme teď zamaskovat příjmení tak, aby bylo vidět jen první písmeno. V portálu půjdeme na naší DB a záložku Dynamic Data Masking. Najděte náš sloupec a přidáme masku. Všimněte si, že můžeme vyjmenovat uživatele, kterých se maskování týkat nebude (tam ni psát nemusíme, administrátora se maskování netýká).

Nahoře klikněte na maskovací pravidlo - upravíme si ho. Zvolíme vlastní způsob maskování a to tak, že necháme první písmeno a zbytek nahradíme hvězdičkou. Nakonec nezapomeňte všechno uložit.

Vraťte se zpět do SQL Server Management Studio a vypište si data (připomínám, že jste pod účtem ctenar, tedy nikoli administrátorem).

Všechno funguje jak potřebujeme!

 

Dynamické maskování dat je velmi dobrý způsob, jak dát uživatelským účtům přístup k datovým sloupečkům, ale data v nich zamaskovat. Nic se nemusí kopírovat, vše je plně dynamické, nevznikají žádné dodatečné náklady. Pro testování aplikací myslím ideální.

 

 

 



Azure Arc pro datové služby aneb cloudová databáze ve vašem vlastním Kubernetes SQL
Azure SQL Edge - krutopřísná databáze na malině SQL
Jak funguje Managed Identity v Azure Security
Privátní leč cenově dostupná WebApp díky Private Link pro App Service v Azure Security
Bezpečnost Azure: Jak nepoužívat Service Principal díky Managed Identity a zbavit se tak čekání na ticket u vašeho enterprise IT Security