电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

SQL Server的行級安全性詳解

瀏覽:150日期:2023-05-02 10:03:25
目錄
  • 一、前言
  • 二、描述
  • 三、權(quán)限
  • 四、安全說明:側(cè)信道攻擊
  • 五、跨功能兼容性
  • 六、示例

一、前言

行級別安全性使您能夠使用組成員身份或執(zhí)行上下文來控制對數(shù)據(jù)庫表中行的訪問。

行級別安全性 (RLS) 簡化了應(yīng)用程序中的安全性設(shè)計(jì)和編碼。RLS 可幫助您對數(shù)據(jù)行訪問實(shí)施限制。例如,您可以確保工作人員僅訪問與其部門相關(guān)的數(shù)據(jù)行。另一個示例是將客戶的數(shù)據(jù)訪問限制為僅與其公司相關(guān)的數(shù)據(jù)。

訪問限制邏輯位于數(shù)據(jù)庫層中,而不是遠(yuǎn)離另一個應(yīng)用程序?qū)又械臄?shù)據(jù)。每次嘗試從任何層訪問數(shù)據(jù)時(shí),數(shù)據(jù)庫系統(tǒng)都會應(yīng)用訪問限制。這通過減少安全系統(tǒng)的表面積,使您的安全系統(tǒng)更加可靠和強(qiáng)大。

通過使用創(chuàng)建安全策略 Transact-SQL 語句和作為內(nèi)聯(lián)表值函數(shù)創(chuàng)建的謂詞實(shí)現(xiàn) RLS。

行級別安全性首次引入 SQL Server 2016 (13.x)。

二、描述

RLS 支持兩種類型的安全謂詞。

  • 篩選器謂詞以靜默方式篩選可用于讀取操作(選擇、更新和刪除)的行。
  • 阻止謂詞顯式阻止違反謂詞的寫入操作(插入后、更新后、更新之前、刪除之前)。

對表中行級數(shù)據(jù)的訪問受定義為內(nèi)聯(lián)表值函數(shù)的安全謂詞的限制。然后,安全策略調(diào)用和強(qiáng)制執(zhí)行該函數(shù)。對于篩選器謂詞,應(yīng)用程序不知道從結(jié)果集中篩選的行。如果篩選了所有行,則將返回空集。對于塊謂詞,任何違反謂詞的操作都將失敗并顯示錯誤。

從基表中讀取數(shù)據(jù)時(shí)應(yīng)用篩選器謂詞。它們影響所有獲取操作:選擇、刪除和更新。用戶無法選擇或刪除已篩選的行。用戶無法更新篩選的行。但是,可以更新行,以便以后對其進(jìn)行篩選。塊謂詞會影響所有寫入操作。

  • “插入后”和“更新后”謂詞可以防止用戶將行更新為違反謂詞的值。
  • BEFORE UPDATE 謂詞可以阻止用戶更新當(dāng)前違反謂詞的行。
  • 在刪除之前 謂詞可以阻止刪除操作。

篩選器和阻止謂詞以及安全策略都具有以下行為:

  • 可以定義一個謂詞函數(shù),該函數(shù)與另一個表聯(lián)接和/或調(diào)用函數(shù)。如果使用 (默認(rèn)值) 創(chuàng)建安全策略,則可以從查詢訪問聯(lián)接或函數(shù),并按預(yù)期工作,而無需任何其他權(quán)限檢查。如果使用 創(chuàng)建安全策略,則用戶將需要對這些附加表和函數(shù)的 SELECT 權(quán)限才能查詢目標(biāo)表。如果謂詞函數(shù)調(diào)用 CLR 標(biāo)量值函數(shù),則還需要 EXECUTE 權(quán)限。
  • 可以針對已定義但已禁用安全謂詞的表發(fā)出查詢。篩選或阻止的任何行不受影響。
  • 如果 dbo 用戶、db_owner角色的成員或表所有者查詢已定義并啟用了安全策略的表,則會按照安全策略的定義過濾或阻止行。
  • 嘗試更改由架構(gòu)綁定安全策略綁定的表的架構(gòu)將導(dǎo)致錯誤。但是,可以更改謂詞未引用的列。
  • 嘗試在已為指定操作定義謂詞的表上添加謂詞會導(dǎo)致錯誤。無論是否啟用謂詞,都會發(fā)生這種情況。
  • 嘗試修改函數(shù)(用作架構(gòu)綁定安全策略中的表的謂詞)將導(dǎo)致錯誤。
  • 定義多個包含非重疊謂詞的活動安全策略會成功。

