亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

數據庫安全之數據掩碼:SQL新功能之動態數據掩碼(SQL2016&AZURE SQL)

2024-07-21 02:52:42
字體:
來源:轉載
供稿:網友


我們在開發上都有這樣的需求:對部分敏感數據進行屏蔽,如身份證信息,名字的一部分等

顯示如:

 

在開發上,一般來是取出相應的文字后進行替換,如可以用下面的方法。

 

function plusXing (str,StartLen,endLen) {

    var len = str.length-StartLen -endLen;

    var xing = '';

    for (vari=0;i<len;i++) {

       xing+='*';

    }

    return str.substr(0,StartLen)+xing+str.substr(str.length-endLen);

}

如輸入 plusXing(“18023456789”,3,4)

返回結果:180****6789

但是這樣的方法存在安全隱患,因為讀取出來的源數據是明文。因此在SQL2016和Azure SQL中有了一個數據掩碼(Azure SQL翻譯為動態數據掩碼,Technet上面翻譯為動態數據屏蔽)的新功能幫助解決這樣的問題。

下面我們來看看能實現什么好玩的功能:

先在本地做個測試:

創建一張表

createTABLE Membership 

 (MemberIDintIDENTITYPRIMARYKEY, 

  FirstName varchar(100)MASKEDWITH (FUNCTION='default()')NULL,  ----啟用默認掩碼

  LastName varchar(100)NOTNULL, 

  Phone# varchar(13)MASKEDWITH  (FUNCTION='partial(1,"XXXXXXX",0)')NULL, ---啟動動態屏蔽,從第一個字符開始使用XXXXX替換,最后不顯示

  Email varchar(100)MASKEDWITH (FUNCTION='email()')NULL);  ----啟用email掩碼

  插入數據:

 INSERT Membership(FirstName, LastName, Phone#, Email)VALUES  

('張','三豐','13980040000','zhangsanfeng@contoso.com'), 

('王','一箭','13698000000','wangyijian@contoso.com.co'), 

('獨孤','九劍','13599999999','dugujiujian@contoso.net'); 

SELECT*FROM Membership; 

分配一個testuser用戶賦予查詢權限

CREATEUSER TestUserWITHOUTLOGIN; 

GRANTSELECTON MembershipTO TestUser; 

使用testuser身份進行查詢

EXECUTEASUSER='TestUser'; 

SELECT*FROM Membership; 

REVERT; 

結果如下:

 

更改掩碼

ALTERTABLE Membership 

ALTERCOLUMN Phone#varchar(13)MASKEDWITH(FUNCTION='partial(3,"****",4)'); ---更改為從第三位開始,使用*來做掩碼,最后顯示4位

 

ALTERTABLE Membership 

ALTERCOLUMN Phone#varchar(13)MASKEDWITH(FUNCTION='partial(3,"****",5)'); ---更改為從第三位開始,使用*來做掩碼,,最后顯示5位

 

 

授權查看未經屏蔽數據的權限

授予UNMASK權限即可讓 TestUser查看未經屏蔽的數據

GRANT UNMASKTO TestUser; 

EXECUTEASUSER='TestUser'; 

SELECT*FROM Membership; 

REVERT;  

 

 

刪除未屏蔽權限

-- Removingthe UNMASK permission 

REVOKE UNMASKTO TestUser; 

 

 

刪除動態數據屏蔽

以下語句將刪除上述示例中創建的針對FirstName列的屏蔽:

ALTER TABLE Membership  

ALTER COLUMNFirstName DROP MASKED; 

 

 

查詢屏蔽列

通過以下語句可以查詢到那些列使用了屏蔽

SELECT c.name, tbl.nameas table_name, c.is_masked, c.masking_function 

FROMsys.masked_columnsAS c 

JOINsys.tablesAS tbl  

   ON c.[object_id]= tbl.[object_id] 

WHERE is_masked= 1; 

 

 

以上是在SQL 2016上完成的,再來看看azure SQL上怎么玩

第一種方法也使用上面的代碼,用SQLmanagement studio連接azureSQL 如圖

 

 

一樣執行之前的代碼,看看結果

createTABLE Membership 

 (MemberIDintIDENTITYPRIMARYKEY, 

  FirstName varchar(100)MASKEDWITH (FUNCTION='default()')NULL,  ----啟用默認掩碼

  LastName varchar(100)NOTNULL, 

  Phone# varchar(13)MASKEDWITH  (FUNCTION='partial(3,"****",4)')NULL, ---啟動動態屏蔽,

  Email varchar(100)MASKEDWITH (FUNCTION='email()')NULL);  ----啟用email掩碼

  

   INSERT Membership(FirstName, LastName, Phone#, Email)VALUES  

('張','三豐','13980040000','zhangsanfeng@contoso.com'), 

('王','一箭','13698000000','wangyijian@contoso.com.co'), 

('獨孤','九劍','13599999999','dugujiujian@contoso.net'); 

SELECT*FROM Membership; 

 

CREATEUSER TestUserWITHOUTLOGIN; 

GRANTSELECTON MembershipTO TestUser; 

 

EXECUTEASUSER='TestUser'; 

SELECT*FROM Membership; 

REVERT; 

 

 

 

查看掩碼情況

SELECT c.name, tbl.nameas table_name, c.is_masked, c.masking_function 

FROMsys.masked_columnsAS c 

JOINsys.tablesAS tbl  

   ON c.[object_id]= tbl.[object_id] 

WHERE is_masked = 1

 

第二種方法,在ARM界面下,選擇Azure SQL,數據的選項里面就有動態數據掩碼選項。

 

點擊后

 

已經展示了使用個掩碼的情況,也可以在此界面進行添加,更加簡單。

 

 

 

 

也可以在這個界面進行修改

 

 

 

SQL數據庫動態數據掩碼通過對非特權用戶模糊化敏感數據來限制此類數據的泄露。

?不對其進行屏蔽的 SQL用戶 - 一組可以在 SQL 查詢結果中獲取非屏蔽數據的 SQL用戶或 AAD 標識。 請注意,始終不會對擁有管理員權限的用戶進行屏蔽,這些用戶可以查看沒有任何屏蔽的原始數據。

?屏蔽規則 -一組規則,定義將要屏蔽的指定字段,以及要使用的屏蔽函數。 可以使用數據庫架構名稱、表名稱和列名稱定義指定的字段。

?屏蔽函數 -一組方法,用于控制不同情況下的數據透露。

 

 

函數

說明

示例

默認

根據指定字段的數據類型進行完全屏蔽。對于字符串數據類型,可以使用 XXXX或者在字段不到 4 個字符長的情況下使用更少的 X(char、nchar、varcharnvarchar、text、ntext)。對于數字數據類型,可使用零值(bigint****bit****decimal、int、money、numeric、smallint、smallmoney、tinyint、float、real)。對于日期和時間數據類型,可使用 01.01.1900 00:00:00.0000000(date、datetime2、datetime、datetimeoffset、smalldatetime、time)。對于二進制數據類型,可使用單字節的 ASCII值 0(binary、varbinary、image)。

列定義語法示例:Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULLALTER 語法示例:ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')

電子郵件

該屏蔽方法公開電子郵件地址的第一個字母,以及電子郵件地址格式中的常量后綴“.com”。 。aXXX@XXXX.com。

定義語法示例:Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULLALTER 語法示例:ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()'

隨機

一種隨機屏蔽函數,適用于任何數字類型,可以在指定范圍內使用隨機值來屏蔽原始值。

定義語法示例:Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])')ALTER 語法示例:ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')

