主頁 > 知識(shí)庫 > Sql Server 2016新功能之Row-Level Security(值得關(guān)注)

Sql Server 2016新功能之Row-Level Security(值得關(guān)注)

熱門標(biāo)簽:電話機(jī)器人怎么代理商 電銷需要外呼系統(tǒng)嗎 千呼電話機(jī)器人可以試用嗎 400電話辦理泰安 安卡拉地圖標(biāo)注app 我要地圖標(biāo)注數(shù)量有限制嗎 零成本地圖標(biāo)注賺錢 互聯(lián)網(wǎng)電話外呼系統(tǒng) 家庭農(nóng)場地圖標(biāo)注名稱怎樣起名

Sql Server 2016 有一個(gè)新功能叫 Row-Level Security ,大概意思是行版本的安全策略(原來我是個(gè)英語渣_(:з」∠)_)

直接上例子。這個(gè)功能相當(dāng)通過對(duì)表添加一個(gè)函數(shù)作為過濾規(guī)則,使得擁有不同條件的用戶(或者登錄名) 之類的,只能獲取到符合條件的數(shù)據(jù)。相對(duì)來說是提供了那么一點(diǎn)的便捷性,當(dāng)然也增加了數(shù)據(jù)的安全性,相當(dāng)于每個(gè)用戶連接進(jìn)來只能看到

符合規(guī)則的數(shù)據(jù)(當(dāng)然,這里的用戶只是一個(gè)舉例。其實(shí)是可以通過編寫過濾函數(shù)來實(shí)現(xiàn)的)

舉個(gè)例子

有三個(gè)用戶 Sales1 ,Sales 2 ,Manager 3個(gè)數(shù)據(jù)庫用戶,然后用一個(gè)Sales的表來寄存他們的訂單記錄

CREATE TABLE Sales 
( 
OrderID int, 
SalesRep sysname, 
Product varchar(10), 
Qty int 
); 
INSERT Sales VALUES 
(1, 'Sales1', 'Valve', 5), 
(2, 'Sales1', 'Wheel', 2), 
(3, 'Sales1', 'Valve', 4), 
(4, 'Sales2', 'Bracket', 2), 
(5, 'Sales2', 'Wheel', 5), 
(6, 'Sales2', 'Seat', 5); 
-- View the 6 rows in the table 
SELECT * FROM Sales; 
go

這是全部表的數(shù)據(jù)的截圖

然后添加3個(gè)用戶,分別就是Sales1 Sales2 Manager 3個(gè)用戶,分別對(duì)他們的賦予Sales表的查詢和刪除(用于測試刪除功能) 的權(quán)限。

CREATE USER Manager WITHOUT LOGIN; 
CREATE USER Sales1 WITHOUT LOGIN; 
CREATE USER Sales2 WITHOUT LOGIN;
GRANT SELECT,delete ON Sales TO Manager; 
GRANT SELECT,delete ON Sales TO Sales1; 
GRANT SELECT,delete ON Sales TO Sales2; 

然后以下是這個(gè)功能的核心部分。首先我們創(chuàng)建一個(gè)過濾函數(shù),然后將這個(gè)過濾函數(shù)添加到這個(gè)表的安全策略里面,就可以看到效果了。

函數(shù)邏輯很簡單,傳入一個(gè)@SalesRep 的名稱,用于匹配當(dāng)前的 User_Name。匹配了才返回?cái)?shù)據(jù)

然后下面一行是創(chuàng)建了一個(gè)安全策略,并且在Sales 的表里面使用函數(shù) fn_securitypredicate 作為表的篩選器。傳入函數(shù)的參數(shù)選定為 SalesRep 字段(也就是我們建表的那個(gè)銷售代表字段了)

CREATE FUNCTION fn_securitypredicate(@SalesRep AS sysname) 
RETURNS TABLE 
WITH SCHEMABINDING 
AS 
RETURN SELECT 1 AS fn_securitypredicate_result 
WHERE @SalesRep = USER_NAME() OR USER_NAME() = 'Manager'; 
CREATE SECURITY POLICY SalesFilter 
ADD FILTER PREDICATE dbo.fn_securitypredicate(SalesRep) 
ON dbo.Sales 
WITH (STATE = ON); 

然后我們看下查詢的結(jié)果

