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 |
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. |
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 |
Ajánlott maszkolandó mezők
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 adatmaszk létrehozásához lásd : Dinamikus adatmaszk létrehozása.
- Ha maszkot szeretne felvenni vagy szerkeszteni egy meglévő oszlopban, olvassa el a Maszk hozzáadása vagy szerkesztése meglévő oszlopon című témakört.
- A maszkolás nélküli adatok megtekintésére vonatkozó engedélyek megadásáról a maszkolt adatok megtekintésére vonatkozó engedélyek megadása című témakörben olvashat.
- Dinamikus adatmaszk elvetéséhez lásd : Dinamikus adatmaszk elvetése.
Dinamikus adatmaszkolás beállítása az adatbázishoz PowerShell-parancsmagok használatával
Adatmaszkolási szabályzatok
Adatmaszkolás szabályai
- Get-AzSqlDatabaseDataMaskingRule
- New-AzSqlDatabaseDataMaskingRule
- Remove-AzSqlDatabaseDataMaskingRule
- Set-AzSqlDatabaseDataMaskingRule
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
- Létrehozás vagy frissítés: Adatbázis-adatmaszkolási szabályzatot hoz létre vagy frissít.
- Lekérés: Lekéri az adatbázis adatmaszkolási szabályzatát.
Adatmaszkolás szabályai
- Létrehozás vagy frissítés: Adatbázis-adatmaszkolási szabályt hoz létre vagy frissít.
- Adatbázis szerinti lista: Lekéri az adatbázis adatmaszkolási szabályainak listáját.
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.
Felhasználói táblákat tartalmazó séma létrehozása:
CREATE SCHEMA Data; GO
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 );
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');
Szolgáltatástáblákat tartalmazó séma létrehozása:
CREATE SCHEMA Service; GO
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 );
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');
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
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;
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;
Az adatok lekérdezése a felhasználó
ServiceAttendant
környezetében:EXECUTE AS USER = 'ServiceAttendant'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;
Az adatok lekérdezése a felhasználó
ServiceLead
környezetében:EXECUTE AS USER = 'ServiceLead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;
Az adatok lekérdezése a felhasználó
ServiceManager
környezetében:EXECUTE AS USER = 'ServiceManager'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;
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;
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
- Dinamikus adatmaszkolás az SQL Serverhez.
- Data Exposed episode about Granular Permissions for Azure SQL Dynamic Data Masking on Channel 9.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: