Zdieľať cez


Dynamické maskovanie údajov v sklade údajov služby Fabric

Vzťahuje sa na:✅ koncový bod analýzy SQL a sklad v službe Microsoft Fabric

Dynamické maskovanie údajov obmedzuje expozíciu citlivých údajov tým, že ich maskuje znevýhodneným používateľom. Možno ho použiť na výrazné zjednodušenie návrhu a kódovania zabezpečenia vo vašej aplikácii.

Dynamické maskovanie údajov pomáha zabrániť neoprávnenému zobrazeniu citlivých údajov tým, že správcom umožňuje určiť, koľko citlivých údajov sa má zobraziť, s minimálnym vplyvom na vrstvu aplikácie. Dynamické maskovanie údajov je možné nakonfigurovať v určených databázových poliach na skrytie citlivých údajov vo výsledných množinách dotazov. Pri dynamickom maskovaní údajov sa údaje v databáze nezmenia, takže sa môžu použiť v existujúcich aplikáciách, pretože na výsledky dotazu sa použijú pravidlá maskovania. Mnohé aplikácie môžu maskovať citlivé údaje bez toho, aby upravovali existujúce dotazy.

  • Politika centrálneho maskovania údajov funguje priamo na citlivých poliach v databáze.
  • Môžete určiť privilegovaných používateľov alebo roly, ktoré majú prístup k citlivým údajom.
  • Dynamické maskovanie údajov je vybavené úplnými maskovaním a funkciami čiastočného maskovania a náhodnou maskou číselných údajov.
  • Jednoduché príkazy Transact-SQL definujú a spravujú masky.

Účelom dynamického maskovania údajov je obmedziť vystavenie citlivých údajov, čím sa zabráni používateľom, ktorí by nemali mať prístup k údajom v ich zobrazení. Dynamické maskovanie údajov nemá za cieľ zabrániť používateľom databázy pripojiť sa priamo k databáze a spúšťať vyčerpávajúce dotazy, ktoré odhaľujú časti citlivých údajov.

Dynamické maskovanie údajov je doplnkom k ďalším funkciám zabezpečenia služby Fabric, ako je napríklad zabezpečenie na úrovni stĺpca a zabezpečenie na úrovni riadkov. Na ochranu citlivých údajov v databáze sa dôrazne odporúča používať tieto funkcie ochrany údajov.

Definovanie dynamickej masky údajov

Pre stĺpec v tabuľke možno definovať pravidlo pre maskovanie, aby sa údaje v danom stĺpci zakryli. K dispozícii sú štyri typy mask.

Function Description Príklady
Predvolené Úplné maskovanie podľa typov údajov určených polí.

Pre typy údajov reťazca použite XXXX (alebo menej), ak je veľkosť poľa menšia ako 4 znaky (char, nchar, varchar, nvarchar, text, ntext).

Pri číselných typoch údajov sa používa nulová hodnota (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).

Pre typy údajov dátumu a času použite 1900-01-01 00:00:00.0000000 hodnotu (dátum, datetime2, datetime, datetimeoffset, smalldatetime, čas).

Pre binárne typy údajov použite jeden bajt hodnoty ASCII 0 (binárny, varbinárny, obrázok).
Príklad syntaxe definície stĺpca: Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL

Príklad alter syntaxe: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
E-mail Metóda maskovania, ktorá sprístupňuje prvé písmeno e-mailovej adresy a konštantnú príponu ".com", vo forme e-mailovej adresy. aXXX@XXXX.com. Syntax definície príkladu: Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL

Príklad alter syntaxe: ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Náhodný Náhodná funkcia maskovania určená na použitie s ľubovoľným číselným typom na zamaskovanie pôvodnej hodnoty náhodnou hodnotou v zadanom rozsahu. Syntax definície príkladu: Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])')

Príklad alter syntaxe: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Vlastný reťazec Metóda maskovania, ktorá sprístupňuje prvé a posledné písmená a pridá do stredu vlastný odsadený reťazec. prefix,[padding],suffix

Ak je pôvodná hodnota príliš krátka na dokončenie celej masky, časť predpony alebo prípony sa nezobrazuje.
Syntax definície príkladu: FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL

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

Takto sa zmení telefónne číslo na 555.123.1234 5XXXXXXX.

Ďalší príklad:

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

Takto sa zmení telefónne číslo na 555.123.1234 555.1XXXXXXX.

Ďalšie príklady nájdete v téme Implementácia dynamického maskovania údajov v službe Synapse Data Warehouse.

Povolenia

Používateľom bez práv správca, člen alebo prispievateľ v pracovnom priestore a bez zvýšených povolení v sklade sa zobrazia maskované údaje.

Ak chcete vytvoriť tabuľku s dynamickou maskou údajov, len štandardnú hodnotu CREATE TABLE a ALTER povolenia schémy, nepotrebujete žiadne špeciálne povolenie.

Pridanie, nahradenie alebo odstránenie masky stĺpca vyžaduje ALTER ANY MASK povolenie a ALTER povolenie v tabuľke. Je vhodné poskytnúť ALTER ANY MASK to bezpečnostnému dôstojníkovi.

Používatelia s SELECT povolením pre tabuľku môžu zobraziť údaje tabuľky. Stĺpce, ktoré sú definované ako maskované, budú zobrazovať maskované údaje. UNMASK Udeľte povolenie používateľovi, aby mohol načítať nezoradené údaje zo stĺpcov, pre ktoré je definované maskovanie.

Povolenie CONTROL v databáze zahŕňa ALTER ANY MASK povolenie a UNMASK , ktoré používateľovi umožňuje zobraziť nezoskryné údaje. Správcovia používatelia alebo roly, ako napríklad správca, člen alebo prispievateľ, majú v databáze predvolene povolenie na ovládanie a predvolene môžu zobrazovať nezoradené údaje. Zvýšené povolenia v sklade obsahujú CONTROL povolenie.

Bezpečnostné hľadisko: obchádzanie maskovania pomocou metód inferencie alebo brute-force

Dynamické maskovanie údajov je navrhnuté tak, aby zjednodušili vývoj aplikácií obmedzením expozície údajov v množine preddefinovaných dotazov používaných aplikáciou. Hoci dynamické maskovanie údajov môže byť užitočné aj na to, aby sa zabránilo náhodnému vystaveniu citlivých údajov pri priamom prístupe k údajom, je dôležité poznamenať, že znevýhodnený používatelia s povoleniami na dotazovanie môžu použiť techniky na získanie prístupu k skutočným údajom.

Predstavte si napríklad používateľa, ktorý má dostatočné oprávnenia na spúšťanie dotazov v sklade, a snaží sa "odhadnúť" základné údaje a nakoniec odvodiť skutočné hodnoty. Predpokladajme, že v stĺpci je definovaná [Employee].[Salary] maska a tento používateľ sa pripojí priamo k databáze a začne odhadovať hodnoty a nakoniec odvodí [Salary] hodnotu v tabuľke Employees :

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

Výsledkom je:

ID Meno Plat
62543 Jane Doe 0
91245 Ján Kováč 0

To ukazuje, že dynamické maskovanie údajov by sa nemalo používať samostatne na úplné zabezpečenie citlivých údajov od používateľov s prístupom dotazov k koncovému bodu analýzy Warehouse alebo SQL. Je vhodné, ak chcete predísť vystaveniu citlivým údajom, ale neochráni sa pred škodlivým zámerom odvodiť základné údaje.

Je dôležité správne spravovať zabezpečenie na úrovni objektu s podrobnými povoleniami SQL a vždy dodržiavať minimálnu zásadu požadovaných povolení.

Ďalší krok