2017-11-17 12 views
1

SQL Server 2017データベースの一部のデータをマスキングする処理中です。私はこの文でカラムをマスクしていますSQL Serverデータマスキングマスクに必要な最小限のアクセス

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

そして、私はこれがマスクされていることをsys.columnsで見ることができます。

このアプリケーションでは、データはマスクされていません(そのユーザーとしてログインしても、そのデータはデータベースにありません)。私はまた、ユーザーがこの許可を持っていないことを確認するために以下を実行しました。

REVOKE UNMASK TO testuser 

データマスクが期待通りに機能するように、最小限のアクセス許可が必要な場合は、誰でも助言してください。

はあなたが sysadmindb_ownerDENY UNMASKすることができません事前

答えて

2

でいただきありがとうございます。これはビルドインの制限です。

また、ドキュメントに記載されているように、ユーザーがテーブルを照会できるのであれば、これはsecurityフィーチャーではありません。

ドキュメント番組の例ではそれとして、あなたはそれがデフォルトで設定されているよう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', '[email protected]'), 
('Janice', 'Galvin', '555.123.4568', '[email protected]'), 
('Zheng', 'Mu', '555.123.4569', '[email protected]'); 
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 UNMASKsysadmindb_ownerへ。