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í.

 

 

 



Cloud-native Palo Alto firewall jako služba pro Azure Virtual WAN Security
Federované workload identity v AKS - preview bezpečného řešení pro autentizaci služeb bez hesel Security
Azure Firewall Basic - levnější bráška pro malá prostředí nebo distribuované IT Security
Datové hřiště - jak si hrát s daty bez sebemenšího kliknutí s Terraform a Azure SQL
Nativní Azure Monitor a Microsoft Sentinel nově umí levnější logy a zabudovanou levnější archivaci - praxe (část 2) Security