Sdílet prostřednictvím


Dynamické maskování dat v datových skladech prostředků infrastruktury

Platí pro: Koncový bod sql Analytics a sklad v Microsoft Fabric

Dynamické maskování dat omezuje vystavení citlivých dat tím, že je maskuje neprivilegovaným uživatelům. Můžete ho použít ke značnému zjednodušení návrhu a kódování zabezpečení ve vaší aplikaci.

Dynamické maskování dat pomáhá zabránit neoprávněnému prohlížení citlivých dat tím, že správcům umožňuje určit, kolik citlivých dat se má odhalit, s minimálním účinkem na aplikační vrstvu. Dynamické maskování dat lze nakonfigurovat u určených databázových polí, aby se v sadách výsledků dotazů skryla citlivá data. Při dynamickém maskování dat se data v databázi nezmění, takže je můžete použít s existujícími aplikacemi, protože se na výsledky dotazu použijí pravidla maskování. Mnoho aplikací může maskovat citlivá data beze změny existujících dotazů.

  • Zásady centrálního maskování dat fungují přímo na citlivá pole v databázi.
  • Určete privilegované uživatele nebo role, které mají přístup k citlivým datům.
  • Dynamické maskování dat obsahuje úplné maskování a částečné funkce maskování a náhodnou masku pro číselná data.
  • Jednoduché příkazy Jazyka Transact-SQL definují a spravují masky.

Účelem dynamického maskování dat je omezit vystavení citlivých dat a zabránit uživatelům, kteří by k datům neměli mít přístup. Dynamické maskování dat nemá za cíl zabránit uživatelům databáze v přímém připojení k databázi a spouštění vyčerpávajících dotazů, které zpřístupňují části citlivých dat.

Dynamické maskování dat doplňuje další funkce zabezpečení infrastruktury, jako je zabezpečení na úrovni sloupců a zabezpečení na úrovni řádků. Důrazně doporučujeme používat tyto funkce ochrany dat společně, aby bylo možné chránit citlivá data v databázi.

Definování dynamické masky dat

Pravidlo maskování lze definovat u sloupce v tabulce, aby bylo možné obfusovat data v daném sloupci. K dispozici je pět typů masek.

Function Popis Příklady
Výchozí Úplné maskování podle datových typů určených polí.

U datových typů řetězců použijte XXXX (nebo méně), pokud je velikost pole menší než 4 znaky (char, nchar, varchar, nvarchar, text, ntext).

Pro číselné datové typy použijte nulovou hodnotu (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).

U datových typů data a času použijte 1900-01-01 00:00:00.0000000 (datum, datetime2, datetime, datetimeoffset, smalldatetime, time).

Pro binární datové typy použijte jeden bajt hodnoty ASCII 0 (binární, varbinary, obrázek).
Příklad syntaxe definice sloupce: Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL

Příklad alter syntaxe: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
E-mail Metoda maskování, která zveřejňuje první písmeno e-mailové adresy a konstantní příponu ".com" ve formě e-mailové adresy. aXXX@XXXX.com. Příklad syntaxe definice: Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL

Příklad alter syntaxe: ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Náhodné Funkce náhodného maskování pro použití u libovolného číselného typu k maskování původní hodnoty s náhodnou hodnotou v zadaném rozsahu. Příklad syntaxe definice: Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])')

Příklad alter syntaxe: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Vlastní řetězec Metoda maskování, která zveřejňuje první a poslední písmena a přidá doprostřed vlastní řetězec odsazení. prefix,[padding],suffix

Pokud je původní hodnota příliš krátká k dokončení celé masky, část předpony nebo přípony není vystavena.
Příklad syntaxe definice: FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL

Příklad alter syntaxe: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

To změní telefonní číslo jako 555.123.1234 na 5XXXXXXX.

Další příklad:

ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)')

To změní telefonní číslo jako 555.123.1234 na 555.1XXXXXXX.

Další příklady najdete v tématu Implementace dynamického maskování dat ve službě Synapse Data Warehouse.

Oprávnění

Uživatelům bez oprávnění Správa, člena nebo přispěvatele v pracovním prostoru a bez zvýšených oprávnění ve skladu se zobrazí maskovaná data.

K vytvoření tabulky s dynamickou maskou dat nepotřebujete žádná zvláštní oprávnění, pouze standardní CREATE TABLE a ALTER na oprávnění schématu.

Přidání, nahrazení nebo odebrání masky sloupce vyžaduje ALTER ANY MASK oprávnění a ALTER oprávnění k tabulce. Je vhodné udělit ALTER ANY MASK bezpečnostnímu důstojníkovi.

Uživatelé s SELECT oprávněním k tabulce mohou zobrazit data tabulky. Sloupce definované jako maskované zobrazí maskovaná data. UNMASK Udělte uživateli oprávnění, aby mohl načítat nemaskovaná data ze sloupců, pro které je definované maskování.

Oprávnění CONTROL k databázi zahrnuje jak ALTER ANY MASKUNMASK oprávnění, tak i oprávnění, která uživateli umožňují zobrazit nemaskovaná data. Správa istrativní uživatelé nebo role, jako jsou Správa, člen nebo přispěvatel, mají oprávnění CONTROL k databázi záměrně a můžou ve výchozím nastavení zobrazovat nemaskovaná data. Zvýšená oprávnění pro sklad zahrnují CONTROL oprávnění.

Důležité informace o zabezpečení: Obejití maskování pomocí technik odvozování nebo hrubou silou

Dynamické maskování dat je navržené tak, aby zjednodušilo vývoj aplikací omezením vystavení dat v sadě předdefinovaných dotazů používaných aplikací. Dynamické maskování dat může být užitečné také k tomu, aby se zabránilo náhodnému vystavení citlivých dat při přímém přístupu k datům, je důležité si uvědomit, že neprivilegovaní uživatelé s oprávněními k dotazům můžou použít techniky pro získání přístupu k skutečným datům.

Představte si například uživatele, který má dostatečná oprávnění ke spouštění dotazů ve skladu, a snaží se uhodnout podkladová data a nakonec odvodit skutečné hodnoty. Předpokládejme, že máme pro sloupec definovanou masku [Employee].[Salary] a tento uživatel se připojí přímo k databázi a začne odhadovat hodnoty, nakonec odvozuje [Salary] hodnotu v Employees tabulce:

SELECT ID, Name, Salary FROM Employees
WHERE Salary > 99999 and Salary < 100001;

Výsledky:

ID Name Mzda
62543 Jane Doe 0
91245 John Smith 0

To ukazuje, že dynamické maskování dat by se nemělo používat samostatně k úplnému zabezpečení citlivých dat od uživatelů s přístupem k dotazu na koncový bod Warehouse nebo SQL Analytics. Je vhodné zabránit odhalení citlivých dat, ale nechrání před škodlivým záměrem odvodit podkladová data.

Je důležité správně spravovat zabezpečení na úrovni objektů pomocí podrobných oprávnění SQL a vždy dodržovat minimální požadovaný princip oprávnění.

Další krok