久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SQLServer動態掩碼的案例分析

133次閱讀
沒有評論

共計 2400 個字符,預計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章給大家分享的是有關 SQLServer 動態掩碼的案例分析的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考。一起跟隨丸趣 TV 小編過來看看吧。

動態數據掩碼(DDM)是 SQL Server 2016 引入的一個新功能。目的就是限制沒有權限的人去看到一些隱私信息。管理員用戶能夠決定哪些字段是需要被掩碼的,那么如何在不改變應用程序代碼的基礎上掩碼?還要保證無論如何訪問數據,都是一致的。

這是 Azure SQL 數據庫中首次引入的特性,它在云上接受用戶的測試,并已遷移到本地產品。我想很多其他的新特性也會遵循這條方式(云 – 本地)。

需要注意的是與我之前的行級別數據安全一樣,這些都是數據安全相關內容(推薦課程:MySQL 教程)

列數據掩碼

首先創建一個在一些數據上帶有掩碼版的表。我將在表定義中開始的一個字段中添加一個掩碼。注意,這樣做的方式是在數據類型之后使用“mask with()”格式,但是在 NULL 和默認選項之前,要在圓括號內包含 FUNCTION =,它指定了我們的函數。在引號內,我們指定掩碼。CREATE TABLE 語句如下

CREATE TABLE MyTable
 (MySSN VARCHAR (10) MASKED WITH (FUNCTION = default() ) DEFAULT (0000000000)
 , MyName VARCHAR (200) DEFAULT ( )
 , MyEmail VARCHAR (250) DEFAULT ( )
 , MyInt int
INSERT dbo. MyTable
 (MySSN , MyName, MyEmail , MyInt)
VALUES
 (1234567890 , Steve Jones , SomeSteve@SomeDomain.com , 10)

如果創建者查詢這個表,就會看到一個普通的表。我得到所有的數據,當它被插入時。這是因為我是一個有權限的用戶。同理那些具有 dbo 特權 (db_owner 或 sysadmin 角色) 的用戶將不會看到屏蔽數據。現在創建一個正常的用戶沒有高權限的用戶。當然,我需要授予普通的 SQL Server 權限來查看表中的數據。

CREATE USER mytest WITHOUT LOGIN
GRANT SELECT ON mytable TO mytest

現在我們可以用這個用戶查詢這個表,看一下有什么不同。

SQLServer 動態掩碼的案例分析

我們可以看到第一列包含掩碼數據。只有 x 出現在數據的位置。這就實現了我想要的,即對非特權用戶隱藏數據。注意,磁盤上的數據沒有更改。數據只有在返回給非特權用戶時才會被屏蔽。
我可以在執行計劃的最后一部分看到這種情況。我需要授予用戶查看計劃的權限,但是當我這樣做時,我看到的是用戶的計劃,使用的是上面相同的查詢。

SQLServer 動態掩碼的案例分析

我可以在表上定義其他類型的掩碼。有一個自定義的掩碼格式,允許控制顯示的內容,一個電子郵件地址的遮罩,和一個隨機的數字遮罩。我們將在另一篇文章中詳細討論這些問題。

現在可以添加掩碼到另一列上面,比如郵件 MyEmail 列,可以使用郵件掩碼的格式,具體代碼如下:

ALTER TABLE dbo.MyTable
 ALTER COLUMN MyEmail VARCHAR(250) MASKED WITH (FUNCTION= email() )
GO

然后查詢結果如下:

SQLServer 動態掩碼的案例分析

也可以對多個和列進行掩碼

CREATE TABLE MySecondTable (MyEmail VARCHAR( 250) MASKED WITH (FUNCTION= email() )
, MySSN VARCHAR (10) MASKED WITH (FUNCTION = default() )
, MyID INT MASKED WITH (FUNCTION = random(1,4) )
)GOINSERT MySecondTable VALUES
 (myname@mydomain.com , 1234567890 , 100)
 , (abrother@mycorp.com , 0123456789 , 555)
 , (somesister@somecompany.org , 9876543210 , 999)

查詢結果如下:

SQLServer 動態掩碼的案例分析

正如我們所看到的,我從不同的行得到不同的掩碼,每個掩碼應用于特定行的數據。

允許用戶看到掩碼真實數據

SQL Server 2016 中有一個新的 DDM 權限。這是 UNMASK 權限,它和其他任何權限一樣被授予。讓我們來看看這是如何工作的。我將創建一個具有與現有用戶相同權限的新用戶。然后我將查詢該表。

SQLServer 動態掩碼的案例分析

與之前相似的結果,然后我們在給用授權打開掩碼。

SQLServer 動態掩碼的案例分析

現在我們可以看到數據的顯示方式與特權用戶的顯示方式相同。對于 NewTester 用戶,所有的數據都是“未屏蔽的”。
然而,這也有不利的一面。UNMASK 權限在數據庫范圍內授予用戶。沒有按表或列劃分的粒度。如果用戶具有 UNMASK,他們可以查看存儲在數據庫中的表中具有 SELECT 權限的所有數據。我們可以通過使用 Newtest 查詢第一個表來看到這一點。

SQLServer 動態掩碼的案例分析

移除掩碼

代碼如下:

ALTER TABLE dbo.MySecondTable
 ALTER COLUMN MySSN DROP MASKED;

一旦我這樣做,用戶將直接看到真實數據。

SQLServer 動態掩碼的案例分析

MySSN 列的數據是未屏蔽的,但是 MyEmail 和 MyID 的數據仍然是屏蔽的

動態數據屏蔽是一個很好的新特性,旨在更容易地保護數據不受非特權用戶的影響。這可以在數據庫中實現,而不需要更改任何應用程序代碼,從而允許您以最小的成本和工作量對應用程序用戶屏蔽敏感數據。我還要提醒您,這并不是真正的安全特性。存儲在磁盤和表中的數據不會以任何方式更改。這仍然是純文本數據,如果用戶能夠查詢系統,他們仍然可以潛在地查詢您的數據并發現其值。

感謝各位的閱讀!關于 SQLServer 動態掩碼的案例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-18發表,共計2400字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 石台县| 平潭县| 措美县| 高雄县| 石嘴山市| 汝南县| 株洲县| 开平市| 北海市| 溧水县| 应用必备| 佛冈县| 南丰县| 乌恰县| 都江堰市| 普兰店市| 仁化县| 时尚| 绩溪县| 平乐县| 江油市| 萨嘎县| 藁城市| 河北省| 赣榆县| 江口县| 南充市| 阳江市| 乐都县| 桑日县| 洱源县| 福泉市| 确山县| 寿宁县| 阿巴嘎旗| 莫力| 巧家县| 郎溪县| 巴塘县| 安义县| 壶关县|