Dynamiczne maskowanie danych

Dotyczy: Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (tylko dedykowane pule SQL)

Usługi Azure SQL Database, Azure SQL Managed Instance i Azure Synapse Analytics obsługują dynamiczne maskowanie danych. Dynamiczne maskowanie danych ogranicza ujawnianie danych poufnych, maskując je w przypadku użytkowników bez uprawnień.

Dynamiczne maskowanie danych pomaga zapobiegać nieautoryzowanemu dostępowi do poufnych danych, umożliwiając klientom wyznaczenie ilości poufnych danych do ujawnienia przy minimalnym wpływie na warstwę aplikacji. Jest to funkcja zabezpieczeń oparta na zasadach, która ukrywa poufne dane w zestawie wyników zapytania względem wyznaczonych pól bazy danych, podczas gdy dane w bazie danych nie są zmieniane.

Na przykład przedstawiciel usługi w centrum obsługi może zidentyfikować rozmówcę, potwierdzając kilka znaków swojego adresu e-mail, ale pełny adres e-mail nie powinien być ujawniany przedstawicielowi usługi. Regułę maskowania można zdefiniować, która maskuje wszystkie adresy e-mail w zestawie wyników dowolnego zapytania. W innym przykładzie można zdefiniować odpowiednią maskę danych w celu ochrony danych osobowych, aby deweloper mógł wysyłać zapytania do środowisk produkcyjnych w celu rozwiązywania problemów bez naruszania przepisów dotyczących zgodności.

Podstawy dynamicznego maskowania danych

Zasady dynamicznego maskowania danych można skonfigurować w witrynie Azure Portal, wybierając okienko Dynamiczne maskowanie danych w obszarze Zabezpieczenia w okienku konfiguracji usługi SQL Database. Nie można ustawić tej funkcji przy użyciu portalu dla usługi SQL Managed Instance. Aby uzyskać więcej informacji, zobacz Dynamiczne maskowanie danych.

Zasady dynamicznego maskowania danych

  • Użytkownicy SQL wykluczeni z maskowania: zestaw użytkowników SQL, który może zawierać tożsamości z usługi Microsoft Entra ID (dawniej Azure Active Directory), które pobierają niemaskowane dane w wynikach zapytania SQL. Użytkownicy z uprawnieniami administracyjnymi, takimi jak administrator serwera, administrator firmy Microsoft Entra i rola db_owner mogą wyświetlać oryginalne dane bez żadnej maski. (Uwaga: dotyczy również roli sysadmin w programie SQL Server)
  • Reguły maskowania: zestaw reguł, które definiują wyznaczone pola do maskowania i używaną funkcję maskowania. Wyznaczone pola można zdefiniować przy użyciu nazwy schematu bazy danych, nazwy tabeli i nazwy kolumny.
  • Funkcje maskowania: zestaw metod kontrolujących narażenie danych na różne scenariusze.
Funkcja maskowania Logika maskowania
Wartość domyślna Pełne maskowanie zgodnie z typami danych wyznaczonych pól

* Użyj XXXX (lub mniej), jeśli rozmiar pola jest mniejszy niż 4 znaki dla typów danych ciągów (nchar, ntext, nvarchar).
* Użyj wartości zerowej dla typów danych liczbowych (bigint, bit, dziesiętny, int, pieniądze, liczbowe, smallint, smallmoney, tinyint, float, real).
* Użyj 1900-01-01 dla typów danych daty/godziny (data, data/godzina2, data/godzina, datetimeoffset, smalldatetime, godzina).
* Dla sql_variant jest używana wartość domyślna bieżącego typu.
* W przypadku kodu XML dokument <masked /> jest używany.
* Użyj pustej wartości dla specjalnych typów danych (sygnatura czasowa, tabela, HierarchyID, uniqueidentifier, binarny, obraz, varbinary i typy przestrzenne).
Karta kredytowa Metoda maskowania, która uwidacznia ostatnie cztery cyfry wyznaczonych pól i dodaje ciąg stały jako prefiks w postaci karty kredytowej.

XXXX-XXXX-XXXX-1234
Poczta e-mail Metoda maskowania, która uwidacznia pierwszą literę i zastępuje domenę XXX.com przy użyciu stałego prefiksu ciągu w postaci adresu e-mail.

aXX@XXXX.com
Liczba losowa Metoda maskowania, która generuje liczbę losową zgodnie z wybranymi granicami i rzeczywistymi typami danych. Jeśli wyznaczone granice są równe, funkcja maskowania jest liczbą stałą.