篩選器謂詞具有以下行為:

  • 定義用于篩選表中行的安全策略。應(yīng)用程序不知道針對 SELECT、UPDATE 和 DELETE 操作篩選的任何行。包括篩選掉所有行的情況。應(yīng)用程序可以插入行,即使它們將在任何其他操作期間被篩選。

塊謂詞具有以下行為:

  • UPDATE 的塊謂詞被拆分為 BEFORE 和 AFTER 的單獨(dú)操作。例如,不能阻止用戶將行更新為具有高于當(dāng)前值的值。如果需要這種邏輯,則必須將觸發(fā)器與 DELETE 和 INSERT 中間表一起使用,以同時(shí)引用舊值和新值。
  • 如果謂詞函數(shù)使用的列未更改,優(yōu)化程序?qū)⒉粫z查 AFTER UPDATE 塊謂詞。
  • 尚未對批量 API 進(jìn)行任何更改,包括批量插入。這意味著塊謂詞 AFTER INSERT 將應(yīng)用于批量插入操作,就像它們將常規(guī)插入操作一樣。

三、權(quán)限

創(chuàng)建、更改或刪除安全策略需要“更改任何安全策略”權(quán)限。創(chuàng)建或刪除安全策略需要對架構(gòu)具有 ALTER 權(quán)限。

此外,添加的每個謂詞都需要以下權(quán)限:

  • 對用作謂詞的函數(shù)的 SELECT 和 REFERENCE 權(quán)限。
  • 對綁定到策略的目標(biāo)表的 REFERENCES 權(quán)限。
  • 對用作參數(shù)的目標(biāo)表中的每一列的 REFERENCES 權(quán)限。

安全策略適用于所有用戶,包括數(shù)據(jù)庫中的 dbo 用戶。Dbo 用戶可以更改或刪除安全策略,但可以審核他們對安全策略的更改。如果高特權(quán)用戶(如 sysadmin 或 db_owner)需要查看所有行以排除故障或驗(yàn)證數(shù)據(jù),則必須編寫安全策略以允許這樣做。

如果使用 創(chuàng)建安全策略,則要查詢目標(biāo)表,用戶必須對謂詞函數(shù)以及謂詞函數(shù)中使用的任何其他表、視圖或函數(shù)具有 SELECT 或 EXECUTE 權(quán)限。如果使用 (默認(rèn)值) 創(chuàng)建安全策略,則當(dāng)用戶查詢目標(biāo)表時(shí)會繞過這些權(quán)限檢查。

四、安全說明:側(cè)信道攻擊

(1)惡意安全策略管理器。

請務(wù)必注意,惡意安全策略管理器具有在敏感列上創(chuàng)建安全策略的足夠權(quán)限,并有權(quán)創(chuàng)建或更改內(nèi)聯(lián)表值函數(shù),但可以與對表具有選擇權(quán)限的其他用戶串通,通過惡意創(chuàng)建旨在使用側(cè)通道攻擊推斷數(shù)據(jù)的內(nèi)聯(lián)表值函數(shù)來執(zhí)行數(shù)據(jù)泄露。此類攻擊需要串通(或授予惡意用戶的過多權(quán)限),并且可能需要多次迭代修改策略(需要刪除謂詞的權(quán)限以破壞架構(gòu)綁定)、修改內(nèi)聯(lián)表值函數(shù)以及在目標(biāo)表上重復(fù)運(yùn)行 select 語句。我們建議您根據(jù)需要限制權(quán)限,并監(jiān)視任何可疑活動。應(yīng)監(jiān)視活動,例如不斷更改的策略和與行級別安全性相關(guān)的內(nèi)聯(lián)表值函數(shù)。

(2)精心設(shè)計(jì)的查詢。

通過使用利用錯誤的精心設(shè)計(jì)的查詢,可能會導(dǎo)致信息泄露。

