Dynamické maskování dat ve Fabric Data Warehouse

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

Dynamické maskování dat je funkce ochrany dat, která omezuje ohrožení citlivých dat maskováním pro neprivilegované uživatele. Zjednodušuje návrh a kódování zabezpečení ve vaší aplikaci.

Dynamické maskování dat pomáhá zabránit neoprávněnému zobrazení citlivých dat. Správci stanovují, kolik citlivých dat se má zveřejnit, s minimálním dopadem na aplikační vrstvu. Dynamické maskování dat u určených databázových polí můžete nakonfigurovat tak, aby v sadách výsledků dotazů skryla citlivá data. Data v databázi se nezmění, takže stávající aplikace můžou dál fungovat bez úprav, protože pravidla maskování se použijí na výsledky dotazu. Mnoho aplikací může maskovat citlivá data beze změny existujících dotazů.

Dynamické maskování dat poskytuje tyto funkce:

  • Zásady centrálního maskování dat fungují přímo na citlivá pole v databázi.
  • Privilegovaní uživatelé nebo role je možné určit pro přístup k citlivým datům.
  • Můžete si vybrat z možností maskování: úplné maskování a částečné maskování funkcí a náhodná maska pro číselná data.
  • Jednoduché příkazy Jazyka Transact-SQL definují a spravují masky.

Dynamické maskování dat nezabrání 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. Používejte dynamické maskování dat společně s dalšími funkcemi zabezpečení Fabric, jako je zabezpečení na úrovni sloupců a zabezpečení na úrovni řádků, k ochraně citlivých dat v databázi.

Funkce dynamického maskování dat

Definujte pravidlo maskování sloupce v tabulce, které obfuskuje data v daném sloupci. K dispozici jsou čtyři typy masek.

Funkce 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 syntaxe prvku alter: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
Email 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 syntaxe prvku alter: 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 syntaxe prvku alter: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Vlastní řetězec Metoda maskování, která odhaluje první a poslední písmena a uprostřed přidává vlastní vyplňovací řetězec. 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 syntaxe prvku alter: 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 v datovém skladu Fabric.

Oprávnění pro dynamické maskování dat

V Fabric Data Warehouse uvidí uživatelé maskovaná data, když se dotazují na maskované sloupce, pokud nejsou členy rolí správce, člena nebo přispěvatele v pracovním prostoru nebo nemají zvýšená oprávnění pro sklad.

Následující tabulka uvádí oprávnění požadovaná pro každou operaci dynamického maskování dat:

Operation Požadovaná oprávnění
Vytvoření tabulky s maskovanými sloupci CREATE TABLE a ALTER na schématu
Přidání, nahrazení nebo odebrání masky ve sloupci ALTER ANY MASK a ALTER na stole
Zobrazení maskovaných dat SELECT na stole
Zobrazení nemaskovaných dat UNMASK ve sloupci nebo CONTROL v databázi

Udělte ALTER ANY MASK bezpečnostnímu důstojníkovi. Udělte uživateli oprávnění UNMASK, aby tento uživatel mohl načítat nemaskovaná data z maskovaných sloupců.

Oprávnění CONTROL v databázi zahrnuje jak ALTER ANY MASK, tak UNMASK, takže uživatelé, kteří mají oprávnění CONTROL, mohou zobrazit nemaskovaná data. Správci nebo role, jako je správce, člen nebo přispěvatel, mají CONTROL oprávnění 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í.

Bezpečnostní aspekty: obejití maskování pomocí inferenčních technik nebo technik hrubé síly

Dynamické maskování dat zjednodušuje vývoj aplikací omezením vystavení dat v sadě předdefinovaných dotazů, které aplikace používá. Dynamické maskování dat sice může také pomoct zabránit náhodnému vystavení citlivých dat při přímém přístupu k datům, ale neprivilegovaní uživatelé s oprávněními k dotazům můžou použít techniky k odvození skutečných dat.

Například uživatel, který má oprávnění ke spouštění dotazů ve skladu, může odhadnout hodnoty pro odvození maskovaných dat. Předpokládejme, že definujete masku ve sloupci [Employee].[Salary] . Uživatel se připojí přímo k databázi a začne odhadovat hodnoty, nakonec odvodí [Salary] hodnotu v Employees tabulce. Provedou rozsahový dotaz nad tabulkou Employees:

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

Dotaz vrátí:

ID Name Mzda
62543 Jane Doe 0
91245 John Smith 0

I když Salary je sloupec maskovaný (hodnoty zobrazené jako 0), WHERE klauzule potvrzuje, že oba zaměstnanci mají plat mezi 99 9999 a 100 001 USD. Nepoužívejte dynamické maskování dat samotné k úplnému zabezpečení citlivých dat od uživatelů s přístupem k dotazu ke koncovému bodu Warehouse nebo SQL Analytics. Dynamické maskování dat je vhodné pro zabránění náhodnému vystavení citlivých dat, ale nechrání před škodlivým záměrem odvodit podkladová data.

Správně spravujte zabezpečení na úrovni objektů pomocí podrobných oprávnění SQL a vždy dodržujte princip nejnižší úrovně oprávnění.

Další krok