5

我正在屏蔽 SQL Server 2017 数据库中的一些数据。我用这个语句掩盖了一个列:

ALTER TABLE lEmployee
    ALTER COLUMN FirstName nvarchar(160) 
          MASKED WITH (FUNCTION = 'partial(2,"xxx",2)')

我可以看到sys.columns这现在被掩盖了。

现在在应用程序中,数据没有显示为被屏蔽(以该用户身份登录时,数据也没有显示在数据库中)。我还运行了以下命令以确保用户没有此权限。

REVOKE UNMASK TO testuser

任何人都可以建议需要什么最低权限,以便数据屏蔽按预期工作。

先感谢您

4

1 回答 1

6

您无法DENY UNMASK打开sysadmindb_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和。sysadmindb_owner

于 2017-11-17T07:36:40.617 回答