EXECUTE AS USER = 'Sales1'; 
SELECT * FROM Sales; 
REVERT; 
EXECUTE AS USER = 'Sales2'; 
SELECT * FROM Sales; 
REVERT; 
EXECUTE AS USER = 'Manager'; 
SELECT * FROM Sales; 
REVERT; 

效果就是這樣,當(dāng)然如果是要設(shè)置不同的過濾條件,設(shè)置不同的字段的時(shí)候,是可以通過上文的函數(shù)里面的代碼和安全策略進(jìn)行設(shè)置的。按照這個(gè)過濾情況,如果登錄用戶非Sales1 Sales2 Manager 3個(gè)其中之一,是什么都查詢不了的。

另外,用戶無法刪除被過濾的數(shù)據(jù)。比方說 Sales1 不能刪除或修改OrderID = 3 的數(shù)據(jù)。

RLS的出現(xiàn)也是能幫助我們減輕一定功能上面的實(shí)現(xiàn)的~

PS:下面看下SQL Server 2016新功能特性

1、PolyBase:更簡單高效的管理關(guān)系型和非關(guān)系型的T-SQL數(shù)據(jù);

2、AlwaysOn增強(qiáng)功能:實(shí)現(xiàn)高可用和性能次之,包括高達(dá)3個(gè)同步復(fù)制、DTC支持和次級(jí)的Round-Robin負(fù)載均衡;

3、Row Level Security(層級(jí)安全性控管):讓客戶基于用戶特征控制數(shù)據(jù)訪問,功能已內(nèi)置至數(shù)據(jù)中,無須再修改應(yīng)用;

4、Dynamic Data Masking(動(dòng)態(tài)數(shù)據(jù)屏蔽):有助于保護(hù)未被加密的數(shù)據(jù);

5、原生JSON支持:實(shí)現(xiàn)輕松解析和存儲(chǔ),以及輸出關(guān)系型數(shù)據(jù);

6、Temporal數(shù)據(jù)庫支持:可跟蹤歷史數(shù)據(jù)變化;

7、數(shù)據(jù)歷史記錄查詢,以便DBA可精確定位;

8、MDS增強(qiáng)功:提供主數(shù)據(jù)服務(wù)器的服務(wù)器管理能力;

9、增強(qiáng)的Azure混合備份功能:在Azure虛擬機(jī)中可實(shí)現(xiàn)更快的備份和恢復(fù)。

重要改進(jìn):

1、始終加密(Always Encrypted)

數(shù)據(jù)的存儲(chǔ)和使用都將采用由微軟研究院所開發(fā)的技術(shù)進(jìn)行加密;

2、彈性數(shù)據(jù)庫(Stretch Database)

SQL Server用戶將能夠把數(shù)據(jù)動(dòng)態(tài)延伸至Microsoft Azure,以便增強(qiáng)其性能;

3、實(shí)時(shí)業(yè)務(wù)分析與內(nèi)存中聯(lián)機(jī)事務(wù)處理(Real-time Operational Analytics In-Memory OLTP)

該分析技術(shù)于2014年首次引入,現(xiàn)在已變得更加先進(jìn)(更高的實(shí)時(shí)性能);

4、內(nèi)置高級(jí)分析(Built-in Advanced Analytics)、PolyBase和Mobile BI

在SQL Server 2016上,數(shù)據(jù)分析和PolyBase等技術(shù)會(huì)更易使用。此外,Mobile BI將被用于移動(dòng)設(shè)備上的圖形展示。

以上所述是小編給大家介紹的Sql Server 2016新功能之Row-Level Security(值得關(guān)注),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • Sql Server2016 正式版安裝程序圖解教程
  • SQL Server 2016正式版安裝配置過程圖文詳解
  • SQL Server2016正式版安裝配置方法圖文教程
  • SQL Server 2016的數(shù)據(jù)庫范圍內(nèi)的配置詳解
  • SQL Server 2016 CTP2.3 的關(guān)鍵特性總結(jié)

標(biāo)簽:來賓 池州 大同 文山 黃山 新鄉(xiāng) 濱州 東營

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Sql Server 2016新功能之Row-Level Security(值得關(guān)注)》,本文關(guān)鍵詞  Sql,Server,2016,新功能,之,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Sql Server 2016新功能之Row-Level Security(值得關(guān)注)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Sql Server 2016新功能之Row-Level Security(值得關(guān)注)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章