亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

SQL Server中CLR安全性詳解

添加時(shí)間:2014-4-18 16:54:14  添加: 思海網(wǎng)絡(luò) 
  1.CLR安全性

  CLR使用其自己的安全模型,一旦SQL Server同意進(jìn)行所有的許可權(quán)檢查并且允許代碼執(zhí)行,那么這種模型就會(huì)"強(qiáng)制介入"。僅僅因?yàn)樗軌驁?zhí)行并不意味著它能夠做它想做的任何事情。

  CLR提供給它運(yùn)行的.NET代碼和它運(yùn)行的主機(jī)許多服務(wù)。這些服務(wù)包括:

  (1)類型安全檢查-校驗(yàn)代碼能夠以良好定義的方式來存取內(nèi)存結(jié)構(gòu);

  (2)基于角色的安全-根據(jù)由誰運(yùn)行代碼;

  (3)代碼存取安全-在這種情況下,許可權(quán)的授予是基于代碼特征而不是基于誰在運(yùn)行代碼;

  (4)應(yīng)用程序域-它提供在宿主進(jìn)程中實(shí)現(xiàn)安全執(zhí)行地帶。

   在數(shù)據(jù)庫中的所有具有相同所有者的程序集都被加載到同一個(gè)AppDomain中,不管它們被安裝到哪個(gè)數(shù)據(jù)庫中。在一個(gè)AppDomain中的每一個(gè)程 序集都能夠通過反射找到另外每一個(gè)其它程序集。既然它們具有相同的所有者,所以SQL Server不必執(zhí)行它自己的權(quán)限檢查,這有助于性能的改進(jìn)。但是這些措施并不能解決實(shí)際存在的代碼存取安全問題。

  CLR還強(qiáng)制實(shí)行宿主保護(hù)屬性(HPA)-允許一個(gè)宿主(在此情況下,是指SQL Server)控制允許SQLCLR代碼使用.NET框架的指定部分。其實(shí),在可靠性方面,還有除了安全性外的其它方面的內(nèi)容。

  2.代碼存取安全性

   CLR提供的最重要的服務(wù)之一是代碼存取安全性(CAS)。CAS的基本原則是,為代碼賦予特權(quán),而不是針對用戶。如果你已習(xí)慣于Windows或 SQL Server模式的把許可權(quán)賦予用戶和登錄而不是它們正在執(zhí)行的代碼,這聽上去似乎有些奇怪。但是,就算SQLCLR代碼在一個(gè)管理用戶的安全上下文下執(zhí) 行,它也可能不具有所有可用的許可權(quán)。事實(shí)上,在SQL Server內(nèi)部執(zhí)行的SQLCLR代碼幾乎一定不會(huì)擁有所有許可權(quán)-這稱為"完全信任"。

   下面是一些有關(guān)于CAS工作的基本知識(shí)。當(dāng)加載一個(gè)程序集以響應(yīng)一個(gè)SQLCLR存儲(chǔ)過程、函數(shù)或其它代碼模塊的調(diào)用時(shí),由CLR負(fù)責(zé)搜集證據(jù)。它使用 該證據(jù)來把該程序集指派給一個(gè)或多個(gè)代碼組。每一個(gè)被指派的代碼組都有一個(gè)通過某種運(yùn)行時(shí)刻安全策略(使用會(huì)員條件來決定代碼被指派到哪里)指派的權(quán)限 集。一種權(quán)限相應(yīng)于操作被保護(hù)的內(nèi)容的一種權(quán)力。總之,代碼要求調(diào)用者必須擁有某種許可權(quán)才可以執(zhí)行特定的行為。

  如果這些對于你來說都是陌生概念,那么你需要首先對開發(fā)安全的應(yīng)用程序的這些極其重要的部分有個(gè)透徹了解為好。而且,對于理解SQLCLR代碼在執(zhí)行時(shí)所具有的許可權(quán)來說,理解CAS是最關(guān)鍵的。

   那么,SQL Server是如何把SQL Server和CLR安全環(huán)境融合到一起的呢?要理解的第一事情是,這些系統(tǒng)保護(hù)著兩個(gè)資源集合。第一個(gè)集合包含SQL Server對象和數(shù)據(jù)。SQL Server的安全環(huán)境保護(hù)對它自己的對象的存取,甚至包括對它所宿主的SQLCLR代碼的保護(hù)。

  CLR保護(hù)對于其它一切的存取。這"其它一切"是指什么呢?是指在SQL Server實(shí)例外部的資源,包括磁盤文件、注冊表設(shè)置、其它的數(shù)據(jù)庫、網(wǎng)絡(luò)資源和Web服務(wù)。這意味著,對于保護(hù)在它的宿主SQL Server實(shí)例內(nèi)的任何內(nèi)容來說,CAS什么也沒有做。

   現(xiàn)在,讓我們稍作停頓再作進(jìn)一步考慮。讓我們先搞明白,哪種安全系統(tǒng)保護(hù)哪些關(guān)鍵內(nèi)容。當(dāng)然,我們也可以用另一種方式來描述同樣的事情:在SQL Server內(nèi)授予的許可權(quán)保護(hù)它的所有的數(shù)據(jù)和對象以免為任何類型的執(zhí)行代碼所調(diào)用,而不管這些代碼是用T-SQL或是用SQLCLR編寫。CLR的 CAS保護(hù)對于SQL Server外部所有資源的存取。

  這樣以來,一個(gè)必然的結(jié)論就是:對于保護(hù)一個(gè)SQL Server實(shí)例的對象或數(shù)據(jù)來說,CAS什么也不沒有做。

  現(xiàn)在,我們 將更為詳細(xì)地討論關(guān)于CAS的問題。但是,請記住,現(xiàn)在我們所討論的許可權(quán)問題并不是在SQL Server內(nèi)部的那種,而是在外部-在操作系統(tǒng)中的許可權(quán)。例如,比方說SQLCLR代碼不得不打開一個(gè)磁盤文件來記錄一些日志數(shù)據(jù),或進(jìn)行連接以從另 一個(gè)數(shù)據(jù)庫讀取數(shù)據(jù)。CAS許可權(quán)限制代碼能夠存取該磁盤文件的方式以及到其它數(shù)據(jù)庫的連接方式。

  為了運(yùn)行某種方法,無論何時(shí)CLR裝 載一個(gè)程序集,它都要收集關(guān)于該程序集的與在該機(jī)器上定義的策略相匹配的證據(jù)以便授予其相應(yīng)的許可權(quán)。典型地,對于.NET程序集的證據(jù)通常包括位置(原 始)數(shù)據(jù)(程序集從這里運(yùn)行)和身份數(shù)據(jù)。但是,既然一個(gè)SQLCLR程序集從SQL Server內(nèi)部運(yùn)行,那么,位置證據(jù)基本上是不相關(guān)的。這樣以來,只剩下了身份證據(jù),例如是否該程序集擁有一個(gè)強(qiáng)名字或者是經(jīng)過一家特定公司進(jìn)行數(shù)字簽 名的。

  CLR收集該證據(jù),然后與四種策略級(jí)別(企業(yè),機(jī)器,用戶和AppDomain)加以比較。(SQL Server文檔經(jīng)常調(diào)用AppDomain級(jí)別"Host Policy",但這是一回事。在.NET框架中,AppDomain是更為典型的術(shù)語,我經(jīng)常使用它)。由CLR授予給一個(gè)程序集的實(shí)際的許可權(quán)集是在 每一個(gè)級(jí)別上授予的許可權(quán)的交集。

  這四種級(jí)別中的每一種都有其自己的許可權(quán)集合。為了決定授予給一個(gè)程序集的許可權(quán)集,CLR使用這些許可權(quán)的交集-也即是,各種許可權(quán)集的公共集合,并且把這個(gè)交集授予給該程序集。

  你可以使用.NET框架2.0配置工具來分析前三種策略級(jí)別:企業(yè),機(jī)器和用戶。當(dāng)你展開TreeView控件的運(yùn)行時(shí)刻安全策略部分時(shí)顯示策略級(jí)別。

   在此,一個(gè)用戶或系統(tǒng)管理員能夠修改顯示的級(jí)別的默認(rèn)策略,這樣以來,一個(gè)程序集在其加載時(shí)就擁有更多或更少的許可權(quán)。這可能是個(gè)比較復(fù)雜的主題,但是 對于SQLCLR代碼來說,事實(shí)上,所有的安裝在本地機(jī)器上的.NET代碼,這三種策略級(jí)別默認(rèn)地都把"完全信任"指派給一個(gè)程序集。"完全信任"僅僅意 味著,代碼自動(dòng)地?fù)碛忻恳环N可能的權(quán)限。更精確地說,它意味著,CLR并不進(jìn)行任何權(quán)限檢查。

  如果程序集默認(rèn)地?fù)碛袡z查"短路"的許可權(quán),那么為什么我建議你讀取所有關(guān)于CAS的內(nèi)容呢?

   理由是,CLR共使用四種策略級(jí)來指派許可權(quán),但是只有其中三種能夠使用的工具來進(jìn)行配置。第四種是AppDomain級(jí)別,該級(jí)別是當(dāng)你把一個(gè)程序集 安裝到一個(gè)數(shù)據(jù)庫時(shí)創(chuàng)建的。該策略級(jí)別由SQL Server控制作為CLR宿主。而且,SQL Server極少會(huì)授予一個(gè)程序集完全許可權(quán)信任,因?yàn)檫@對于安全性和可靠性都可能意味著極度的冒險(xiǎn)。

  默認(rèn)情況下在SQLCLR代碼所 發(fā)生的實(shí)際情況(記住,一個(gè)用戶或系統(tǒng)管理員都能夠修改企業(yè)、機(jī)器和用戶級(jí)上的策略設(shè)置)。因?yàn)槠髽I(yè)、機(jī)器和用戶策略級(jí)別都授予完全信任權(quán)限,他們具有相 同的結(jié)果權(quán)限集-所有的許可權(quán)。該權(quán)限集與AppDomain權(quán)限集相交的結(jié)果就是程序集許可權(quán)集。

關(guān)鍵字:SQL Server、安全性、數(shù)據(jù)庫

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開網(wǎng)站