自定義字符串

該屏蔽方法公開第一個和最后一個字母,在中間添加自定義填充字符串。prefix,[padding],suffix注意:如果因原始值太短而無法進行完整的屏蔽,則不會公開部分前綴或后綴。

定義語法示例:FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULLALTER 語法示例:ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')其他示例: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)') ALTER COLUMN [Social Security Number] ADD MASKED WITH (FUNCTION = 'partial(0,"XXX-XX-",4)')

 

Permissions

不需任何特殊權限即可使用動態數據屏蔽來創建表,只需標準的CREATE TABLE權限以及對架構的 ALTER權限。

添加、替換或刪除對列的屏蔽,需要ALTER ANY MASK權限以及對表的 ALTER權限。 可以將 ALTER ANY MASK權限授予安全負責人。

具有表的SELECT權限的用戶可以查看表數據。列在被定義為“已屏蔽”后,將顯示屏蔽后的數據。 對于需要從定義了屏蔽的列中檢索非屏蔽數據的用戶,可授予其UNMASK權限。

針對數據庫的CONTROL權限包括 ALTER ANYMASKUNMASK權限。

  

安全說明:可使用推斷或暴力技術繞過屏蔽

上面的例子中,我可以這樣進行暴力推斷

也就是說動態掩碼是一個障眼法,不能阻止你去窺探數據的本身。上面的例子就是testuser看到數據,但是他可以推測出了姓“張”的數據。

 

