日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Azure SQL Database (23) Azure SQL Database Dynamic Data Masking动态数据掩码

發布時間:2024/9/5 数据库 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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。
? 對于數字數據類型(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) ) 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 Nameleisqlserversh.database.chinacloudapi.cnleisqlserversh.database.secure.chinacloudapi.cn
Login Nameleizhanguntrusteddev
Password
說明sysadmindb_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动态数据掩码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。