Azure SQL Database (23) Azure SQL Database Dynamic Data Masking动态数据掩码
《Windows Azure Platform 系列文章目錄》
?
我們在使用關(guān)系型數(shù)據(jù)的時候,有時候希望:
- 管理員admin,可以查看到所有的數(shù)據(jù)
- 普通用戶,某些敏感字段,比如信用卡,電子郵件等字段都是屏蔽的
?
在這種情況下,就可以使用Dynamic Data Masking動態(tài)數(shù)據(jù)掩碼,對數(shù)據(jù)表的某些字段進(jìn)行屏蔽。
比如我們對用戶的信用卡信息、郵箱地址進(jìn)行屏蔽,可以起到保護(hù)用戶隱私的作用。
?
動態(tài)數(shù)據(jù)屏蔽策略:
1.不對其進(jìn)行屏蔽的SQL用戶:一組可以在 SQL 查詢結(jié)果中獲取非屏蔽數(shù)據(jù)的 SQL 用戶或 AAD 標(biāo)識。 始終不會對擁有管理員權(quán)限的用戶進(jìn)行屏蔽,這些用戶可以看到?jīng)]有任何屏蔽的原始數(shù)據(jù)。
2.屏蔽規(guī)則:一組規(guī)則,定義將要屏蔽的指定字段,以及使用的屏蔽函數(shù)。 可以使用數(shù)據(jù)庫架構(gòu)名稱、表名稱和列名稱定義指定的字段。
3.屏蔽函數(shù):一組方法,用于控制不同情況下的數(shù)據(jù)透露。
?
| 屏蔽函數(shù) | 屏蔽邏輯 |
| 默認(rèn) | 根據(jù)指定字段的數(shù)據(jù)類型完全屏蔽 對于字符串?dāng)?shù)據(jù)類型(nchar、ntext、nvarchar),將使用 XXXX;如果字段大小小于 4 個字符,則使用更少的 X。 |
| 信用卡 | 此屏蔽方法公開指定字段的最后四位數(shù),并添加一個信用卡格式的常量字符串作為前綴。 XXXX-XXXX-XXXX-1234 |
| 電子郵件 | 此屏蔽方法公開第一個字母并將域替換為 XXX.com,并使用一個電子郵件地址格式的常量字符串作為前綴。 aXX@XXXX.com |
| 隨機(jī)數(shù) | 此屏蔽方法根據(jù)選定邊界和實際數(shù)據(jù)類型生成隨機(jī)數(shù)。 如果指定的邊界相等,則屏蔽函數(shù)將是常數(shù)。 |
| 自定義文本 | 此屏蔽方法公開第一個和最后一個字符,并在中間添加一個自定義填充字符串。 如果原始字符串短于公開的前綴和后綴,則只使用填充字符串。 |
準(zhǔn)備工作:
1.準(zhǔn)備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.創(chuàng)建一個Azure SQL Database,命名為leisqldbsh。
同時創(chuàng)建新的Azure SQL Database Server,創(chuàng)建登錄用戶名:leizhang
3.創(chuàng)建完畢后,請設(shè)置SQL Server的IP白名單。
4.使用SSMS鏈接這個數(shù)據(jù)庫。在leisqldbsh下,
執(zhí)行以下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中創(chuàng)建的用戶leizhang,查詢UserInfor表,就可以查詢到所有的數(shù)據(jù)。如下圖:
?
6.然后我們需要創(chuàng)建另外一個用戶untrusteddev。
在master database下,執(zhí)行下面的T-SQL命令:
CREATE LOGIN untrusteddev WITH PASSWORD = 'N0tL0Lc4t5^' GOCREATE USER untrusteddev FOR LOGIN untrusteddev WITH DEFAULT_SCHEMA = [dbo] GO?
7.在leisqldbsh database下,執(zhí)行下面的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.這樣我們針對數(shù)據(jù)表的2個字段的Data Masking都設(shè)置好了。
我們回顧一下數(shù)據(jù)庫的鏈接信息:
| 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字段都被屏蔽了。
這樣就能保護(hù)客戶的用戶隱私了。
轉(zhuǎn)載于:https://www.cnblogs.com/threestone/p/7116498.html
總結(jié)
以上是生活随笔為你收集整理的Azure SQL Database (23) Azure SQL Database Dynamic Data Masking动态数据掩码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TJU1036
- 下一篇: linux cmake编译源码,linu