五、跨功能兼容性

  • 通常,行級別安全性將跨功能按預(yù)期工作。但是,也有一些例外。本節(jié)記錄了將行級別安全性與 SQL Server 的某些其他功能結(jié)合使用的幾個注意事項(xiàng)和注意事項(xiàng)。
  • DBCC SHOW_STATISTICS報(bào)告未過濾數(shù)據(jù)的統(tǒng)計(jì)信息,并可能泄露受安全策略保護(hù)的信息。因此,對查看具有行級別安全策略的表的統(tǒng)計(jì)信息對象的訪問受到限制。用戶必須擁有該表,或者用戶必須是 sysadmin 固定服務(wù)器角色、db_owner固定數(shù)據(jù)庫角色或db_ddladmin固定數(shù)據(jù)庫角色的成員。
  • 文件流:RLS 與文件流不兼容。
  • 內(nèi)存優(yōu)化表:必須使用該選項(xiàng)定義用作內(nèi)存優(yōu)化表的安全謂詞的內(nèi)聯(lián)表值函數(shù)。使用此選項(xiàng),將禁止內(nèi)存優(yōu)化表不支持的語言功能,并在創(chuàng)建時(shí)發(fā)出相應(yīng)的錯誤。
  • 索引視圖:通常,可以在視圖之上創(chuàng)建安全策略,也可以在受安全策略約束的表之上創(chuàng)建視圖。但是,不能在具有安全策略的表之上創(chuàng)建索引視圖,因?yàn)橥ㄟ^索引查找行將繞過該策略。
  • 變更數(shù)據(jù)捕獲:變更數(shù)據(jù)捕獲可能會泄漏應(yīng)篩選為db_owner成員或?yàn)楸韱⒂?CDC 時(shí)指定的“控制”角色成員的用戶(注意:您可以將此函數(shù)顯式設(shè)置為 NULL,以使所有用戶都能訪問變更數(shù)據(jù))。實(shí)際上,db_owner和此控制角色的成員可以查看表上的所有數(shù)據(jù)更改,即使表上有安全策略也是如此。
  • 更改跟蹤:更改跟蹤可能會將應(yīng)篩選的行的主鍵泄露給同時(shí)具有“選擇”和“查看更改跟蹤”權(quán)限的用戶。實(shí)際數(shù)據(jù)值不會泄露;只有 A 列被更新/插入/刪除了帶有 B 主鍵的行的事實(shí)。如果主密鑰包含機(jī)密元素(如社會保險(xiǎn)號),則會出現(xiàn)問題。然而,在實(shí)踐中,這個CHANGETABLE幾乎總是與原始表連接,以獲得最新的數(shù)據(jù)。
  • 全文搜索:使用以下全文搜索和語義搜索函數(shù)的查詢預(yù)計(jì)會降低性能,因?yàn)橐肓祟~外的聯(lián)接來應(yīng)用行級安全性并避免泄漏應(yīng)過濾的行的主鍵:CONTAINSTABLE、FREETEXTTABLE、semantickeyphrasetable、semanticsimilaritydetailstable、semanticsimilaritytable、semanticsimilaritytable。
  • 列存儲索引:RLS 與聚集列存儲索引和非聚集列存儲索引兼容。但是,由于行級別安全性應(yīng)用函數(shù),因此優(yōu)化程序可能會修改查詢計(jì)劃,使其不使用批處理模式。
  • 分區(qū)視圖:不能在分區(qū)視圖上定義塊謂詞,也不能在使用塊謂詞的表上創(chuàng)建分區(qū)視圖。篩選器謂詞與分區(qū)視圖兼容。
  • 時(shí)態(tài)表:時(shí)態(tài)表與 RLS 兼容。但是,當(dāng)前表上的安全謂詞不會自動復(fù)制到歷史記錄表中。要將安全策略應(yīng)用于當(dāng)前表和歷史記錄表,必須在每個表上單獨(dú)添加安全謂詞。

六、示例

向數(shù)據(jù)庫進(jìn)行身份驗(yàn)證的用戶的方案。創(chuàng)建三個用戶,并創(chuàng)建并填充一個包含六行的表。然后,它為表創(chuàng)建一個內(nèi)聯(lián)表值函數(shù)和安全策略。然后,該示例演示如何為各種用戶篩選 select 語句。

(1)創(chuàng)建三個將演示不同訪問功能的用戶帳戶。

CREATE USER Manager WITHOUT LOGIN;CREATE USER SalesRep1 WITHOUT LOGIN;CREATE USER SalesRep2 WITHOUT LOGIN;GO

(2)創(chuàng)建一個表來保存數(shù)據(jù)。

CREATE SCHEMA SalesGOCREATE TABLE Sales.Orders    (    OrderID int,    SalesRep nvarchar(50),    Product nvarchar(50),    Quantity smallint    );

(3)用六行數(shù)據(jù)填充表,顯示每個銷售代表的三個訂單。

INSERT INTO Sales.Orders  VALUES (1, "SalesRep1", "Valve", 5);INSERT INTO Sales.Orders  VALUES (2, "SalesRep1", "Wheel", 2);INSERT INTO Sales.Orders  VALUES (3, "SalesRep1", "Valve", 4);INSERT INTO Sales.Orders  VALUES (4, "SalesRep2", "Bracket", 2);INSERT INTO Sales.Orders  VALUES (5, "SalesRep2", "Wheel", 5);INSERT INTO Sales.Orders  VALUES (6, "SalesRep2", "Seat", 5);-- View the 6 rows in the tableSELECT * FROM Sales.Orders;

