<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      WizardWu 編程網(wǎng)

      一位臺灣的工程師,接觸 .NET 逾十年,近年研究 SQL Server、Performance Tuning、手機應(yīng)用

      博客園 首頁 新隨筆 聯(lián)系 訂閱 管理

      一些特別注重資訊安全、個人資料的公司或產(chǎn)業(yè) (如: 金融、保險業(yè)),通常「測試用資料庫」的資料,會加上「遮蔽;去識別化」的功能,避免個資外洩。以往必須自己撰寫 SQL 語句或 Stored Procedure 來處理,且遇到不同的資料庫使用者,要給予不同瀏覽權(quán)限時,寫起來就更麻煩。現(xiàn)在 SQL Server 2016 已內(nèi)建「動態(tài)資料遮罩 (Dynamic Data Masking)」功能,除了資料可針對自訂邏輯來遮蔽,還可針對不同的資料庫使用者,給予不同的瀏覽權(quán)限。

       --建立測試資料表
       CREATE TABLE Employee(
        EmpNo int identity primary key,
        [Name] nvarchar(5),
        ID varchar(10),
        Hireday date,
        Birthday date,
        Age as datediff(year,Birthday,getdate())+1,
        Gender bit,
        Email varchar(50), 
        Tel varchar(20),
        Salary money,
        CreditCard varchar(20))
       
       --新增測試資料
       INSERT Employee 
       VALUES (N'王二','A123456789','19700101','19800101',0,'aaa@wizard.com','02-12345678',100500,'1234-5678-9012-3456')
             ,(N'李二三','B123456789','19771010','19851010',1,'bbb@wizard.com','03-12345678',88000,'7890-1234-5678-9012')
             ,(N'陳二三四','C123456789','19851231','19951231',1,'ccc@wizard.com','04-12345678',723456,'3456-7890-1234-5678')
      建立測試資料
       --測試 default 遮罩,在 varchar 型別
       ALTER TABLE Employee ALTER COLUMN Tel ADD MASKED WITH(FUNCTION='default()')
       GO
       --測試 default 遮罩,在 bit 型別 (bit會全為零)
       ALTER TABLE Employee ALTER COLUMN Gender ADD MASKED WITH(FUNCTION='default()')
       GO
       --測試 default 遮罩,在 money 型別
       ALTER TABLE Employee ALTER COLUMN Salary ADD MASKED WITH(FUNCTION='default()')
       GO
       --測試 default 遮罩,在 date 型別
       ALTER TABLE Employee ALTER COLUMN Hireday ADD MASKED WITH(FUNCTION='default()')
       GO
       --測試 email 遮罩,在 varchar 型別
       ALTER TABLE Employee ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
       --建立一般使用者 user1
      CREATE USER user1 WITHOUT LOGIN
      GRANT SELECT ON Employee TO user1
       
      --以 sa (最高權(quán)限者) 瀏覽 (無遮罩)
      SELECT * FROM Employee (NOLOCK);
       
      --以 user1 瀏覽 (有遮罩)
      EXEC AS USER='user1'
            SELECT * FROM Employee (NOLOCK);
       REVERT


      圖 1 使用者 sa 和 user1 看到的結(jié)果,前者無遮罩,後者有遮罩

      --------------------------------------------

       --測試自訂遮罩
       ALTER TABLE Employee ALTER COLUMN [Name] ADD MASKED WITH (FUNCTION = 'partial(1,"X",1)')  --Name 保留第一個和最後一個字,其他用 X 取代
       ALTER TABLE Employee ALTER COLUMN CreditCard ADD MASKED WITH (FUNCTION = 'partial(0,"xxxx-xxxx-xxxx-",4)') --信用卡,只顯示最後四碼
       ALTER TABLE Employee ALTER COLUMN ID ADD MASKED WITH (FUNCTION = 'partial(2,"________",0)')  --ID 保留前兩個字,其他用 8 個底線符號取代
        
       --測試亂數(shù)遮罩
       ALTER TABLE Employee ALTER COLUMN Salary ADD MASKED WITH(FUNCTION = 'random(10000,100000)')  --Salary 顯示介於 10000 到 100000 的亂數(shù)


      圖 2 使用者 sa 和 user1 看到的結(jié)果,前者無遮罩,後者有遮罩

      --------------------------------------------

      --查詢有啟用 Dynamic Data Masking 功能的資料表和欄位

      SELECT m.name, t.name, c.user_type_id, m.is_masked, m.masking_function
       FROM sys.masked_columns (NOLOCK) m
       JOIN sys.tables (NOLOCK) t ON m.[object_id]=t.[object_id]
       JOIN sys.columns (NOLOCK) c ON m.[object_id]=c.[object_id] AND m.name=c.name
       WHERE m.is_masked=1;

      --------------------------------------------

      --希望某個使用者 user2 瀏覽時,不受遮罩影響
      GRANT UNMASK TO user2

      --------------------------------------------

      --針對某個資料表或欄位,移除 Dynamic Data Masking 功能
      ALTER TABLE Employee ALTER COLUMN CreditCard DROP MASKED

      --測試是否已移除 Dynamic Data Masking 功能
      exec('SELECT * FROM Employee (NOLOCK)') as user='user1'

      --------------------------------------------
      --------------------------------------------
      參考書籍:

      [1] Microsoft SQL Server 2016 資訊安全實戰(zhàn), ch6, 悅知出版社
      http://www.delightpress.com.tw/book.aspx?book_id=SKUD00027
      --------------------------------------------
      相關(guān)文章:

      [1] 動態(tài)資料遮罩
      https://msdn.microsoft.com/zh-tw/library/mt130841.aspx

      [2] SQL2016-動態(tài)資料遮罩
      https://dotblogs-testslot.azurewebsites.net/ricochen/2016/12/02/222254

      [3] sql server 里面的 dynamic Data Masking
      http://www.rzrgm.cn/Gin-23333/p/5412028.html

      [4] Dynamic Data Masking筆記(SQL Server 2016新功能)
      https://dotblogs.com.tw/stanley14/2016/03/19/090752

      [5] CP2-新功能-Dynamic Data Masking
      https://dotblogs.com.tw/colinlin/2015/06/16/151581

      [6] SQL Server 2016 Security Roadmap Session Notes
      https://www.brentozar.com/archive/2015/05/sql-server-2016-security-roadmap-session-notes-msignite/
      --------------------------------------------
      --------------------------------------------

       

      posted on 2017-01-12 13:56  WizardWu  閱讀(2105)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲成av人片色午夜乱码| 精品久久亚洲中文无码| 潮喷无码正在播放| av大片| 草草浮力地址线路①屁屁影院| 精品国产精品中文字幕| 青青青爽在线视频观看| 亚洲国产天堂一区二区三区| 国内自拍小视频在线看| 久久精品国产www456c0m| 精品无码av无码专区| 精品国产乱弄九九99久久 | 无码抽搐高潮喷水流白浆| 老河口市| 国产v综合v亚洲欧美大天堂| 九九在线精品国产| 新乡市| 国产精品无遮挡猛进猛出| 国产男人的天堂在线视频| 少妇被粗大的猛烈xx动态图| 亚洲区成人综合一区二区| 极品尤物被啪到呻吟喷水| 欧美午夜精品久久久久久浪潮| 国产精品一品二区三区日韩| 久久综合狠狠综合久久| 国产午夜精品福利91| 99精品人妻少妇一区| 国产网友愉拍精品视频| 国产精品天干天干综合网| 72种姿势欧美久久久久大黄蕉| 亚洲精品无码AV人在线观看国产| 亚洲欧美日韩在线码| 久久夜色精品国产亚洲a| 一区二区三区av天堂| 巴马| 国产热A欧美热A在线视频| 性无码专区无码| 午夜福利精品国产二区| 浴室人妻的情欲hd三级国产| 毛片免费观看视频| 毛片av在线尤物一区二区|