總結:

 

動態數據屏蔽 (DDM)通過對非特權用戶屏蔽敏感數據來限制敏感數據的公開。 它可以用于顯著簡化應用程序中安全性的設計和編碼。

動態數據屏蔽允許用戶在盡量減少對應用程序層的影響的情況下,指定需要披露的敏感數據,從而防止對敏感數據的非授權訪問。 DDM可以在數據庫上進行配置,以隱藏對指定數據庫字段進行查詢時獲得的結果集中的敏感數據,同時不會更改數據庫中的數據。 可以輕松地對現有應用程序使用動態數據屏蔽,因為屏蔽規則是應用于查詢結果。許多應用程序可以屏蔽敏感數據,而無需修改現有查詢。

一個中央數據屏蔽策略直接對數據庫中的敏感字段起作用。

 指定有權訪問敏感數據的特權用戶或角色。

 DDM采用完全屏蔽和部分屏蔽功能,以及用于數值數據的隨機屏蔽。

 簡單Transact-SQL命令定義和管理掩碼。

 

例如,呼叫中心支持人員通過身份證號或信用卡號的幾個數字就可以辨識呼叫者,但系統不會將這些數據內容完全公開給該支持人員。 可以通過定義屏蔽規則來屏蔽查詢結果集中身份證號或信用卡號最后四位數字以外的所有數字。另一個例子就是,在需要進行故障排除時,開發人員可以通過對數據進行適當的數據屏蔽來保護個人身份信息 (PII)數據,因此可以在不違反遵從性法規的情況下,對生產環境進行查詢。

