Azure SQL Database (23) Azure SQL Database Dynamic Data Masking动态数据掩码
《Windows Azure Platform 系列文章目录》
我们在使用关系型数据的时候,有时候希望:
- 管理员admin,可以查看到所有的数据
- 普通用户,某些敏感字段,比如信用卡,电子邮件等字段都是屏蔽的
在这种情况下,就可以使用Dynamic Data Masking动态数据掩码,对数据表的某些字段进行屏蔽。
比如我们对用户的信用卡信息、邮箱地址进行屏蔽,可以起到保护用户隐私的作用。
动态数据屏蔽策略:
1.不对其进行屏蔽的SQL用户:一组可以在 SQL 查询结果中获取非屏蔽数据的 SQL 用户或 AAD 标识。 始终不会对拥有管理员权限的用户进行屏蔽,这些用户可以看到没有任何屏蔽的原始数据。
2.屏蔽规则:一组规则,定义将要屏蔽的指定字段,以及使用的屏蔽函数。 可以使用数据库架构名称、表名称和列名称定义指定的字段。
3.屏蔽函数:一组方法,用于控制不同情况下的数据透露。
| 屏蔽函数 | 屏蔽逻辑 |
| 默认 |
根据指定字段的数据类型完全屏蔽 对于字符串数据类型(nchar、ntext、nvarchar),将使用 XXXX;如果字段大小小于 4 个字符,则使用更少的 X。 |
| 信用卡 |
此屏蔽方法公开指定字段的最后四位数,并添加一个信用卡格式的常量字符串作为前缀。 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动态数据掩码的更多相关文章
- 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. ...
- SQL Server 2016 的「動態資料遮罩 (Dynamic Data Masking)」
一些特別注重資訊安全.個人資料的公司或產業 (如: 金融.保險業),通常「測試用資料庫」的資料,會加上「遮蔽:去識別化」的功能,避免個資外洩.以往必須自己撰寫 SQL 語句或 Stored Proce ...
- 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 里面的 dynamic Data Masking
有时候啊,当我们存放在数据库里面的数据,需要明文存放,但是对于前台查询出来的,又不太希望明文放出去的时候(比方说客户的手机啊,邮箱啊)之类有点敏感的信息,之前通常是保存个明文,然后在前台展现的时候再特 ...
- Azure Tips 第一期: Azure 中的安全监视工具,数据存储, 动态数据屏蔽以及资源部署
# 1 Azure 中的安全监视工具 微软 Azure 云提供以下监控工具,可用于观察操作和检测异常行为. Azure 安全中心 Azure 安全中心是一个统一的基础结构安全管理系统,可以增强数据中心 ...
- Azure SQL Database (20) 使用SQL Server 2016 Upgrade Advisor
<Windows Azure Platform 系列文章目录> Azure SQL Database (19) Stretch Database 概览 Azure SQL Da ...
- Azure SQL Database (25) Azure SQL Database创建只读用户
<Windows Azure Platform 系列文章目录> 本文将介绍如何在Azure SQL Database创建只读用户. 请先按照笔者之前的文章:Azure SQL Databa ...
- 如何將 MySQL 資料庫轉移到 Microsoft SQL Server 與 Azure SQL Database
MySQL 是相當常用之資料庫伺服器,而微軟雲端服務 Microsoft Azure 上 Azure SQL Database 是一個功能強大且經濟實惠的選擇,透過本篇文章,使用 SQL Server ...
随机推荐
- 【转】c++ new操作符的重载
基本概念: 1. 操作符重载:C++支持对某个操作符赋予不同的语义 2. new操作符:申请内存,调用构造函数 关于c++ new操作符的重载 你知道c++ 的new 操作符和operator new ...
- CentOS 6.x 本地yum源配置与使用
系统默认已经安装了可使用yum的软件包,所以可以直接配置: # mount /dev/cdrom /mnt 挂载镜像,可以写到配置文件 ...
- Swift 入门之简单语法(二)
可选项判断 由于可选项的内容可能为 nil,而一旦为 nil 则不允许参与计算 因此使用中,经常需要判断可选项的内容是否为 nil 单个可选项判断 let url = NSURL(string: &q ...
- Comparing the contribution of NBA draft picks(转)
When it comes to the NBA draft, experts tend to argue about a number of things: at which position wi ...
- springboot 集成spring-session redis 实现分布式session
gradle 添加依赖 compile("org.springframework.session:spring-session:1.3.0.RELEASE") compile(&q ...
- springboot 获取hibernate 的 SessionFactory
注入bean package cn.xiaojf; import cn.xiaojf.today.data.rdb.repository.RdbCommonRepositoryImpl; import ...
- 兼容ie浏览器的placeholder的几种方法
项目中遇到的问题,试了几种方法,今天整理出来,如果有不合适的地方,希望大家多多提意见. 第一种方法是:使用html新增的属性 “data-”来实现的,实现的时候,input框没有使用placehole ...
- Java经典编程题50道之十二
企业发放的奖金根据利润提成:利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成, 高于10万元的部分 ,可提成7.5%:20万到40万之间 ...
- 使用nodeJS实现前端项目自动化之项目构建和文件合并
前面的话 一般地,我们使用构建工具来完成项目的自动化操作.本文主要介绍如何使用nodeJS来实现简单的项目结构构建和文件合并 项目构建 假设,最终实现的项目名称为'test',结构如下图所示 那么,首 ...
- JVM-5.字节码执行引擎
一.概述 二.栈帧结构 三.方法调用 四.方法执行 一.概述 虚拟机与物理机 虚拟机是一个相对于物理机的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件. ...