如何在 Synapse 数据仓库中实现动态数据掩码
适用于:SQL 分析终结点和 Microsoft Fabric 中的仓库
动态数据掩码是一种先进的数据保护技术,可帮助组织保护其数据库中的敏感信息。 它允许你定义特定列的掩码规则,确保只有经过授权的用户才能看到原始数据,同时对其他人隐藏该数据。 动态数据掩码根据用户的访问权限动态更改提供给用户的数据,从而提供额外的一层安全性。
有关详细信息,请参阅 Fabric 数据仓库中的动态数据掩码。
先决条件
在开始之前,请确保具有以下各项:
- 具有激活容量或试用容量的 Fabric 工作区。
- 仓库。
- 动态数据掩码适用于 SQL 分析终结点。 可以使用
ALTER TABLE ... ALTER COLUMN
向现有列添加掩码,如本文后面部分所示。 - 本练习使用仓库。
- 动态数据掩码适用于 SQL 分析终结点。 可以使用
- 管理用户,具有工作区的管理员、成员或参与者权限,或仓库的提升的权限。
- 本教程中为“管理员帐户”。
- 测试用户,没有工作区的管理员、成员或参与者权限,也没有仓库的提升的权限。
- 本教程中为“测试用户”。
1.连接
- 打开 Fabric 工作区,并导航到要在其中应用动态数据掩码的仓库。
- 使用符合以下条件的帐户登录:具有仓库的提升的权限,或者工作区的管理员/成员/参与者角色或仓库控制权限。
2.配置动态数据掩码
使用管理帐户登录 Fabric 门户。
在 Fabric 工作区中,导航到仓库和湖屋的 SQL 分析终结点。
选择“新建 SQL 查询”选项,然后在“空白”下,选择“新建 SQL 查询”。
在 SQL 脚本中,使用
MASKED WITH FUNCTION
子句定义动态数据掩码规则。 例如:CREATE TABLE dbo.EmployeeData ( EmployeeID INT ,FirstName VARCHAR(50) MASKED WITH (FUNCTION = 'partial(1,"-",2)') NULL ,LastName VARCHAR(50) MASKED WITH (FUNCTION = 'default()') NULL ,SSN CHAR(11) MASKED WITH (FUNCTION = 'partial(0,"XXX-XX-",4)') NULL ,email VARCHAR(256) NULL ); GO INSERT INTO dbo.EmployeeData VALUES (1, 'TestFirstName', 'TestLastName', '123-45-6789','email@youremail.com'); GO INSERT INTO dbo.EmployeeData VALUES (2, 'First_Name', 'Last_Name', '000-00-0000','email2@youremail2.com'); GO
FirstName
列仅显示字符串的第一个字符和最后两个字符,中间用-
连接。LastName
列显示XXXX
。SSN
列显示XXX-XX-
,后跟字符串的最后四个字符。
选择“运行”按钮以执行脚本。
确认执行该脚本。
脚本会将指定的动态数据掩码规则应用于表中的指定列。
3.测试动态数据掩码
应用动态数据掩码规则后,可以使用测试用户来查询表,从而测试掩码;测试用户没有工作区的管理员、成员或参与者权限,也没有仓库的提升的权限。
- 以测试用户(例如 TestUser@contoso.com)身份登录 Azure Data Studio 或 SQL Server Management Studio 等工具。
- 以测试用户身份对表运行查询。 掩码数据根据定义的规则来显示。
SELECT * FROM dbo.EmployeeData;
- 使用管理员帐户,向测试用户授予
UNMASK
权限。GRANT UNMASK ON dbo.EmployeeData TO [TestUser@contoso.com];
- 以测试用户身份验证以 TestUser@contoso.com 登录的用户是否可以看到未掩码数据。
SELECT * FROM dbo.EmployeeData;
- 使用管理员帐户,撤销测试用户的
UNMASK
权限。REVOKE UNMASK ON dbo.EmployeeData TO [TestUser];
- 验证测试用户是否看不到未掩码数据,只能看到掩码数据。
SELECT * FROM dbo.EmployeeData;
- 使用管理员帐户,可以向角色授予
UNMASK
权限以及撤销该权限GRANT UNMASK ON dbo.EmployeeData TO [TestRole]; REVOKE UNMASK ON dbo.EmployeeData TO [TestRole];
4.管理和修改动态数据掩码规则
若要管理或修改现有的动态数据掩码规则,请创建新的 SQL 脚本。
可以使用
MASKED WITH FUNCTION
子句将掩码添加到现有列:ALTER TABLE dbo.EmployeeData ALTER COLUMN [email] ADD MASKED WITH (FUNCTION = 'email()'); GO
ALTER TABLE dbo.EmployeeData ALTER COLUMN [email] DROP MASKED;
5.清理
- 要清理此测试表,请运行以下语句:
DROP TABLE dbo.EmployeeData;
相关内容
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