程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> Sql Server 2016新功用之Row-Level Security(值得關注)

Sql Server 2016新功用之Row-Level Security(值得關注)

編輯:MSSQL

Sql Server 2016新功用之Row-Level Security(值得關注)。本站提示廣大學習愛好者:(Sql Server 2016新功用之Row-Level Security(值得關注))文章只能為提供參考,不一定能成為您想要的結果。以下是Sql Server 2016新功用之Row-Level Security(值得關注)正文


Sql Server 2016 有一個新功用叫 Row-Level Security ,大約意思是行版本的平安戰略(原來我是個英語渣_(:з」∠)_)

直接上例子。這個功用相當經過對表添加一個函數作為過濾規則,使得擁有不同條件的用戶(或許登錄名) 之類的,只能獲取到契合條件的數據。絕對來說是提供了那麼一點的便捷性,當然也添加了數據的平安性,相當於每個用戶銜接出去只能看到

契合規則的數據(當然,這裡的用戶只是一個舉例。其實是可以經過編寫過濾函數來完成的)

舉個例子

有三個用戶 Sales1 ,Sales 2 ,Manager 3個數據庫用戶,然後用一個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

這是全部表的數據的截圖

然後添加3個用戶,辨別就是Sales1 Sales2 Manager 3個用戶,辨別對他們的賦予Sales表的查詢和刪除(用於測試刪除功用) 的權限。

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; 

然後以下是這個功用的中心局部。首先我們創立一個過濾函數,然後將這個過濾函數添加到這個表的平安戰略外面,就可以看到效果了。

函數邏輯很復雜,傳入一個@SalesRep 的稱號,用於婚配以後的 User_Name。婚配了才前往數據

然後上面一行是創立了一個平安戰略,並且在Sales 的表外面運用函數 fn_securitypredicate 作為表的挑選器。傳入函數的參數選定為 SalesRep 字段(也就是我們建表的那個銷售代表字段了)

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); 

然後我們看下查詢的後果

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

效果就是這樣,當然假如是要設置不同的過濾條件,設置不同的字段的時分,是可以經過上文的函數外面的代碼和平安戰略停止設置的。依照這個過濾狀況,假如登錄用戶非Sales1 Sales2 Manager 3個其中之一,是什麼都查詢不了的。

另外,用戶無法刪除被過濾的數據。比如說 Sales1 不能刪除或修正OrderID = 3 的數據。

RLS的呈現也是能協助我們加重一定功用下面的完成的~

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

1、PolyBase:更復雜高效的管理關系型和非關系型的T-SQL數據;

2、AlwaysOn加強功用:完成高可用和功能次之,包括高達3個同步復制、DTC支持和次級的Round-Robin負載平衡;

3、Row Level Security(層級平安性控管):讓客戶基於用戶特征控制數據訪問,功用已內置至數據中,無須再修正使用;

4、Dynamic Data Masking(靜態數據屏蔽):有助於維護未被加密的數據;

5、原生JSON支持:完成輕松解析和存儲,以及輸入關系型數據;

6、Temporal數據庫支持:可跟蹤歷史數據變化;

7、數據歷史記載查詢,以便DBA可准確定位;

8、MDS加強功:提供主數據服務器的服務器管理才能;

9、加強的Azure混合備份功用:在Azure虛擬機中可完成更快的備份和恢復。

重要改良:

1、一直加密(Always Encrypted)

數據的存儲和運用都將采用由微軟研討院所開發的技術停止加密;

2、彈性數據庫(Stretch Database)

SQL Server用戶將可以把數據靜態延伸至Microsoft Azure,以便加強其功能;

3、實時業務剖析與內存中聯機事務處置(Real-time Operational Analytics & In-Memory OLTP)

該剖析技術於2014年初次引入,如今已變得愈加先進(更高的實時功能);

4、內置初級剖析(Built-in Advanced Analytics)、PolyBase和Mobile BI

在SQL Server 2016上,數據剖析和PolyBase等技術會更易運用。此外,Mobile BI將被用於挪動設備上的圖形展現。

以上所述是給大家引見的Sql Server 2016新功用之Row-Level Security(值得關注),希望對大家有所協助,假如大家有任何疑問請給我留言,會及時回復大家的。在此也十分感激大家對網站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved