Data masking je funkce, která umožňuje úplně nebo částečně zamaskovat zvolená data v databázi. Povolení přístupu k odmaskování dat je možné rovněž přidělovat a odebírat jednotlivým userům. Maskování a anonymizace dat je v poslední době poměrně aktuální téma (s příchodem GDPR nařízení Evropské komise) kdy je potřeba ochraně osobních údajů věnovat větší pozornost.

Featura je dostupná ve verzích SQL Server 2016 a novějších. Krátce jsem tuto funkci již zmínil při představení novinek SQL Server 2016 a nyní tuto featuru představím podroněji.

Jak Data Masking Funguje?

Maskování v SQL Server je vcelku jednoduché. Narozdíl od Row level security, kdy řídíme přístupová oprávnění na úrovni jednotlivých řádků v tabulce, je data masking zaměřen na celé sloupce. Nad daným sloupcem provedeme maskování pomocí tzv. maskovací funkce a jako další krok můžeme umožnit odmaskování dat jednotlivým uživatelům. V kostce je postup je následující:

  • Identifikujeme sloupce v jednotlivých tabulkách které chceme maskovat
  • Nad danými sloupci provedeme zamaskování. Na výběr máme 4 typy maskování
    • default – hodnota atributu je zobrazena jako “XXX”
    • email – email je zobrazen jako GXXXXX@XXX.com
    • partial – zvolíme počet a pozici znaků, které mají být maskovány
    • random – používá se k maskování číselných hodnot kdy je jako maskování zvolena náhodná číselná hodnota ze zvoleného rozmezí
  • Pokud je potřeba data určitým uživatelům odmaskovat, tak přidělíme UNMASK práva

Privilegovaným userům (sysadmins, db_owner) se data zobrazují vždy nemaskovaná. Se zamaskovanými daty je možné provádět všechny operace jako dříve, např filtrování, atd.

Maskování a Odmaskování Sloupce – MASKED WITH

Maskování nad určitým atributem provedeme SQL skriptem viz níže. Data nad daným sloupcem poté budou vidět jako XXX

ALTER TABLE Zamestnanci
ALTER COLUMN Prijmeni_Zamestnance VARCHAR(255) MASKED WITH (FUNCTION = ‘default()’); 

Odmaskování sloupce.

ALTER TABLE Zamestnanci
ALTER COLUMN Prijmeni_Zamestnance VARCHAR(255) DROP MASKED; 

Přidělení a Odebrání Práv na Odmaskování Dat – GRANT/REVOKE UNMASK

Umožnění uživateli nebo roli vidět odmaskovaná data

GRANT UNMASK TO <user>;

Odebrání práv

REVOKE UNMASK TO <user>;

Práva se přidělují nebo odebírají nad celou databází. Nelze si vybrat objekt nebo sloupce pro který chceme práva řídit. Data jsou tedy pro daného usera zamaskovaná nebo odmaskovaná pro všechny objekty v dané databázi!!

Pokud chceme řešit možnost vidět/nevidět data u jednotlivých sloupců, tak musíme využít klasického řízení přístupů, v tomto případě Column level permissions – podrobnosti např zde.

 

5/5 - (2 votes)

Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

🔥 Přihlašte se do naší Excel facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published. Required fields are marked *