sql server 里面的 dynamic Data Masking
有时候啊,当我们存放在数据库里面的数据,需要明文存放,但是对于前台查询出来的,又不太希望明文放出去的时候(比方说客户的手机啊,邮箱啊)之类有点敏感的信息,之前通常是保存个明文,然后在前台展现的时候再特殊处理一下,然后就ok了。
而现在呢,在2016提供了data mask的功能,可以遮掩对应列的一些基础信息
事不宜迟,先做样例
1 create table t2(ID int identity,Name nvarchar(50),PWD varchar(20),Phone varchar(50),Email varchar(200))
2
3 go
4 insert into t2 (Name ,PWD ,Phone ,Email )
5 select '张三','zhangsan','12433281924','zhangsan@qq.com'
6 union all
7 select '李四','wojiaolisi','18734612309','lisi@sohu.com'
8 union all
9 select '王五','wangwu','15378198234','wangwu@21cn.com'
10 union all
11 select 'sixgod','godsixzhao','00834123642','sixgod@qq.com'
12
13 select * from t2
14
15 ID Name PWD Phone Email
16 ----------- -------------------------------------------------- -------------------- -------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
17 1 张三 zhangsan 12433281924 zhangsan@qq.com
18 2 李四 wojiaolisi 18734612309 lisi@sohu.com
19 3 王五 wangwu 15378198234 wangwu@21cn.com
20 4 sixgod godsixzhao 00834123642 sixgod@qq.com
测试表搭建
然后我们对这个表的某个列进行mask 的操作。比方说我们对密码进行一个mask 可以使用以下语句
alter table t2 alter column PWD add masked with (function='default()') 然后我创建来一个用户Test1 然后只对他授予一个查询的权限。运行如下 execute as login='Test1' select * from t2 ID Name PWD Phone Email
----------- -------------------------------------------------- -------------------- -------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 张三 xxxx 12433281924 zhangsan@qq.com
2 李四 xxxx 18734612309 lisi@sohu.com
3 王五 xxxx 15378198234 wangwu@21cn.com
4 sixgod xxxx 00834123642 sixgod@qq.com
默认的方法,是将整个列的替换成XXXX来显示。(仅仅在查询的时候会变成这样,数据并没有真正修改成 XXXX)。这是一种mask 的方法。
2016提供给了4种mask 的方式,上面已经演示来一种,还有3种分别是 email(),ramdom(),Custom masking 这3种,下面就演示一下
alter table t2 alter column Email add masked with (function='Email()')
alter table t2 alter column ID add masked with (function='Random(1000,9999)')
alter table t2 alter column Phone add masked with (function='partial(4,"****",4)') select * from t2 ID Name PWD Phone Email
----------- -------------------------------------------------- -------------------- -------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7952 张三 xxxx 1243****1924 zXXX@XXXX.com
7601 李四 xxxx 1873****2309 lXXX@XXXX.com
5583 王五 xxxx 1537****8234 wXXX@XXXX.com
3190 sixgod xxxx 0083****3642 sXXX@XXXX.com
2、Email() 这个函数只显示email 的第一位以及 @,其他全部使用X来Mask
3、Random(1000,9999) 显示的值从1000~9999 之间生成的随机整数进行mask
4、partial 相当于自定义mask 模式,格式 (前缀保留位数,mask串,后缀保留位数) 这个格式进行创建
那是不是加来mask之后就无法看到原始数据呢?并不是的,是需要使用权限进行控制
grant unmask to User
revoke unmask from User
只要有unmask这个权限,那么就可以看到原始数据啦~~~
PS:可以查看那些列有mask 的哦
select object_name(object_id),name,masking_function
from sys.masked_columns (无列名) name masking_function
t2 ID random(1000, 9999)
t2 PWD default()
t2 Phone partial(4, "****", 4)
t2 Email email()
sql server 里面的 dynamic Data Masking的更多相关文章
- SQL Server 2016 的「動態資料遮罩 (Dynamic Data Masking)」
一些特別注重資訊安全.個人資料的公司或產業 (如: 金融.保險業),通常「測試用資料庫」的資料,會加上「遮蔽:去識別化」的功能,避免個資外洩.以往必須自己撰寫 SQL 語句或 Stored Proce ...
- SQL Server ->> SQL Server 2016新特性之 -- Dynamic Data Masking
Dynamic Data Masking是为了防止敏感数据暴露给未经授权的用户,以一种最小开销和维护成本的形式.Dynamic Data Masking用于表的字段,相当于盖住字段数据的一部分.比如一 ...
- Microsoft: Get started with Dynamic Data Masking in SQL Server 2016 and Azure SQL
Dynamic Data Masking (DDM) is a new security feature in Microsoft SQL Server 2016 and Azure SQL DB. ...
- Azure SQL Database (23) Azure SQL Database Dynamic Data Masking动态数据掩码
<Windows Azure Platform 系列文章目录> 我们在使用关系型数据的时候,有时候希望: - 管理员admin,可以查看到所有的数据 - 普通用户,某些敏感字段,比如信用卡 ...
- SQL Server里一些未公开的扩展存储过程
SQL Server里一些未公开的扩展存储过程 [转帖] 博客天地 www.inbaidu.com SQL Server里一些未公开的扩展存储过程 扩展存储过程(xp)是直接运行在SQL Server ...
- Use Dynamic Data Masking to obfuscate your sensitive data
Data privacy is a major concern today for any organization that manages sensitive data or personally ...
- SQL Server里在文件组间如何移动数据?
平常我不知道被问了几次这样的问题:“SQL Server里在文件组间如何移动数据?“你意识到这个问题:你只有一个主文件组的默认配置,后来围观了“SQL Server里的文件和文件组”后,你知道,有多 ...
- SQL Server里的文件和文件组
在今天的文章里,我想谈下SQL Server里非常重要的话题:SQL Server如何处理文件的文件组.当你用CREATE DATABASE命令创建一个简单的数据库时,SQL Server为你创建2个 ...
- SQL Server里的闩锁介绍
在今天的文章里我想谈下SQL Server使用的更高级的,轻量级的同步对象:闩锁(Latch).闩锁是SQL Server存储引擎使用轻量级同步对象,用来保护多线程访问内存内结构.文章的第1部分我会介 ...
随机推荐
- JS控制的事件
鼠标点击弹出提示事件: <input type="button" value="鼠标点击弹出提示" onclick="DianJi()" ...
- java.util.ConcurrentModificationException异常处理
ConcurrentModificationException异常处理 ConcurrentModificationException异常是Iterator遍历ArrayList或者HashMap数组 ...
- 何谓Restful
引言 用过ASP.NET WebApi2.0, 上次去面试被问到什么是Restful ,一时间竟不知道从何说起,所以搜集资料,做个备注,有时间好多来看看加深理解. 什么是Restful 一种软件架构风 ...
- SignalR的Javascript客户端API使用方式整理
SignalR的服务端提供了两种实现方式,分别是PersistentConnection和Hub,这两种方式的侧重点不同: PersistentConnection更接近于底层,编程接口比较简单,传输 ...
- 重新编译jdk源码,启用debug信息
我有一个不知道是好还是不好的习惯,搞不懂的一些玩意儿,喜欢调试然后单步执行看这玩意儿到底是怎么运行的. 今天看到正则表达式的时候,appendReplacement()这个方法怎么也看不明白它是怎么工 ...
- 微信小程序(应用号)开发体验
昨天微信小程序(应用号)内测的消息把整个技术社区炸开了锅, 我也忍不住跟了几波,可惜没有内测资格,听闻破解版出来了, 今天早上就着原来的项目资源试开发了一下,总结一下体验. 总体体验 开发效率高,6: ...
- ASP.NET开源CMS
CMS这里指 内容管理系统.是Content Management System的缩写. 产生 随着网络应用的丰富和发展,很多网站往往不能迅速跟进大量信息衍生及业务模式变革的脚步,常常需要花费许多时间 ...
- Redis 详解 (一) StackExchange.Redis Client
这期我们来看StackExchange.Redis,这是redis 的.net客户端之一.Redis是一个开源的内存数据存储,可以用来做数据库,缓存或者消息代理服务.目前有不少人在使用ServiceS ...
- python征程2.0(python基础)
1.python中有一些基本规则的特殊字符. (1)#表示这后的字符为python注释. (2)\n标准的行分隔符. (3)\继续上一行.(也就是过长的语句可以使用反斜杠(\)分解成几行) ) and ...
- MySQL中CURRENT_TIMESTAMP(转)
1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp() 代码如下 mysql> select current_timestamp ...