SQL 服务器数据屏蔽 屏蔽所需的最低权限
SQL Server Data Masking Minimum permissions needed to mask
我正在屏蔽 SQL Server 2017 数据库中的一些数据。我用这个语句屏蔽了一个专栏:
ALTER TABLE lEmployee
ALTER COLUMN FirstName nvarchar(160)
MASKED WITH (FUNCTION = 'partial(2,"xxx",2)')
而且我可以在 sys.columns
中看到它现在被屏蔽了。
现在在应用程序中,数据未显示为已屏蔽(以该用户身份登录时也未显示在数据库中)。我还有以下 运行 以确保用户没有此权限。
REVOKE UNMASK TO testuser
任何人都可以建议需要什么最低权限才能使数据屏蔽按预期工作。
提前致谢
您无法在 sysadmin
和 db_owner
上 DENY UNMASK
。这是内置限制。
此外,如文档中所述,如果用户可以查询 table,则这不是 security 功能。
如文档示例所示,您不需要授予 REVOKE UNMASK
,因为它是默认设置的:
DROP TABLE IF EXISTS [dbo].[Whosebug];
CREATE TABLE [dbo].[Whosebug]
(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].[Whosebug] (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].[Whosebug] ;
CREATE USER TestUser WITHOUT LOGIN;
GRANT SELECT ON [dbo].[Whosebug] TO TestUser;
EXECUTE AS USER = 'TestUser';
SELECT * FROM [dbo].[Whosebug] ;
REVERT;
而且你不能 REVOKE UNMASK
到 sysadmin
和 db_owner
。
我正在屏蔽 SQL Server 2017 数据库中的一些数据。我用这个语句屏蔽了一个专栏:
ALTER TABLE lEmployee
ALTER COLUMN FirstName nvarchar(160)
MASKED WITH (FUNCTION = 'partial(2,"xxx",2)')
而且我可以在 sys.columns
中看到它现在被屏蔽了。
现在在应用程序中,数据未显示为已屏蔽(以该用户身份登录时也未显示在数据库中)。我还有以下 运行 以确保用户没有此权限。
REVOKE UNMASK TO testuser
任何人都可以建议需要什么最低权限才能使数据屏蔽按预期工作。
提前致谢
您无法在 sysadmin
和 db_owner
上 DENY UNMASK
。这是内置限制。
此外,如文档中所述,如果用户可以查询 table,则这不是 security 功能。
如文档示例所示,您不需要授予 REVOKE UNMASK
,因为它是默认设置的:
DROP TABLE IF EXISTS [dbo].[Whosebug];
CREATE TABLE [dbo].[Whosebug]
(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].[Whosebug] (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].[Whosebug] ;
CREATE USER TestUser WITHOUT LOGIN;
GRANT SELECT ON [dbo].[Whosebug] TO TestUser;
EXECUTE AS USER = 'TestUser';
SELECT * FROM [dbo].[Whosebug] ;
REVERT;
而且你不能 REVOKE UNMASK
到 sysadmin
和 db_owner
。