Azure SQL Database (23) Azure SQL Database Dynamic Data Masking动态数据掩码

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

 《Windows Azure Platform 系列文章目录

 

  我们在使用关系型数据的时候,有时候希望:

  -  管理员admin,可以查看到所有的数据

  -  普通用户,某些敏感字段,比如信用卡,电子邮件等字段都是屏蔽的

 

  在这种情况下,就可以使用Dynamic Data Masking动态数据掩码,对数据表的某些字段进行屏蔽。

  比如我们对用户的信用卡信息、邮箱地址进行屏蔽,可以起到保护用户隐私的作用。

 

  动态数据屏蔽策略:

  1.不对其进行屏蔽的SQL用户:一组可以在 SQL 查询结果中获取非屏蔽数据的 SQL 用户或 AAD 标识。 始终不会对拥有管理员权限的用户进行屏蔽,这些用户可以看到没有任何屏蔽的原始数据。

  2.屏蔽规则:一组规则,定义将要屏蔽的指定字段,以及使用的屏蔽函数。 可以使用数据库架构名称、表名称和列名称定义指定的字段。

  3.屏蔽函数:一组方法,用于控制不同情况下的数据透露。

 

屏蔽函数 屏蔽逻辑
默认

根据指定字段的数据类型完全屏蔽

对于字符串数据类型(nchar、ntext、nvarchar),将使用 XXXX;如果字段大小小于 4 个字符,则使用更少的 X。
• 对于数字数据类型(bigint、bit、decimal、int、money、numeric、smallint、smallmoney、tinyint、float、real),将使用零值。
对于日期/时间数据类型(date、datetime2、datetime、datetimeoffset、smalldatetime、time),将使用 1900-01-01。
• 对于 SQL 变量,将使用当前类型的默认值。
• 对于 XML,将使用文档 。
• 对于特殊数据类型(timestamp、table、hierarchyid、GUID、binary、image、varbinary 空间类型),将使用空值。

信用卡

此屏蔽方法公开指定字段的最后四位数,并添加一个信用卡格式的常量字符串作为前缀。

XXXX-XXXX-XXXX-1234

电子邮件

此屏蔽方法公开第一个字母并将域替换为 XXX.com,并使用一个电子邮件地址格式的常量字符串作为前缀。

aXX@XXXX.com

随机数 此屏蔽方法根据选定边界和实际数据类型生成随机数。 如果指定的边界相等,则屏蔽函数将是常数。
自定义文本

此屏蔽方法公开第一个和最后一个字符,并在中间添加一个自定义填充字符串。 如果原始字符串短于公开的前缀和后缀,则只使用填充字符串。 
前缀 [填充] 后缀

  准备工作:

  1.准备Azure China账户

  2.下载Azure SQL Server Management Studio:  https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms

   

 

  1.首先我们登录Azure ARM portal: https://portal.azure.cn

  2.创建一个Azure SQL Database,命名为leisqldbsh。

  同时创建新的Azure SQL Database Server,创建登录用户名:leizhang

  

  3.创建完毕后,请设置SQL Server的IP白名单。

  

  4.使用SSMS链接这个数据库。在leisqldbsh下,

  

  执行以下T-SQL语句

复制代码
CREATE TABLE [dbo].[UserInfo](
    [unikey] int NOT NULL IDENTITY(1,1),
    [FirstName] [nvarchar](50) NOT NULL,
    [LastName] [nvarchar](50) NOT NULL,
    [CreditCard] [nvarchar](50) NOT NULL,
    [Mail] [nvarchar](50) NOT NULL,
    [CellPhone] [nvarchar](50) NOT NULL,
 CONSTRAINT [PK_UserInfo] PRIMARY KEY CLUSTERED 
(
    [unikey] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO


INSERT INTO dbo.UserInfo(FirstName,LastName,CreditCard,Mail,CellPhone)
VALUES ('San','Zhang','4300-0000-0000-0001','sanzhang@msn.com','13900000001'),
('Er','Wang','4300-0000-0000-0002','erwang@msn.com','13900000002'),
('Xiao','Zhang','4300-0000-0000-0003','xiaozhang@msn.com','13900000003'),
('Xiao','Li','4300-0000-0000-0004','xiaoli@msn.com','13900000004'),
('Xiao','Ming','4300-0000-0000-0005','xiaoming@msn.com','13900000005')
复制代码

 

  5.如果我们以步骤2中创建的用户leizhang,查询UserInfor表,就可以查询到所有的数据。如下图:

 

  6.然后我们需要创建另外一个用户untrusteddev。

  在master database下,执行下面的T-SQL命令:

复制代码
CREATE LOGIN untrusteddev 
WITH PASSWORD = 'N0tL0Lc4t5^'
GO


CREATE USER untrusteddev
FOR LOGIN untrusteddev
WITH DEFAULT_SCHEMA = [dbo]
GO
复制代码

 

  7.在leisqldbsh database下,执行下面的T-SQL

复制代码
CREATE USER untrusteddev
FOR LOGIN untrusteddev
WITH DEFAULT_SCHEMA = [dbo]
GO

EXEC sp_addrolemember N'db_datareader', N'untrusteddev'
GO
复制代码

 

  8.然后查看Dynamic Data Masking,如下图:

  

 

  点击上图的Add Mask。针对CreditCard字段,增加Mask

  

 

  针对Mail字段,增加Mask

  

 

  9.这样我们针对数据表的2个字段的Data Masking都设置好了。

  我们回顾一下数据库的链接信息:

Server Name leisqlserversh.database.chinacloudapi.cn leisqlserversh.database.secure.chinacloudapi.cn
Login Name leizhang untrusteddev
Password
说明 sysadmin db_datareader

 

  10.我们以untrusteddev身份,登录Server:leisqlserversh.database.secure.chinacloudapi.cn (注意这个DNS里面有secure信息)

  查询表UserInfo,信息如下:

  可以看到CreditCard字段和Mail字段都被屏蔽了。

  

  这样就能保护客户的用户隐私了。


本文转自Azure Lei Zhang博客园博客,原文链接:http://www.cnblogs.com/threestone/p/7116498.html,如需转载请自行联系原作者


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
21小时前
|
SQL 关系型数据库 MySQL
|
21小时前
|
SQL 关系型数据库 MySQL
|
21小时前
|
SQL 数据库
Sql中如何添加数据
Sql中如何添加数据
9 0
|
21小时前
|
SQL API 数据库
在Python中获取筛选后的SQL数据行数
在Python中获取筛选后的SQL数据行数
19 1
|
21小时前
|
SQL 分布式计算 数据可视化
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
|
21小时前
|
SQL XML Linux
SQL Server的版本
【5月更文挑战第14天】SQL Server的版本
17 3
|
21小时前
|
SQL 存储 数据库连接
LabVIEW与SQL Server 2919 Express通讯
LabVIEW与SQL Server 2919 Express通讯
|
21小时前
|
SQL Windows
安装SQL Server 2005时出现对性能监视器计数器注册表值执行系统配置检查失败的解决办法...
安装SQL Server 2005时出现对性能监视器计数器注册表值执行系统配置检查失败的解决办法...
14 4