Dynamic data masking

A következőre vonatkozik: Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (csak dedikált SQL-készletek)

Az Azure SQL Database, az Azure SQL Managed Instance és az Azure Synapse Analytics támogatja a dinamikus adatmaszkolást. A dinamikus adatmaszkolás korlátozza az érzékeny adatok expozícióját azáltal, hogy elrejti azokat a nem privilegizált felhasználók számára.

A dinamikus adatmaszkolás segít megelőzni a bizalmas adatokhoz való jogosulatlan hozzáférést azáltal, hogy lehetővé teszi az ügyfelek számára, hogy a bizalmas adatok minimális hatással legyen az alkalmazásrétegre. Ez egy szabályzatalapú biztonsági funkció, amely elrejti a bizalmas adatokat a lekérdezés eredményhalmazában a kijelölt adatbázismezőkben, miközben az adatbázisban lévő adatok nem változnak.

Előfordulhat például, hogy egy ügyfélszolgálati munkatárs az e-mail-cím több karakterének megerősítésével azonosítja a hívót, de a teljes e-mail-címet nem szabad felfedni a szolgáltatás képviselőjének. Definiálható maszkolási szabály, amely minden lekérdezés eredményhalmazában elfedi az összes e-mail-címet. Egy másik példaként meg lehet határozni egy megfelelő adatmaszkot a személyes adatok védelméhez, hogy a fejlesztő hibaelhárítási célokból lekérdezhesse az éles környezeteket anélkül, hogy megsértené a megfelelőségi előírásokat.

A dinamikus adatmaszkolás alapjai

Dinamikus adatmaszkolási szabályzatot állíthat be az Azure Portalon az SQL Database konfigurációs panelJének Biztonság területén található Dinamikus adatmaszkolás panel kiválasztásával. Ez a funkció nem állítható be a felügyelt SQL-példányok portálján. További információ: Dinamikus adatmaszkolás.

Dynamic data masking policy

  • A maszkolásból kizárt SQL-felhasználók: Sql-felhasználók egy készlete, amely tartalmazhat a Microsoft Entra-azonosítóból (korábban Azure Active Directory) származó identitásokat, amelyek az SQL-lekérdezés eredményeiben nem maszkolt adatokat kapnak. Az olyan rendszergazdai jogosultságokkal rendelkező felhasználók, mint a kiszolgálóadminisztrátor, a Microsoft Entra rendszergazda és db_owner szerepkörrel rendelkező felhasználók maszk nélkül tekinthetik meg az eredeti adatokat. (Megjegyzés: Az SQL Server sysadmin szerepkörére is vonatkozik)
  • Maszkoló szabályok: A maszkolandó mezőket és a használt maszkoló függvényt meghatározó szabályok készlete. The designated fields can be defined using a database schema name, table name, and column name.
  • Maszkoló függvények: Különböző forgatókönyvek adatexpozícióját szabályozó módszerek készlete.
Maszkoló függvény Maszkoló logika
Alapértelmezett Teljes maszkolás a kijelölt mezők adattípusainak megfelelően

* Használja XXXX (vagy kevesebb) ha a mező mérete kevesebb, mint 4 karakter sztring adattípusok (nchar, ntext, nvarchar).
* Használjon nulla értéket numerikus adattípusokhoz (bigint, bit, decimális, int, pénz, numerikus, smallint, smallmoney, tinyint, float, real).
* Dátum/idő adattípusokhoz (dátum, datetime2, datetime, datetimeoffset, smalldatetime, time) használható1900-01-01.
* A sql_variant esetében a rendszer az aktuális típus alapértelmezett értékét használja.
* XML esetén a dokumentumot használja a rendszer <masked /> .
* Használjon üres értéket speciális adattípusokhoz (időbélyeg, táblázat, hierarchiaazonosító, uniqueidentifier, bináris, kép, varbináris és térbeli típusok).
Hitelkártya Maszkolásos módszer, amely a kijelölt mezők utolsó négy számjegyét teszi elérhetővé, és egy állandó sztringet ad hozzá előtagként hitelkártya formájában.

XXXX-XXXX-XXXX-1234
E-mail Maszkolásos módszer, amely az első betűt teszi elérhetővé, és a tartományt XXX.com helyettesíti egy állandó sztringelőtag használatával e-mail-cím formájában.

aXX@XXXX.com
Véletlenszerű szám Maszkolásos módszer, amely véletlenszerű számot hoz létre a kijelölt határok és a tényleges adattípusok alapján. Ha a kijelölt határok egyenlők, akkor a maszkoló függvény állandó szám.

Screenshot that shows the masking method for generating a random number.
Egyéni szöveg Maszkolásos módszer, amely az első és az utolsó karaktert teszi elérhetővé, és középen hozzáad egy egyéni kitöltési sztringet. Ha az eredeti sztring rövidebb, mint a közzétett előtag és utótag, akkor csak a kitöltési sztring lesz használva.

prefix[padding]suffix

