Megosztás a következőn keresztül:


Dinamikus adatmaszkolás

A következőkre vonatkozik:Azure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse Analytics (csak dedikált SQL-készletek)SQL-adatbázis a Fabricben

Az Azure SQL Database, a Microsoft Fabric SQL Database, az Azure SQL Managed Instance és az Azure Synapse Analytics támogatja a dinamikus adatmaszkolást (DDM). 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 az ügyfelek meghatározhatják, mennyit kívánnak felfedni a bizalmas adatokból, miközben minimális hatással van 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. Maszkolási szabály definiálható, amely a lekérdezés eredményhalmazában a teljes e-mail-címet elfedi. 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

Az Azure SQL Database esetében dinamikus adatmaszkolási szabályzatot kell beállítania az Azure Portalon az SQL Database konfigurációs panelJének Biztonság területén a Dinamikus adatmaszkolás panel kiválasztásával.

Ez a funkció nem állítható be az Azure Portalon felügyelt SQL-példányhoz vagy SQL-adatbázishoz a Fabricben. Ehelyett használja a Transact-SQL (T-SQL) kifejezést, ahogyan a jelen cikkben található Részletes engedély példában is látható. További információ: Dinamikus adatmaszkolás.

Dinamikus adatmaszkolási szabályzat

  • A maszkolásból kizárt SQL-felhasználók: Olyan SQL-felhasználók készlete, amelyek tartalmazhatják a Microsoft Entra-azonosítóból származó identitásokat, amelyek maszkolatlan adatokat kapnak az SQL-lekérdezés eredményeiben. 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ás szabályai: Szabálykészlet, amely meghatározza a maszkolandó kijelölt mezőket és a használt maszkoló függvényt. A kijelölt mezők az adatbázisséma nevével, a táblanévvel és az oszlopnévvel határozhatók meg.

  • 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 Maszklogika
    Alapértelmezett Teljes maszkolás a kijelölt mezők adattípusainak megfelelően

    Használja XXXX (vagy kevesebb) ha a mező mérete 4 karakternél kisebb a sztring adattípusokhoz (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 (1900-01-01, datetime2, datetime, datetimeoffset, smalldatetime, time) használható.
    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ábla, 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ó módszer, amely fedi fel az első betűt, és a domain nevet helyettesíti XXX.com-mal egy állandó sztring prefix 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.

    Képernyőkép a véletlenszerű szám létrehozására szolgáló maszkoló módszerről.
    Egyéni szöveg Maszkolási módszer, amely az első és az utolsó karaktert láthatóvá teszi, és középen hozzáad egy egyéni kitöltési karakterláncot. Ha az eredeti karakterlánc rövidebb, mint a megadott előtag és utótag, akkor csak a kitöltési karakterlánc használatos.

    prefix[padding]suffix
    Képernyőkép a navigációs ablakról.
    Datetime Lehetővé teszi a részletes maszkolást a dátum/idő oszlopokhoz, nevezetesen a datetime, datetime2, date, time, datetimeoffset és smalldatetime oszlopokhoz. Bizonyos összetevőket maszkolhat, például év (datetime("Y")), hónap (), nap (datetime("M")datetime("D")), óra (datetime("h")), perc (datetime("m")) vagy másodperc (datetime("s")). A T-SQL használatával alkalmazza ezt a függvényt.

    Például:

    - Maszk éve: ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("Y")').
    - Maszk hónap: ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("M")').
    - Maszkidő: ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("m")').

A DDM-javaslatok 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ást a következő beépített szerepkörökkel konfigurálhatja:

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

Olvasás/írás:

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

Olvas:

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

Ír:

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

A dinamikus adatmaszkolás T-SQL-paranccsal történő használatakor az engedélyekről az Engedélyek című témakörben olvashat bővebben.

Részletes jogosultsági példa

Megakadályozzuk a bizalmas adatokhoz való jogosulatlan hozzáférést, és maszkolással megszabályozzuk azokat a különböző adatbázis szinteken, hogy elrejtsük őket a jogosulatlan felhasználók elől. Engedélyeket adhat vagy vonhat vissza UNMASK adatbázisszinten, sémaszinten, táblaszinten vagy oszlopszinten bármely adatbázis-felhasználónak vagy -szerepkörnek. A Microsoft Entra-hitelesítéssel UNMASK kombinálva az 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 kezelésé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,
        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,
        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. Különböző UNMASK engedélyek megadása a felhasználóknak:

    • Oszlopszintű UNMASK engedély megadása a következőhöz ServiceAttendant:

      GRANT UNMASK ON Data.Membership (FirstName) TO ServiceAttendant;
      
    • Táblaszintű UNMASK engedély megadása a következőhöz ServiceLead:

      GRANT UNMASK ON Data.Membership TO ServiceLead;
      
    • A UNMASK sémaszintű engedély megadása a következőnek: ServiceManager

      GRANT UNMASK ON SCHEMA::Data TO ServiceManager;
      GRANT UNMASK ON SCHEMA::Service TO ServiceManager;
      
    • Adatbázisszintű UNMASK engedélyt adj ServiceHead-nak/nak;

      GRANT UNMASK TO ServiceHead;
      
  10. Az adatok lekérdezése a felhasználói 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ói 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ói 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. ** Lekérdezze az adatokat a ServiceHead felhasználó kontextusában

    EXECUTE AS USER = 'ServiceHead';
    
    SELECT MemberID,
           FirstName,
           LastName,
           Phone,
           Email,
           BirthDay
    FROM Data.Membership;
    SELECT MemberID,
           Feedback,
           Rating
    FROM Service.Feedback;
    
    REVERT;
    
  14. Az engedélyek visszavonásához UNMASK 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;