Implementace dynamického maskování dat

Dokončeno

Dynamické maskování dat funguje tak, že obfuskuje data, aby se omezila jejich expozice. Uživatelé, kteří nepotřebují zobrazit citlivá data, můžou zobrazit sloupec, který obsahuje data, ale ne samotná data. Dynamické maskování dat funguje v prezentační vrstvě a tato nemaskovaná data jsou vždy viditelná vysoce privilegovanými uživateli.

Dynamické maskování dat má výhodu, že nevyžaduje mnoho úprav aplikace nebo databáze. Můžete ho nakonfigurovat prostřednictvím webu Azure Portal nebo pomocí jazyka T-SQL následujícím způsobem.

Snímek obrazovky s dynamickými příkazy T-SQL pro maskování dat

V tomto příkladu jsou sloupce PhoneNumber i EmailAddress skryté uživateli DDMDemo , který má SELECT oprávnění pouze k tabulce. Uživatel může zobrazit poslední čtyři číslice telefonního čísla, protože je maskovaný pomocí částečné funkce, která nahradí všechny, ale poslední čtyři číslice ve sloupci. Toto maskování se považuje za vlastní funkci. Pokud používáte Azure SQL Database, můžete kromě T-SQL vytvořit pravidla dynamického maskování na webu Azure Portal:

Snímek obrazovky znázorňující přidání pravidla maskování na webu Azure Portal

Na obrazovce můžete přidat pravidlo maskování tak, že přejdete do databáze na webu Azure Portal a vyberete dynamické maskování dat v části Zabezpečení v hlavním okně vaší databáze.

Dynamické maskování dat podporuje následující vzory maskování, které lze použít:

Maskování Definice Příklad T-SQL
Výchozí Maskuje data ve sloupci bez vystavení jakékoli části hodnot uživateli. Uživatel by viděl XXXX pro řetězcové hodnoty, 0 pro čísla a 01.01.1900 pro hodnoty kalendářních dat. ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()')
Kreditní karta Maskuje všechny až poslední čtyři znaky, což uživatelům umožňuje zobrazit poslední čtyři číslice. Toto maskování může být užitečné pro agenty služeb zákazníkům, kteří potřebují zobrazit poslední čtyři číslice čísla platební karty, ale nemusí vidět celé číslo. Data se zobrazují v obvyklém formátu čísla platební karty XXXX-XXXX-XXXX-1234. ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)')
E-mail Pouze první písmeno a koncová přípona domény nejsou maskovány; například "aXXX@XXXXXXX.com" ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Číslo Tento formát maskování by se měl použít u číselných sloupců. Zobrazuje náhodné číslo jako maskovanou hodnotu místo skutečné hodnoty. Při každém dotazu se zobrazí jiné číslo. ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Vlastní řetězec Tato možnost umožňuje maskovat text s libovolnou hodnotou a zobrazit vlastní počet znaků na každém konci maskované hodnoty. Pokud je délka maskované hodnoty rovna nebo menší než počet znaků, které určuje maska, se zobrazí pouze maskované znaky. ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

Pokud chcete uživatelům povolit načtení nemaskovaných dat ze sloupců, pro které je definované maskování, musíte explicitně udělit UNMASK oprávnění.

Poznámka:

Maskovaná data je možné identifikovat pomocí odvozování na základě výsledků. Pokud používáte maskování dat, měli byste také omezit schopnost uživatele spouštět neplánované dotazy.

Z tohoto důvodu se důrazně doporučuje používat dynamické maskování dat s jinými funkcemi zabezpečení, jako je auditování, šifrování, zabezpečení na úrovni řádků, aby bylo možné lépe chránit citlivá data.

Případ použití

Maskování dat je jednoduchá a jednoduchá funkce a je ideální pro mnoho scénářů, mezi které patří:

  • Maskujte data od uživatelů aplikace, kteří nemají přímý přístup k databázi.

  • Omezení soukromých informací pro skupinu uživatelů

  • Poskytněte externím dodavatelům maskovaná data, kde potřebujete chránit citlivé informace a přitom zachovat vztahy mezi položkami v datech.

  • Exportujte kopii produkční databáze do nižšího prostředí pro účely vývoje s uživatelem, který nemá UNMASK oprávnění. Export dat bude v maskované podobě.

Import a export dat

Kopírování dat z maskovaného sloupce do jiné tabulky nebo SELECT INTOINSERT INTO výsledkem je maskovaná data v cílové tabulce.

Když uživatel bez UNMASK oprávnění spustí import a export SQL Serveru, exportovaný datový soubor obsahuje maskovaná data a importovaná databáze bude obsahovat neaktivní maskovaná data.

Další informace o tom, jak dynamické maskování dat funguje, najdete v tématu Dynamické maskování dat.