Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2016 (13.x) és újabb verziók
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Database a Microsoft Fabric
A dinamikus adatmaszkolás (DDM) korlátozza a bizalmas adatexpozíciót azáltal, hogy maszkolja a nem hátrányos helyzetű felhasználók számára. Segítségével jelentősen leegyszerűsíthető a biztonság tervezése és kódolása az alkalmazásban.
Ez a tartalom általánosan és az SQL Serverre jellemző dinamikus adatmaszkolási fogalmakra vonatkozik. Más platformokra vonatkozó tartalom érhető el:
- Az Azure SQL Database, az Azure SQL Managed Instance és az Azure Synapse Analytics dinamikus adatmaszkolásával kapcsolatban lásd: Az SQL Database dinamikus adatmaszkolásának– első lépések.
- A Microsoft Fabric dinamikus adatmaszkolásával kapcsolatban lásd a következőt: Dinamikus adatmaszkolás a Fabric adatraktározásban.
A dinamikus adatmaszkolás áttekintése
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 megadják, mennyi bizalmas adatot jelenítsen meg minimális hatással az alkalmazásrétegre. A DDM konfigurálható a kijelölt adatbázismezőkön, hogy bizalmas adatokat rejtsen el az eredményhalmazokban. A DDM-ben az adatbázis adatai nem változnak. A DDM egyszerűen használható a meglévő alkalmazásokkal, mivel a lekérdezési eredményekben maszkolási szabályok vannak alkalmazva. Számos alkalmazás elfedheti a bizalmas adatokat a meglévő lekérdezések módosítása nélkül.
- A központi adatmaszkolási szabályzat közvetlenül az adatbázis bizalmas mezőire hat.
- Jelölje ki a bizalmas adatokhoz hozzáféréssel rendelkező kiemelt felhasználókat vagy szerepköröket.
- A DDM teljes maszkolást és részleges maszkolást, numerikus adatok véletlenszerű maszkolását tartalmazza.
- Az egyszerű Transact-SQL parancsok maszkokat definiálnak és kezelnek.
A dinamikus adatmaszkolás célja a bizalmas adatok expozíciójának korlátozása, megakadályozva, hogy azok a felhasználók, akik nem férhetnek hozzá az adatokhoz, ne tekinthessék meg őket. A dinamikus adatmaszkolás nem célja annak megakadályozása, hogy az adatbázis felhasználói közvetlenül csatlakozzanak az adatbázishoz, és olyan kimerítő lekérdezéseket futtasson, amelyek elérhetővé teszik a bizalmas adatok egy részét. A dinamikus adatmaszkolás kiegészíti az SQL Server egyéb biztonsági funkcióit (naplózás, titkosítás, sorszintű biztonság stb.), és erősen ajánlott velük együtt használni az adatbázis bizalmas adatainak jobb védelme érdekében.
A dinamikus adatmaszkolás az SQL Server 2016 -ban (13.x) és az Azure SQL Database-ben érhető el, és Transact-SQL parancsok használatával van konfigurálva. A dinamikus adatmaszkolás Azure Portallal történő konfigurálásáról további információt az Az SQL Database Dinamikus adatmaszkolás (Azure Portal)című témakörben talál.
Jegyzet
Microsoft Entra ID korábban Azure Active Directory (Azure AD) néven ismert.
Dinamikus adatmaszk definiálása
A maszkoló szabály definiálható egy tábla egyik oszlopán az oszlopban lévő adatok elrejtéséhez. Ötféle maszk érhető el.
Funkció | Leírás | Példák |
---|---|---|
Alapértelmezett | Teljes maszkolás a kijelölt mezők adattípusainak megfelelően. Sztring típusú adattípusok esetén XXXX (vagy kevesebb), ha a mező mérete 4 karakternél kevesebb (karakter, nchar, varchar, nvarchar, szöveges, ntext).Numerikus adattípusok esetén nulla értéket használjon (bigint, bit, tizedes, int, money, numerikus, kisint, kispénz, apróint, lebegőpontos, valós). Dátum- és időadattípusok esetén használja a 1900-01-01 00:00:00.0000000 (dátum, datetime2, datetime, datetimeoffset, smalldatetime, time).Bináris adattípusok esetén használja a 0 ASCII-érték egyetlen bájtját (bináris, varbináris, kép). |
Példa oszlopdefiníció szintaxisa: Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL Példa az alter szintaxisra: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()') |
Maszkolásos módszer, amely egy e-mail-cím első betűjét és a ".com" állandó utótagot teszi elérhetővé e-mail-cím formájában.
aXXX@XXXX.com . |
Példadefiníció szintaxisa: Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL Példa az alter szintaxisra: ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()') |
|
Véletlenszerű | Egy véletlenszerű maszkoló függvény, amely bármilyen numerikus típuson használható az eredeti érték egy megadott tartományon belüli véletlenszerű értékkel való maszkolásához. | Példadefiníció szintaxisa: Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])') Példa az alter szintaxisra: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)') |
Egyéni karakterlánc | Maszkolási módszer, amely az első és az utolsó betűt jeleníti meg, és középen hozzáad egy egyedi kitöltési sztringet. prefix,[padding],suffix Ha az eredeti érték túl rövid a teljes maszk befejezéséhez, az előtag vagy utótag egy része nem lesz közzétéve. |
Példadefiníció szintaxisa: FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL Példa az alter szintaxisra: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') Ez a 555.123.1234 -hez hasonló telefonszámot 5XXXXXXX -re alakítja át. További példa: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)') Ez a 555.123.1234 -hez hasonló telefonszámot 555.1XXXXXXX -re alakítja át. |
Dátum és idő |
A következőkre vonatkozik: SQL Server 2022 (16.x) Oszlop kitakarási módszere, amely adat típussal van meghatározva: datetime, datetime2, date, time, datetimeoffset, smalldatetime. Segít a year => datetime("Y") , month=> datetime("M") , day=>datetime("D") , hour=>datetime("h") , minute=>datetime("m") vagy seconds=>datetime("s") nap egy részének eltakarásában. |
Példa az datetime érték évének maszkolására:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("Y")') Példa a datetime érték hónapjának maszkolására: ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("M")') Példa az datetime érték percének maszkolására: ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("m")') |
Engedélyek
A SELECT engedéllyel rendelkező felhasználók megtekinthetik a táblaadatokat. A maszkoltként definiált oszlopok a maszkolt adatokat jelenítik meg. Adjon engedélyt a UNMASK felhasználónak, hogy a maszkolást definiáló oszlopokból lekérhesse a maszkolatlan adatokat.
A rendszergazdai felhasználók és szerepkörök mindig megtekinthetik a maszkolatlan adatokat a CONTROL engedéllyel, amely magában foglalja a A MASZK módosítása és UNMASK engedélyét is. A rendszergazda felhasználók vagy szerepkörök, például a sysadmin vagy a db_owner a tervezésüknek megfelelően control engedéllyel rendelkeznek az adatbázishoz, és megtekinthetik a maszkolt adatokat.
Nincs szükség külön engedélyre a dinamikus adatmaszkkal rendelkező táblák létrehozásához, csak a standard a CREATE TABLE és ALTER sémaengedélyeken.
Egy oszlop maszkjának hozzáadásához, cseréjéhez vagy eltávolításához ALTER ANY MASK engedélyre van szükség, és ALTER engedélyt a táblában. Célszerű, hogy ALTER ANY MASK megadjuk egy biztonsági tisztnek.
Jegyzet
A UNMASK-engedély nem befolyásolja a metaadatok láthatóságát: ha a UNMASK-t önmagában adja meg, az nem fedi fel a metaadatokat. A UNMASK-nak mindig SELECT jogosultsággal kell rendelkeznie ahhoz, hogy bármilyen hatása legyen. Például: ha unMASK-t ad meg az adatbázis hatókörén, és a SELECT lehetőséget egy adott táblán adja meg, akkor a felhasználó csak annak az egyes táblának a metaadatait látja, amelyből kiválasztható, másokat nem. Lásd még metaadatok láthatóságának konfigurációját.
Ajánlott eljárások és gyakori használati esetek
Ha maszkot hoz létre egy oszlopon, az nem akadályozza meg az oszlop frissítését. Így bár a felhasználók maszkolt adatokat kapnak a maszkolt oszlop lekérdezésekor, ugyanezek a felhasználók frissíthetik az adatokat, ha írási engedélyekkel rendelkeznek. A frissítési engedélyek korlátozásához továbbra is megfelelő hozzáférés-vezérlési szabályzatot kell használni.
Ha
SELECT INTO
vagyINSERT INTO
maszkolt oszlopból másol adatokat egy másik táblába, az maszkolt adatokat eredményez a céltáblában (feltéve, hogy azokat egy felhasználó exportálja UNMASK jogosultságok nélkül).A dinamikus adatmaszkolás az SQL Server Importálás és exportálás futtatásakor lesz alkalmazva. A maszkolt oszlopokat tartalmazó adatbázisok maszkolt adatokkal rendelkező exportált adatfájlt eredményeznek (feltéve, hogy azokat UNMASK jogosultságokkal nem rendelkező felhasználó exportálja), és az importált adatbázis statikusan maszkolt adatokat fog tartalmazni.
Maszkolt oszlopok lekérdezése
A sys.masked_columns
nézetben lekérdezheti azokat a táblázatoszlopokat, amelyekre maszkolási függvény van alkalmazva. Ez a nézet a sys.columns
nézettől öröklődik. Visszaadja a sys.columns
nézetben lévő összes oszlopot, valamint a is_masked
és masking_function
oszlopokat, jelezve, hogy az oszlop maszkolt-e, és ha igen, milyen maszkoló függvény van definiálva. Ez a nézet csak azokat az oszlopokat jeleníti meg, amelyekre maszkoló függvény van alkalmazva.
SELECT c.name, tbl.name as table_name, c.is_masked, c.masking_function
FROM sys.masked_columns AS c
JOIN sys.tables AS tbl
ON c.[object_id] = tbl.[object_id]
WHERE is_masked = 1;
Korlátozások és korlátozások
A CONTROL SERVER vagy a CONTROL adatbázisszintű felhasználói az eredeti formájukban tekinthetik meg a maszkolt adatokat. Ide tartoznak a rendszergazdai felhasználók vagy szerepkörök, például a sysadmin, a db_owner stb.
A maszkoló szabály nem definiálható a következő oszloptípusokhoz:
Titkosított oszlopok (Always Encrypted)
FILESTREAM
COLUMN_SET, vagy egy oszlopkészlet részét képező ritka oszlop.
A maszkok nem konfigurálhatók számított oszlopon, de ha a kiszámított oszlop maszkkal rendelkező oszloptól függ, akkor a kiszámított oszlop maszkolt adatokat ad vissza.
Az adatmaszkolással rendelkező oszlopok nem lehetnek kulcsok a FULLTEXT-indexekhez.
Egy PolyBase-külső tábla oszlopa.
Az UNMASK engedéllyel nem rendelkező felhasználók esetében az elavult READTEXT, UPDATETEXTés WRITETEXT utasítások nem működnek megfelelően a dinamikus adatmaszkoláshoz konfigurált oszlopon.
A dinamikus adatmaszk hozzáadása sémamódosításként történik az alapul szolgáló táblán, ezért nem hajtható végre függőségekkel rendelkező oszlopon (például számított oszlop által hivatkozott oszlopon). Ha dinamikus adatmaszkot próbál hozzáadni függőséggel rendelkező oszlopokhoz, az hibát fog eredményezni, ALTER TABLE ALTER COLUMN _columnname_ failed because one or more objects access this column
. A korlátozás megkerüléséhez először eltávolíthatja a függőséget, majd hozzáadhatja a dinamikus adatmaszkot, majd újra létrehozhatja a függőséget. Ha például a függőség az adott oszloptól függő index miatt van, elvetheti az indexet, majd hozzáadhatja a maszkot, majd újra létrehozhatja a függő indexet.
Amikor egy olyan oszlopra hivatkozó kifejezést vetít ki, amelyhez adatmaszkoló függvény van definiálva, a kifejezés is maszkolt lesz. A hivatkozott oszlop maszkolásához használt függvénytől (alapértelmezett, e-mail, véletlenszerű, egyéni sztring) függetlenül az eredményül kapott kifejezés mindig az alapértelmezett függvénnyel lesz maszkolva.
A különböző SQL Server-példányokon üzemeltetett két különböző Azure SQL-adatbázisra vagy adatbázisra kiterjedő adatbázisközi lekérdezések, amelyek bármilyen összehasonlítási vagy illesztési műveletet tartalmaznak MASZKOLT oszlopokon, nem adnak megfelelő eredményt. A távoli kiszolgálóról visszaadott eredmények már MASZKOLT formában vannak, és nem alkalmasak semmilyen helyi összehasonlítási vagy csatlakozási műveletre.
Jegyzet
A dinamikus adatmaszkolás nem támogatott, ha egy indexelt nézet hivatkozik az alaptáblára.
Biztonsági megjegyzés: A maszkolás megkerülése következtetési vagy találgatásos technikákkal
A dinamikus adatmaszkolás úgy lett kialakítva, hogy egyszerűsítse az alkalmazásfejlesztést azáltal, hogy korlátozza az adatexpozíciót az alkalmazás által használt előre definiált lekérdezések halmazában. Bár a dinamikus adatmaszkolás hasznos lehet arra is, hogy megakadályozza a bizalmas adatok véletlen expozícióját egy éles adatbázis közvetlen elérésekor, fontos megjegyezni, hogy az alkalmi lekérdezési engedélyekkel nem rendelkező felhasználók technikákat alkalmazhatnak a tényleges adatokhoz való hozzáférésre. Ha szükség van ilyen alkalmi hozzáférés megadására, a naplózást az összes adatbázis-tevékenység figyelésére és a forgatókönyv enyhítésére kell használni.
Vegyük például azt az adatbázis jogosultságot, amely rendelkezik elegendő jogosultsággal ad hoc lekérdezések futtatásához az adatbázison, és megpróbálja 'kitalálni' az alapul szolgáló adatokat, végső soron következtetve a tényleges értékekre. Tegyük fel, hogy egy maszk van definiálva a [Employee].[Salary]
oszlopban, és ez a felhasználó közvetlenül csatlakozik az adatbázishoz, és elkezdi kitalálni az értékeket, végül pedig a [Salary]
táblában lévő Employees
értéket:
SELECT ID, Name, Salary FROM Employees
WHERE Salary > 99999 and Salary < 100001;
Azonosító Név Fizetés 62543 Jane Doe 0 91245 John Smith 0
Ez azt mutatja, hogy a dinamikus adatmaszkolás nem használható egyedül az alkalmi lekérdezéseket futtató felhasználók bizalmas adatainak teljes körű védelmére az adatbázisban. Célszerű megelőzni a véletlen bizalmas adatexpozíciót, de nem véd a mögöttes adatok következtetésére irányuló rosszindulatú szándékkal szemben.
Fontos, hogy megfelelően kezelje az adatbázis engedélyeit, és mindig kövesse a minimálisan szükséges engedélyek elvét. Ne feledje továbbá, hogy a naplózás engedélyezve van az adatbázisban zajló összes tevékenység nyomon követéséhez.
Finomhangolt engedélyek az SQL Server 2022-ben
Az SQL Server 2022-től (16.x) kezdődően megakadályozhatja a bizalmas adatokhoz való jogosulatlan hozzáférést, és az adatbázis különböző szintjein maszkolhatja azokat egy jogosulatlan felhasználó számára. UNMASK engedélyt adhat vagy vonhat vissza adatbázisszinten, sémaszinten, táblaszinten vagy oszlopszinten egy felhasználónak, adatbázisszerepkörnek, Microsoft Entra-identitásnak vagy Microsoft Entra-csoportnak. Ez a fejlesztés részletesebb módot kínál 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.
Példák
Dinamikus adatmaszk létrehozása
Az alábbi példa három különböző típusú dinamikus adatmaszkot tartalmazó táblát hoz létre. A példa kitölti a táblát, és kiválasztja az eredményt.
-- schema to contain user tables
CREATE SCHEMA Data;
GO
-- table with masked columns
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
);
-- inserting sample data
INSERT INTO Data.Membership (FirstName, LastName, Phone, Email, DiscountCode)
VALUES
('Roberto', 'Tamburello', '555.123.4567', 'RTamburello@contoso.com', 10),
('Janice', 'Galvin', '555.123.4568', 'JGalvin@contoso.com.co', 5),
('Shakti', 'Menon', '555.123.4570', 'SMenon@contoso.net', 50),
('Zheng', 'Mu', '555.123.4569', 'ZMu@contoso.net', 40);
GO
Létrejön egy új felhasználó, és megkapja a SELECT engedélyt azon a sémán, ahol a tábla található.
MaskingTestUser
nézetként végrehajtott lekérdezések maszkolt adatokat.
CREATE USER MaskingTestUser WITHOUT LOGIN;
GRANT SELECT ON SCHEMA::Data TO MaskingTestUser;
-- impersonate for testing:
EXECUTE AS USER = 'MaskingTestUser';
SELECT * FROM Data.Membership;
REVERT;
Az eredmény az alábbi adatok módosításával mutatja be a maszkokat:
1 Roberto Tamburello 555.123.4567 RTamburello@contoso.com 10
ba:
1 Rxxxxxo Tamburello xxxx RXXX@XXXX.com 91
ahol a DiscountCode
szám véletlenszerű minden lekérdezési eredményhez.
Maszk hozzáadása vagy szerkesztése meglévő oszlophoz
A ALTER TABLE
utasítással maszkot adhat hozzá a táblázat egy meglévő oszlopához, vagy szerkesztheti a maszkot az oszlopban.
Az alábbi példa egy maszkoló függvényt ad hozzá a LastName
oszlophoz:
ALTER TABLE Data.Membership
ALTER COLUMN LastName ADD MASKED WITH (FUNCTION = 'partial(2,"xxxx",0)');
Az alábbi példa egy maszkoló függvényt módosít a LastName
oszlopban:
ALTER TABLE Data.Membership
ALTER COLUMN LastName VARCHAR(100) MASKED WITH (FUNCTION = 'default()');
Engedélyek megadása a maszkolt adatok megtekintéséhez
A UNMASK engedélyének megadása lehetővé teszi MaskingTestUser
számára az adatok maszkolás nélküli megtekintését.
GRANT UNMASK TO MaskingTestUser;
EXECUTE AS USER = 'MaskingTestUser';
SELECT * FROM Data.Membership;
REVERT;
-- Removing the UNMASK permission
REVOKE UNMASK TO MaskingTestUser;
Dinamikus adatmaszk elvetése
Az alábbi utasítás az előző példában létrehozott LastName
oszlopra dobja a maszkot:
ALTER TABLE Data.Membership
ALTER COLUMN LastName DROP MASKED;
Finomított jogosultsági példák
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ói
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ói
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ói
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;
** Lekérdezze az adatokat a
ServiceHead
felhasználó kontextusábanEXECUTE 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;