Screenshot of the navigation pane.

A DDM javaslati motorja az adatbázis bizonyos mezőit potenciálisan bizalmas mezőkként jelöli meg, amelyek maszkolásra alkalmas jelöltek lehetnek. A portál Dinamikus adatmaszkolás paneljén láthatja az adatbázis ajánlott oszlopait. Válassza a Maszk hozzáadása egy vagy több oszlophoz lehetőséget, majd válassza ki a megfelelő maszkoló függvényt, majd a Mentés lehetőséget, ha maszkot szeretne alkalmazni ezekre a mezőkre.

Dinamikus adatmaszkolás kezelése a T-SQL használatával

Dinamikus adatmaszkolás beállítása az adatbázishoz PowerShell-parancsmagok használatával

Adatmaszkolási szabályzatok

Adatmaszkolás szabályai

Dinamikus adatmaszkolás beállítása az adatbázishoz a REST API használatával

A REST API-val programozott módon kezelheti az adatmaszkolási szabályzatot és szabályokat. A közzétett REST API a következő műveleteket támogatja:

Adatmaszkolási szabályzatok

Adatmaszkolás szabályai

Permissions

A dinamikus adatmaszkolás konfigurálásához a beépített szerepkörök a következők:

A dinamikus adatmaszkolás használatához a következő műveletek szükségesek:

Olvasás/írás:

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

Read:

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

Írni:

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

A dinamikus adatmaszkolás T-SQL-paranccsal történő használata esetén az engedélyekről további információt az Engedélyek című témakörben talál.

Részletes jogosultsági példa

Megakadályozza a bizalmas adatokhoz való jogosulatlan hozzáférést, és az adatbázis különböző szintjein maszkolja azokat egy jogosulatlan felhasználónak. A UNMASK-engedélyeket adatbázisszinten, sémaszinten, táblaszinten vagy oszlopszinten bármely adatbázis-felhasználónak vagy szerepkörnek megadhatja vagy visszavonhatja. A Microsoft Entra-hitelesítéssel kombinálva a UNMASK-engedélyek kezelhetők az Azure-környezetben karbantartott felhasználók, csoportok és alkalmazások számára. Az UNMASK-engedély részletes módot biztosít az adatbázisban tárolt adatok jogosulatlan hozzáférésének szabályozására és korlátozására, valamint az adatbiztonság felügyeletének javítására.

  1. Felhasználói táblákat tartalmazó séma létrehozása:

    CREATE SCHEMA Data;
    GO
    
  2. Táblázat létrehozása maszkolt oszlopokkal:

    CREATE TABLE Data.Membership (
        MemberID INT IDENTITY(1, 1) NOT NULL PRIMARY KEY CLUSTERED,
        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. Mintaadatok beszúrása:

    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. Szolgáltatástáblákat tartalmazó séma létrehozása:

    CREATE SCHEMA Service;
    GO
    
  5. Szolgáltatástábla létrehozása maszkolt oszlopokkal:

    CREATE TABLE Service.Feedback (
        MemberID INT IDENTITY(1, 1) NOT NULL PRIMARY KEY CLUSTERED,
        Feedback VARCHAR(100) MASKED WITH (FUNCTION = 'default()') NULL,
        Rating INT MASKED WITH (FUNCTION = 'default()'),
        Received_On DATETIME
    );
    
  6. Mintaadatok beszúrása:

    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. Hozzon létre különböző felhasználókat az adatbázisban:

    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. Olvasási engedélyek megadása az adatbázis felhasználóinak:

    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. Adjon különböző UNMASK-engedélyeket a felhasználóknak:

    --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. Az adatok lekérdezése a felhasználó ServiceAttendantkörnyezetében:

    EXECUTE AS USER = 'ServiceAttendant';
    
    SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay
    FROM Data.Membership;
    
    SELECT MemberID, Feedback, Rating
    FROM Service.Feedback;
    
    REVERT;
    
  11. Az adatok lekérdezése a felhasználó ServiceLeadkörnyezetében:

    EXECUTE AS USER = 'ServiceLead';
    
    SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay
    FROM Data.Membership;
    
    SELECT MemberID, Feedback, Rating
    FROM Service.Feedback;
    
    REVERT;
    
  12. Az adatok lekérdezése a felhasználó ServiceManagerkörnyezetében:

    EXECUTE AS USER = 'ServiceManager';
    
    SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay
    FROM Data.Membership;
    
    SELECT MemberID, Feedback, Rating
    FROM Service.Feedback;
    
    REVERT;
    
  13. Adatok lekérdezése a felhasználó kontextusában ServiceHead

    EXECUTE AS USER = 'ServiceHead';
    
    SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay
    FROM Data.Membership;
    
    SELECT MemberID, Feedback, Rating
    FROM Service.Feedback;
    
    REVERT;
    
  14. A UNMASK-engedélyek visszavonásához használja a következő T-SQL-utasításokat:

    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;
    

Kapcsolódó információk