《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',''),
('Er','Wang','4300-0000-0000-0002','erwang@msn.com',''),
('Xiao','Zhang','4300-0000-0000-0003','xiaozhang@msn.com',''),
('Xiao','Li','4300-0000-0000-0004','xiaoli@msn.com',''),
('Xiao','Ming','4300-0000-0000-0005','xiaoming@msn.com','')

  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 SQL Database (23) Azure SQL Database Dynamic Data Masking动态数据掩码的更多相关文章

  1. SQL Server ->> SQL Server 2016新特性之 -- Dynamic Data Masking

    Dynamic Data Masking是为了防止敏感数据暴露给未经授权的用户,以一种最小开销和维护成本的形式.Dynamic Data Masking用于表的字段,相当于盖住字段数据的一部分.比如一 ...

  2. 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. ...

  3. SQL Server 2016 的「動態資料遮罩 (Dynamic Data Masking)」

    一些特別注重資訊安全.個人資料的公司或產業 (如: 金融.保險業),通常「測試用資料庫」的資料,會加上「遮蔽:去識別化」的功能,避免個資外洩.以往必須自己撰寫 SQL 語句或 Stored Proce ...

  4. 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 ...

  5. sql server 里面的 dynamic Data Masking

    有时候啊,当我们存放在数据库里面的数据,需要明文存放,但是对于前台查询出来的,又不太希望明文放出去的时候(比方说客户的手机啊,邮箱啊)之类有点敏感的信息,之前通常是保存个明文,然后在前台展现的时候再特 ...

  6. Azure Tips 第一期: Azure 中的安全监视工具,数据存储, 动态数据屏蔽以及资源部署

    # 1 Azure 中的安全监视工具 微软 Azure 云提供以下监控工具,可用于观察操作和检测异常行为. Azure 安全中心 Azure 安全中心是一个统一的基础结构安全管理系统,可以增强数据中心 ...

  7. Azure SQL Database (20) 使用SQL Server 2016 Upgrade Advisor

    <Windows Azure Platform 系列文章目录>  Azure SQL Database (19) Stretch Database 概览      Azure SQL Da ...

  8. Azure SQL Database (25) Azure SQL Database创建只读用户

    <Windows Azure Platform 系列文章目录> 本文将介绍如何在Azure SQL Database创建只读用户. 请先按照笔者之前的文章:Azure SQL Databa ...

  9. 如何將 MySQL 資料庫轉移到 Microsoft SQL Server 與 Azure SQL Database

    MySQL 是相當常用之資料庫伺服器,而微軟雲端服務 Microsoft Azure 上 Azure SQL Database 是一個功能強大且經濟實惠的選擇,透過本篇文章,使用 SQL Server ...

随机推荐

  1. bootstrap学习笔记之为导航条添加标题、二级菜单及状态 http://www.imooc.com/code/3120

    为导航条添加标题.二级菜单及状态 加入导航条标题 在Web页面制作中,常常在菜单前面都会有一个标题(文字字号比其它文字稍大一些),其实在Bootstrap框架也为大家做了这方面考虑,其通过" ...

  2. Java基础知识二次学习--第四章 异常

    第四章 异常处理   时间:2017年4月26日11:16:39~2017年4月26日11:28:58 章节:04章_01节 04章_02节 视频长度:20:46+01:16 内容:异常的概念 心得: ...

  3. 【Spark2.0源码学习】-6.Client启动

    Client作为Endpoint的具体实例,下面我们介绍一下Client启动以及OnStart指令后的额外工作 一.脚本概览      下面是一个举例: /opt/jdk1..0_79/bin/jav ...

  4. 第 12 章 MySQL 可扩展设计的基本原则

    前言: 随着信息量的飞速增加,硬件设备的发展已经慢慢的无法跟上应用系统对处理能力的要求了.此时,我们如何来解决系统对性能的要求?只有一个办法,那就是通过改造系统的架构体系,提升系统的扩展能力,通过组合 ...

  5. jquery和vue对比

    1.jquery介绍:想必大家都用过jquery吧,这个曾经也是现在依然最流行的web前端js库,可是现在无论是国内还是国外他的使用率正在渐渐被其他的js库所代替,随着浏览器厂商对HTML5规范统一遵 ...

  6. python中的JSON(1)

    很多程序都要求用户输入某种信息, 例如:   让用户存储游戏首选项或提供要可视化的数据,程序把用户的信息存储在列表和字典等数据结构中, 用户关闭程序时,我们几乎总要保存他们提供的信息: 如何保存-- ...

  7. Java虚拟机原理

    1.编译机制 分析和输入到符号表: 词法分析:将代码转化为token序列 语法分析:由token序列生成抽象语法树 输入到符号表:将类中出现的符号输入到类的符号表 注解处理: 处理用户自定义注解,之后 ...

  8. NopCommerce(3.9)作业调度插件

    NopCommerce(3.9)作业调度插件视频教程录制完成,下面是插件源码下载地址和插件视频教程下载地址:插件下载地址: http://www.nopcommerce.com/p/2752/jobs ...

  9. nodeJS之二进制buffer对象

    前面的话 在ES6引入TypedArray之前,JavaScript语言没有读取或操作二进制数据流的机制.Buffer类被引入作为Nodejs的API的一部分,使其可以在TCP流和文件系统操作等场景中 ...

  10. 学习Spark——那些让你精疲力尽的坑

    这一个月我都干了些什么-- 工作上,还是一如既往的写bug并不亦乐乎的修bug.学习上,最近看了一些非专业书籍,时常在公众号(JackieZheng)上写点小感悟,我刚稍稍瞄了下,最近五篇居然都跟技术 ...