Zrzut ekranu przedstawiający metodę maskowania do generowania liczby losowej.
Tekst niestandardowy Metoda maskowania, która uwidacznia pierwsze i ostatnie znaki i dodaje niestandardowy ciąg dopełniania w środku. Jeśli oryginalny ciąg jest krótszy niż uwidoczniony prefiks i sufiks, używany jest tylko ciąg wypełnienia.

prefix[padding]suffix

Zrzut ekranu przedstawiający okienko nawigacji.

Aparat rekomendacji DDM flaguje niektóre pola z bazy danych jako potencjalnie poufne pola, które mogą być dobrymi kandydatami do maskowania. W okienku Dynamiczne maskowanie danych w portalu zobaczysz zalecane kolumny dla bazy danych. Wybierz pozycję Dodaj maskę dla co najmniej jednej kolumny, a następnie wybierz odpowiednią funkcję maskowania i wybierz pozycję Zapisz, aby zastosować maskę dla tych pól.

Zarządzanie dynamicznym maskowaniem danych przy użyciu języka T-SQL

Konfigurowanie dynamicznego maskowania danych dla bazy danych przy użyciu poleceń cmdlet programu PowerShell

Zasady maskowania danych

Reguły maskowania danych

Konfigurowanie dynamicznego maskowania danych dla bazy danych przy użyciu interfejsu API REST

Interfejs API REST umożliwia programowe zarządzanie zasadami i regułami maskowania danych. Opublikowany interfejs API REST obsługuje następujące operacje:

Zasady maskowania danych

Reguły maskowania danych

Uprawnienia

Są to wbudowane role do konfigurowania dynamicznego maskowania danych:

Są to akcje wymagane do korzystania z dynamicznego maskowania danych:

