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部分我会介 ...
随机推荐
- Vertica的date与timestamp数据类型,to_date()与to_timestamp()函数区别
实验环境:3节点,RHEL6.4 + Vertica 7.0.1 实验目的:了解Vertica数据库的date与timestamp数据类型,to_date()与to_timestamp()函数区别 ...
- 利用Angularjs测试引擎Karma进行自动化单元测试
Karma是Google用于angularjs框架单元测试的js引擎(javascript test runner ), angular1 和angular2项目源码的单元测试都是基于karma和ja ...
- Net设计模式实例之适配器模式(Adapter Pattern)
一.适配器模式简介(Brief Introduction) 适配器模式,将一个类装换成客户期望的另外一个接口.Adapter模式使的原本由于接口不兼容而不能工作的那些类可以一起工作. 二.解决的问题( ...
- 修复DapperExtension做Insert对象主键为Guid时不能赋值的问题
最新的dapperExtension有个bug,就是当做Insert操作的时候,实体的主键类型为GUID的时候,会自动生产一个新的GUID替换原来的GUID,使得使用者在Insert的时候不能在外部指 ...
- 趣味python编程之经典俄罗斯方块
国庆期间闲不住,用python把经典俄罗斯方块实现了一遍,找到了些儿时的乐趣.因此突发奇想,打算用python写点经典又确实有趣的小程序形成系列.正统编程之余也给自己找点儿乐趣,换个角度写程序. 原计 ...
- 《Pro ASP.NET MVC 4》异常整理
最近在和同学一起研究毕业设计,准备模仿<Pro ASP.NET MVC 4>里面的SportsStore设计模式和测试驱动开发. 由于和书中VS版本不同,发现不少问题,在此总结. 用户代码 ...
- Lind.DDD.Events领域事件介绍
回到目录 闲话多说 领域事件大叔感觉是最不好讲的一篇文章,所以拖欠了很久,但最终还是在2015年年前(阴历)把这个知识点讲一下,事件这个东西早在C#1.0时代就有了,那时学起来也是一个费劲,什么是委托 ...
- jQuery uploadify 文件上传
uploadify这个插件是基于js里面的jquery库写的.结合了ajax和flash,实现了这个多线程上传的功能.现在最新版为3.2.1. 在线实例 实例预览 Uploadify 在线实例Demo ...
- phpstorm 软件
PhpStorm是一款强大的IDE,非常适合于PHP开发人员及前端工程师.提供诸于:智能HTML/CSS/JavaScript/PHP编辑.代码质量分析.版本控制集成(SVN.GIT).调试和测试等功 ...
- CSS3文本溢出显示省略号
CCS3属性之text-overflow:ellipsis;的用法和注意之处 语法: text-overflow:clip | ellipsis 默认值:clip 适用于:所有元素 clip: 当对象 ...