動態數據屏蔽旨在限制敏感數據的公開,防止沒有訪問權限的用戶查看敏感數據。 動態數據屏蔽并不是要防止數據庫用戶直接連接到數據庫并運行可以公開敏感數據的詳盡查詢。動態數據屏蔽是對其他 SQL Server安全功能(審核、加密、行級別安全性…)的補充,因此,強烈建議你將此功能與上述功能一起使用,以便更好地保護數據庫中的敏感數據

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人欧美在线观看| 久热在线中文字幕色999舞| 亚洲电影免费观看高清完整版在线| 91tv亚洲精品香蕉国产一区7ujn| 91久热免费在线视频| 久久av红桃一区二区小说| 91黑丝在线观看| 亚洲精品一区二三区不卡| 中文字幕精品在线| 日韩中文字幕免费视频| 国产一区二区香蕉| 亚洲国产古装精品网站| 亚洲成人1234| 中文国产成人精品久久一| 久久九九精品99国产精品| 久久99热精品这里久久精品| 欧美日韩午夜剧场| 国产精品免费久久久| 77777少妇光屁股久久一区| 亚洲欧洲第一视频| 91理论片午午论夜理片久久| 久久人人97超碰精品888| 久久这里只有精品99| 成人黄色av免费在线观看| 国内精品久久久久久中文字幕| 亚洲午夜小视频| 精品国产福利视频| 亚洲国产精品人人爽夜夜爽| 亚洲毛片一区二区| 亚洲自拍偷拍一区| 亚洲性猛交xxxxwww| 成人激情视频在线| 国产欧美在线播放| 成人黄色免费网站在线观看| 国产精品视频男人的天堂| 亚洲一区二区三区乱码aⅴ蜜桃女| 青草青草久热精品视频在线网站| 川上优av一区二区线观看| 成人黄色av网| 91社区国产高清| 97在线观看免费| 国产精品丝袜视频| 欧美老女人www| 全亚洲最色的网站在线观看| 日韩高清欧美高清| 91高潮精品免费porn| www.美女亚洲精品| 中文字幕欧美日韩| 日本三级韩国三级久久| 久久国产精品久久久久久久久久| 欧美精品少妇videofree| 最近2019中文字幕mv免费看| 奇米四色中文综合久久| 欧美超级免费视 在线| www.xxxx欧美| 久久精品视频99| 2019中文字幕在线观看| 日韩在线小视频| 精品视频在线导航| 亚洲丝袜一区在线| 在线观看精品自拍私拍| 精品久久久久久国产| 亚洲国产私拍精品国模在线观看| 亚洲国产成人久久综合| 中文字幕在线视频日韩| 最新亚洲国产精品| 欧美精品国产精品日韩精品| 亚洲美女av在线播放| 久久久av电影| 国产精品福利在线观看| 久久久国产视频91| 亚洲天堂久久av| 久久av资源网站| 疯狂蹂躏欧美一区二区精品| www.午夜精品| 久久精品中文字幕免费mv| 国产精品视频网站| 国产69精品久久久久9999| 欧美与欧洲交xxxx免费观看| 亚洲人精选亚洲人成在线| 91超碰中文字幕久久精品| 亚洲一二三在线| 国产经典一区二区| 国内免费久久久久久久久久久| 91在线|亚洲| 色偷偷av一区二区三区| 中文国产成人精品| 国内精品400部情侣激情| 日韩在线视频二区| 欧洲中文字幕国产精品| 97精品国产97久久久久久免费| 日韩精品有码在线观看| 97热在线精品视频在线观看| 日韩福利在线播放| 少妇高潮久久久久久潘金莲| 最新国产成人av网站网址麻豆| 欧美在线亚洲在线| 国产精品视频一区二区高潮| 日韩专区中文字幕| 国产精品久久久久久久电影| 美女国内精品自产拍在线播放| 欧美性xxxxx极品| 中文字幕日韩欧美在线视频| 久久影院在线观看| 97精品欧美一区二区三区| 热久久美女精品天天吊色| 亚洲精品美女在线观看| 中文字幕成人精品久久不卡| 欧美性xxxxx极品娇小| 91久久久久久久久久| 亚洲人av在线影院| 97国产在线观看| 欧洲成人在线视频| 国产亚洲成精品久久| 欧美激情网友自拍| 国产精品草莓在线免费观看| 亚洲亚裔videos黑人hd| 成人av电影天堂| 午夜精品久久久久久久白皮肤| 中文字幕国产亚洲| 97精品在线视频| 亚洲精品美女在线观看| 国产亚洲一级高清| 亚洲激情视频在线观看| 国产精品视频精品视频| 欧美性少妇18aaaa视频| 日本免费一区二区三区视频观看| 最近中文字幕mv在线一区二区三区四区| 91av在线不卡| 久久久久久久久久久成人| 91成人性视频| 国产一区二区精品丝袜| 另类专区欧美制服同性| 国产一区二区视频在线观看| 国产亚洲精品日韩| 国产精品香蕉国产| 亚洲欧美福利视频| 国产午夜精品久久久| 久久久久久久成人| 在线亚洲午夜片av大片| 久久精品国产99国产精品澳门| 亚洲区在线播放| 国产v综合ⅴ日韩v欧美大片| 日韩中文字幕在线观看| 欧美日韩亚洲一区二区三区| 最近日韩中文字幕中文| 97国产精品视频人人做人人爱| 亚洲欧洲黄色网| 国产精品久久久久久久久久久久久| 欧美成人精品xxx| 日韩av在线看| 国产精品网红福利| 国产婷婷成人久久av免费高清| 欧美大码xxxx| 亚洲国产精品成人av| 国外成人在线视频| 69av在线播放| 亚洲男人的天堂在线播放| 亚洲在线免费看| 91精品国产一区| 亚洲国产精品成人va在线观看| 欧美亚州一区二区三区| 国产精品人成电影在线观看| 亚洲欧美日韩精品久久|