Dynamiczne maskowanie danych w magazynowaniu danych w sieci szkieletowej

Dotyczy: punkt końcowy analizy SQL i magazyn w usłudze Microsoft Fabric

Dynamiczne maskowanie danych ogranicza narażenie poufnych danych przez maskowanie ich dla użytkowników nieuprzywilejowanych. Może znacznie uprościć projektowanie i kodowanie zabezpieczeń w aplikacji.

Dynamiczne maskowanie danych pomaga zapobiegać nieautoryzowanemu wyświetlaniu poufnych danych, umożliwiając administratorom określenie, ile poufnych danych ma być ujawnianych, przy minimalnym wpływie na warstwę aplikacji. Dynamiczne maskowanie danych można skonfigurować w wyznaczonych polach bazy danych w celu ukrycia poufnych danych w zestawach wyników zapytań. W przypadku dynamicznego maskowania danych dane w bazie danych nie są zmieniane, więc można ich używać z istniejącymi aplikacjami, ponieważ reguły maskowania są stosowane do wyników zapytań. Wiele aplikacji może maskować poufne dane bez modyfikowania istniejących zapytań.

  • Centralne zasady maskowania danych działają bezpośrednio na polach poufnych w bazie danych.
  • Wyznaczanie uprzywilejowanych użytkowników lub ról, którzy mają dostęp do poufnych danych.
  • Dynamiczne maskowanie danych zapewnia pełne funkcje maskowania i częściowego maskowania oraz losową maskę dla danych liczbowych.
  • Proste polecenia języka Transact-SQL definiują maski i zarządzają nimi.

Celem dynamicznego maskowania danych jest ograniczenie ujawnienia poufnych danych, co uniemożliwia użytkownikom, którzy nie powinni mieć dostępu do danych. Dynamiczne maskowanie danych nie ma na celu uniemożliwienia użytkownikom bazy danych bezpośredniego łączenia się z bazą danych i uruchamiania wyczerpujących zapytań, które uwidaczniają fragmenty poufnych danych.

Dynamiczne maskowanie danych stanowi uzupełnienie innych funkcji zabezpieczeń sieci szkieletowej, takich jak zabezpieczenia na poziomie kolumny i zabezpieczenia na poziomie wiersza. Zdecydowanie zaleca się używanie tych funkcji ochrony danych razem w celu ochrony poufnych danych w bazie danych.

Definiowanie dynamicznej maski danych

Regułę maskowania można zdefiniować w kolumnie w tabeli, aby zaciemnić dane w tej kolumnie. Dostępnych jest pięć typów masek.

Function opis Przykłady
Wartość domyślna Pełne maskowanie zgodnie z typami danych wyznaczonych pól.

W przypadku typów danych ciągów użyj XXXX wartości (lub mniejszej), jeśli rozmiar pola jest mniejszy niż 4 znaki (char, nchar, varchar, nvarchar, text, ntext).

W przypadku typów danych liczbowych użyj wartości zerowej (bigint, bit, dziesiętny, int, pieniądze, liczbowe, smallint, smallmoney, tinyint, float, real).

W przypadku typów danych daty i godziny użyj wartości (date, datetime2, datetime, datetimeoffset, smalldatetime, time). 1900-01-01 00:00:00.0000000

W przypadku typów danych binarnych użyj pojedynczego bajtu wartości ASCII 0 (binarne, varbinary, image).
Przykładowa składnia definicji kolumny: Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL

Przykład składni zmiany: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
Email Metoda maskowania, która uwidacznia pierwszą literę adresu e-mail i stały sufiks ".com", w postaci adresu e-mail. aXXX@XXXX.com. Przykładowa składnia definicji: Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL

Przykład składni zmiany: ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Losowe Funkcja maskowania losowego do użycia w dowolnym typie liczbowym do maskowania oryginalnej wartości z losową wartością w określonym zakresie. Przykładowa składnia definicji: Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])')

Przykład składni zmiany: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Ciąg niestandardowy Metoda maskowania, która uwidacznia pierwsze i ostatnie litery i dodaje niestandardowy ciąg dopełniania w środku. prefix,[padding],suffix