Odczyt/zapis:

  • Microsoft.Sql/servers/databases/dataMaskingPolicies/*

Odczyt:

  • Microsoft.Sql/servers/databases/dataMaskingPolicies/read

Napisz:

  • Microsoft.Sql/servers/databases/dataMaskingPolicies/write

Aby dowiedzieć się więcej o uprawnieniach podczas korzystania z dynamicznego maskowania danych za pomocą polecenia T-SQL, zobacz Uprawnienia

Przykład szczegółowych uprawnień

Zapobiegaj nieautoryzowanemu dostępowi do poufnych danych i przejmij kontrolę, maskując go nieautoryzowanemu użytkownikowi na różnych poziomach bazy danych. Możesz przyznać lub odwołać uprawnienia UNMASK na poziomie bazy danych, na poziomie schematu, na poziomie tabeli lub na poziomie kolumny do dowolnego użytkownika lub roli bazy danych. W połączeniu z uwierzytelnianiem entra firmy Microsoft uprawnienia UNMASK można zarządzać dla użytkowników, grup i aplikacji przechowywanych w środowisku platformy Azure. Uprawnienie UNMASK zapewnia szczegółowy sposób kontrolowania i ograniczania nieautoryzowanego dostępu do danych przechowywanych w bazie danych oraz ulepszania zarządzania zabezpieczeniami danych.

  1. Utwórz schemat zawierający tabele użytkowników:

    CREATE SCHEMA Data;
    GO
    
  2. Utwórz tabelę z zamaskowanych kolumn:

    CREATE TABLE Data.Membership (
        MemberID INT IDENTITY(1, 1) NOT NULL,
        FirstName VARCHAR(100) MASKED WITH (FUNCTION = 'partial(1, "xxxxx", 1)') NULL,
        LastName VARCHAR(100) NOT NULL,
        Phone VARCHAR(12) MASKED WITH (FUNCTION = 'default()') NULL,
        Email VARCHAR(100) MASKED WITH (FUNCTION = 'email()') NOT NULL,
        DiscountCode SMALLINT MASKED WITH (FUNCTION = 'random(1, 100)') NULL,
        BirthDay DATETIME MASKED WITH (FUNCTION = 'default()') NULL
    );
    
  3. Wstaw przykładowe dane:

    INSERT INTO Data.Membership (FirstName, LastName, Phone, Email, DiscountCode, BirthDay)
    VALUES
    ('Roberto', 'Tamburello', '555.123.4567', 'RTamburello@contoso.com', 10, '1985-01-25 03:25:05'),
    ('Janice', 'Galvin', '555.123.4568', 'JGalvin@contoso.com.co', 5, '1990-05-14 11:30:00'),
    ('Shakti', 'Menon', '555.123.4570', 'SMenon@contoso.net', 50, '2004-02-29 14:20:10'),
    ('Zheng', 'Mu', '555.123.4569', 'ZMu@contoso.net', 40, '1990-03-01 06:00:00');
    
  4. Utwórz schemat zawierający tabele usług:

    CREATE SCHEMA Service;
    GO
    
  5. Utwórz tabelę usług z zamaskowanych kolumn:

    CREATE TABLE Service.Feedback (
        MemberID INT IDENTITY(1, 1) NOT NULL,
        Feedback VARCHAR(100) MASKED WITH (FUNCTION = 'default()') NULL,
        Rating INT MASKED WITH (FUNCTION = 'default()'),
        Received_On DATETIME
    );
    
  6. Wstaw przykładowe dane:

    INSERT INTO Service.Feedback (Feedback, Rating, Received_On)
    VALUES
        ('Good', 4, '2022-01-25 11:25:05'),
        ('Excellent', 5, '2021-12-22 08:10:07'),
        ('Average', 3, '2021-09-15 09:00:00');
    
  7. Utwórz różnych użytkowników w bazie danych:

    CREATE USER ServiceAttendant WITHOUT LOGIN;
    GO
    
    CREATE USER ServiceLead WITHOUT LOGIN;
    GO
    
    CREATE USER ServiceManager WITHOUT LOGIN;
    GO
    
    CREATE USER ServiceHead WITHOUT LOGIN;
    GO
    
  8. Udziel uprawnień do odczytu użytkownikom w bazie danych:

    ALTER ROLE db_datareader ADD MEMBER ServiceAttendant;
    
    ALTER ROLE db_datareader ADD MEMBER ServiceLead;
    
    ALTER ROLE db_datareader ADD MEMBER ServiceManager;
    
    ALTER ROLE db_datareader ADD MEMBER ServiceHead;
    
  9. Udziel innym użytkownikom uprawnień UNMASK:

    --Grant column level UNMASK permission to ServiceAttendant
    GRANT UNMASK ON Data.Membership(FirstName) TO ServiceAttendant;
    
    -- Grant table level UNMASK permission to ServiceLead
    GRANT UNMASK ON Data.Membership TO ServiceLead;
    
    -- Grant schema level UNMASK permission to ServiceManager
    GRANT UNMASK ON SCHEMA::Data TO ServiceManager;
    GRANT UNMASK ON SCHEMA::Service TO ServiceManager;
    
    --Grant database level UNMASK permission to ServiceHead;
    GRANT UNMASK TO ServiceHead;
    
  10. Wykonaj zapytanie o dane w kontekście użytkownika ServiceAttendant:

    EXECUTE AS USER = 'ServiceAttendant';
    
    SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay
    FROM Data.Membership;
    
    SELECT MemberID, Feedback, Rating
    FROM Service.Feedback;
    
    REVERT;
    
  11. Wykonaj zapytanie o dane w kontekście użytkownika ServiceLead:

    EXECUTE AS USER = 'ServiceLead';
    
    SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay
    FROM Data.Membership;
    
    SELECT MemberID, Feedback, Rating
    FROM Service.Feedback;
    
    REVERT;
    
  12. Wykonaj zapytanie o dane w kontekście użytkownika ServiceManager:

    EXECUTE AS USER = 'ServiceManager';
    
    SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay
    FROM Data.Membership;
    
    SELECT MemberID, Feedback, Rating
    FROM Service.Feedback;
    
    REVERT;
    
  13. Wykonywanie zapytań dotyczących danych w kontekście użytkownika ServiceHead

    EXECUTE AS USER = 'ServiceHead';
    
    SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay
    FROM Data.Membership;
    
    SELECT MemberID, Feedback, Rating
    FROM Service.Feedback;
    
    REVERT;
    
  14. Aby odwołać uprawnienia UNMASK, użyj następujących instrukcji języka T-SQL:

    REVOKE UNMASK ON Data.Membership(FirstName) FROM ServiceAttendant;
    
    REVOKE UNMASK ON Data.Membership FROM ServiceLead;
    
    REVOKE UNMASK ON SCHEMA::Data FROM ServiceManager;
    
    REVOKE UNMASK ON SCHEMA::Service FROM ServiceManager;
    
    REVOKE UNMASK FROM ServiceHead;