(4)向每個用戶授予對表的讀取訪問權(quán)限。

GRANT SELECT ON Sales.Orders TO Manager;GRANT SELECT ON Sales.Orders TO SalesRep1;GRANT SELECT ON Sales.Orders TO SalesRep2;GO

(5)創(chuàng)建新架構(gòu)和內(nèi)聯(lián)表值函數(shù)。當(dāng)列中的行與執(zhí)行查詢的用戶 相同或執(zhí)行查詢的用戶是經(jīng)理用戶時(shí),該函數(shù)返回。此用戶定義的表值函數(shù)示例可用于用作下一步中創(chuàng)建的安全策略的篩選器。

CREATE SCHEMA Security;GO  CREATE FUNCTION Security.tvf_securitypredicate(@SalesRep AS nvarchar(50))    RETURNS TABLEWITH SCHEMABINDINGAS    RETURN SELECT 1 AS tvf_securitypredicate_resultWHERE @SalesRep = USER_NAME() OR USER_NAME() = "Manager";GO

(6)創(chuàng)建將函數(shù)添加為篩選器謂詞的安全策略。必須將狀態(tài)設(shè)置為ON才能啟用策略。

CREATE SECURITY POLICY SalesFilterADD FILTER PREDICATE Security.tvf_securitypredicate(SalesRep)ON Sales.OrdersWITH (STATE = ON);GO

(7)允許對函數(shù)的 SELECT 權(quán)限。

GRANT SELECT ON Security.tvf_securitypredicate TO Manager;GRANT SELECT ON Security.tvf_securitypredicate TO SalesRep1;GRANT SELECT ON Security.tvf_securitypredicate TO SalesRep2;

(8)更改安全策略以禁用該策略。

ALTER SECURITY POLICY SalesFilterWITH (STATE = OFF);

(9)連接到 SQL 數(shù)據(jù)庫清理練習(xí)資源。

DROP USER SalesRep1;DROP USER SalesRep2;DROP USER Manager;DROP SECURITY POLICY SalesFilter;DROP TABLE Sales.Orders;DROP FUNCTION Security.tvf_securitypredicate;DROP SCHEMA Security;DROP SCHEMA Sales;

到此這篇關(guān)于SQL Server的行級安全性詳解的文章就介紹到這了,更多相關(guān)SQL Server行級安全性內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: MsSQL
主站蜘蛛池模板: 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 安徽华耐泵阀有限公司-官方网站 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 【365公司转让网】公司求购|转让|资质买卖_股权转让交易平台 | 冷轧机|两肋冷轧机|扁钢冷轧机|倒立式拉丝机|钢筋拔丝机|收线机-巩义市华瑞重工机械制造有限公司 | 3D全息投影_地面互动投影_360度立体投影_水幕灯光秀 | 广东银虎 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 包塑丝_高铁绑丝_地暖绑丝_涂塑丝_塑料皮铁丝_河北创筹金属丝网制品有限公司 | 软启动器-上海能曼电气有限公司| 山东钢格板|栅格板生产厂家供应商-日照森亿钢格板有限公司 | 【365公司转让网】公司求购|转让|资质买卖_股权转让交易平台 | 上海小程序开发-小程序制作-上海小程序定制开发公司-微信商城小程序-上海咏熠 | 圣才学习网-考研考证学习平台,提供万种考研考证电子书、题库、视频课程等考试资料 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 餐饮加盟网_特色餐饮加盟店_餐饮连锁店加盟 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 执业药师报名时间,报考条件,考试时间-首页入口 | 上海赞永| 蓝鹏测控平台 - 智慧车间系统 - 车间生产数据采集与分析系统 | 电销卡_北京电销卡_包月电话卡-豪付网络 | 无缝方管|无缝矩形管|无缝方矩管|无锡方管厂家| 山东艾德实业有限公司| 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 热工多功能信号校验仪-热电阻热电偶校验仿真仪-金湖虹润仪表 | 生产加气砖设备厂家很多,杜甫机械加气砖设备价格公道 | 辽宁资质代办_辽宁建筑资质办理_辽宁建筑资质延期升级_辽宁中杭资质代办 | 福建自考_福建自学考试网 | 透平油真空滤油机-变压器油板框滤油机-滤油车-华之源过滤设备 | 废旧物资回收公司_广州废旧设备回收_报废设备物资回收-益美工厂设备回收公司 | 无缝方管|无缝矩形管|无缝方矩管|无锡方管厂家 | 温室大棚建设|水肥一体化|物联网系统 | 回转炉,外热式回转窑,回转窑炉-淄博圣元窑炉工程有限公司 | 广州印刷厂_广州彩印厂-广州艺彩印务有限公司 |