您无法DENY UNMASK
打开sysadmin
和db_owner
。这是内置限制。
此外,如文档中所述,如果用户可以查询表,则这不是安全功能。
正如文档示例中所示,您不需要授予REVOKE UNMASK
,因为它是默认设置的:
DROP TABLE IF EXISTS [dbo].[StackOverflow];
CREATE TABLE [dbo].[StackOverflow]
(MemberID int IDENTITY PRIMARY KEY,
FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') NULL,
LastName varchar(100) NOT NULL,
Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL,
Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL);
INSERT [dbo].[StackOverflow] (FirstName, LastName, Phone#, Email) VALUES
('Roberto', 'Tamburello', '555.123.4567', 'RTamburello@contoso.com'),
('Janice', 'Galvin', '555.123.4568', 'JGalvin@contoso.com.co'),
('Zheng', 'Mu', '555.123.4569', 'ZMu@contoso.net');
SELECT * FROM [dbo].[StackOverflow] ;
CREATE USER TestUser WITHOUT LOGIN;
GRANT SELECT ON [dbo].[StackOverflow] TO TestUser;
EXECUTE AS USER = 'TestUser';
SELECT * FROM [dbo].[StackOverflow] ;
REVERT;
你不能REVOKE UNMASK
和。sysadmin
db_owner