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) ) GOINSERT 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^' GOCREATE 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] GOEXEC 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字段都被屏蔽了。
这样就能保护客户的用户隐私了。
转载于:https://www.cnblogs.com/threestone/p/7116498.html
Azure SQL Database (23) Azure SQL Database Dynamic Data Masking动态数据掩码相关推荐
- SQL Server 动态数据掩藏(Dynamic Data Masking)探索和实施
动态数据掩藏(DDM) 是SQL Server 2016 CTP 2.1引入的新功能 数据库加密技术本质上改变了数据存储结构,而DDM只是在返回客户端的时候对数据进行隐藏.sysadmin的成员登陆账 ...
- 数据库安全之数据掩码:SQL新功能之动态数据掩码(SQL2016AZURE SQL)
我们在开发上都有这样的需求:对部分敏感数据进行屏蔽,如身份证信息,名字的一部分等 显示如: 在开发上,一般来是取出相应的文字后进行替换,如可以用下面的方法. function plusXing ...
- SQL Server 2016的新功能–动态数据屏蔽
There are many new features in SQL Server 2016, but the one we will focus on in this post is: SQL Se ...
- azure云数据库_在Azure SQL数据库中实现动态数据屏蔽
azure云数据库 In this article, we will review Dynamic Data Masking in the Azure SQL database. Dynamic Da ...
- SQL Server中的动态数据屏蔽
Security has been one of the prime concerns of database developers since the inception of database m ...
- SQL Server的历史– SQL Server功能的演变
介绍 (Introduction) This article will explain the main features in SQL Server 2017, 2016, 2015, 2014, ...
- 在SQL Server 2016中使用动态数据屏蔽来保护敏感数据
Dynamic Data Masking is a new security feature introduced in SQL Server 2016 that limits the access ...
- 利用Contained Database和DAC来开发基于SQL Server Denali和SQL Azure之上的应用程序
让应用程序的数据层可以在本地SQL Server服务器.私有云.共有云之间方便的部署.移动.升级和管理,正在迅速成为当前云时代的关键技术之一.SQL Server "Denali" ...
- sql azure 语法_Azure SQL Server中的CREATE DATABASE语句概述
sql azure 语法 In this article, we will review CREATE DATABASE statement in the Azure SQL database wit ...
最新文章
- 荣耀30pro系统_荣耀30 pro:正式再见!
- 虚拟机上SourceInsight访问Linux系统的代码
- Spring boot的properties文件编码设置
- 网页连接不上java服务端,用Java插入IP时无法连接到服务器
- 不可能的工作:在FBX模型导入脚本中生成模型的预置体
- java取消_java – 取消之前的请求
- 用BusyBox制作Linux根文件系统
- 吴恩达深度学习——神经网络基础
- android布局自适应小示例(用户反馈界面)
- erlang的又一力作——英雄联盟聊天服务器
- Ubuntu下将TinyOS移植到CC2430芯片
- 数据库中的E—R图画法
- 多线程服务器的常用编程模型
- 修复win10 服务器失败怎么办,fatal error怎么解决win10 修复Win10系统问题
- arduino旋转编码器控制步进电机
- vrchat模型房_VRChat之blender教程
- HTML实现图片点击放大效果
- abort()函数使用
- 会议OA项目(六)--- (待开会议、历史会议、所有会议)
- Lightroom Classic 9.0安装教程
热门文章
- 微信机、网络和java的相关知识点
- java哈希_Java Hashtable 类
- php设计分布图,MySQL分表实现上百万上千万记录分布存储的批量查询设计模式[图]_MySQL...
- scratch做简单跑酷游戏_腾讯游戏学院专家:做一个多线程游戏框架可以多简单?...
- java练习_Java基础笔试练习(一)
- golang 线程 Java线程_Golang 学习笔记(06)—— 多线程
- mybatis plus 链式编程查询
- python框架django入门_web框架之Django(python3入门)
- linux 引导程序修复工具,技术|Linux下修改引导器的工具:Boot-Repair
- java3d box 坐标,3d transform的坐标空间及位置