Jeśli oryginalna wartość jest zbyt krótka, aby ukończyć całą maskę, część prefiksu lub sufiksu nie jest widoczna.
Przykładowa składnia definicji: FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL

Przykład składni zmiany: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

Spowoduje to zmianę numeru telefonu, takiego jak 555.123.1234 w .5XXXXXXX

Dodatkowy przykład:

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

Spowoduje to zmianę numeru telefonu, takiego jak 555.123.1234 w .555.1XXXXXXX

Aby uzyskać więcej przykładów, zobacz Jak zaimplementować dynamiczne maskowanie danych w usłudze Synapse Data Warehouse.

Uprawnienia

Użytkownicy bez uprawnień Administracja istratora, członka lub współautora w obszarze roboczym i bez podniesionych uprawnień w magazynie będą widzieć maskowane dane.

Nie potrzebujesz żadnych specjalnych uprawnień do tworzenia tabeli z dynamiczną maską danych, tylko uprawnieniami standardu CREATE TABLE i ALTER schematu.

Dodanie, zastąpienie lub usunięcie maski kolumny wymaga ALTER ANY MASK uprawnień i ALTER uprawnień w tabeli. Należy przyznać ALTER ANY MASK funkcjonariuszowi ochrony.

Użytkownicy z uprawnieniami SELECT do tabeli mogą wyświetlać dane tabeli. Kolumny zdefiniowane jako maskowane będą wyświetlać dane maskowane. Udziel użytkownikowi UNMASK uprawnień, aby umożliwić im pobieranie niemaskowanych danych z kolumn, dla których zdefiniowano maskowanie.

Uprawnienie CONTROL do bazy danych obejmuje uprawnienia ALTER ANY MASK i UNMASK , które umożliwiają użytkownikowi wyświetlanie niemaskowanych danych. Administracja ustrojeni użytkownicy lub role, takie jak Administracja, Członek lub Współautor, mają uprawnienia CONTROL do bazy danych zgodnie z projektem i mogą domyślnie wyświetlać niezamaskowane dane. Uprawnienia z podwyższonym poziomem uprawnień w magazynie obejmują CONTROL uprawnienia.

Zagadnienia dotyczące zabezpieczeń: pomijanie maskowania przy użyciu technik wnioskowania lub ataków siłowych

Dynamiczne maskowanie danych zostało zaprojektowane w celu uproszczenia tworzenia aplikacji przez ograniczenie narażenia na dane w zestawie wstępnie zdefiniowanych zapytań używanych przez aplikację. Chociaż dynamiczne maskowanie danych może być również przydatne, aby zapobiec przypadkowemu narażeniu poufnych danych podczas bezpośredniego uzyskiwania dostępu do danych, należy pamiętać, że nieuprzywilejowani użytkownicy z uprawnieniami do zapytań mogą stosować techniki uzyskiwania dostępu do rzeczywistych danych.

Rozważmy na przykład użytkownika, który ma wystarczające uprawnienia do uruchamiania zapytań w magazynie, i próbuje "odgadnąć" bazowe dane i ostatecznie wywnioskować rzeczywiste wartości. Załóżmy, że mamy maskę zdefiniowaną w [Employee].[Salary] kolumnie, a ten użytkownik łączy się bezpośrednio z bazą danych i zaczyna odgadywać wartości, ostatecznie wywnioskując [Salary] wartość w Employees tabeli:

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

Wyniki:

IDENTYFIKATOR Nazwisko Wynagrodzenie
62543 Jane Doe 0
91245 John Smith 0

Pokazuje to, że dynamiczne maskowanie danych nie powinno być używane samodzielnie w celu pełnego zabezpieczenia poufnych danych od użytkowników z dostępem zapytań do punktu końcowego magazynu lub analizy SQL. Jest to odpowiednie do zapobiegania ujawnieniu poufnych danych, ale nie chroni przed złośliwym zamiarem wnioskowania bazowych danych.

Ważne jest, aby prawidłowo zarządzać zabezpieczeniami na poziomie obiektu przy użyciu szczegółowych uprawnień SQL i zawsze przestrzegać minimalnej wymaganej zasady uprawnień.

Następny krok