數(shù)據(jù)權(quán)局譽(yù)汪限即桐仔登錄者或操作者所能查看到的資源范圍。

清鎮(zhèn)網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),清鎮(zhèn)網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為清鎮(zhèn)近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的清鎮(zhèn)做網(wǎng)站的公司定做!
功能權(quán)限是登錄者或操作者所能進(jìn)行虛指的操作,例如查詢(xún)、修改和刪除等。
權(quán)限是所有應(yīng)用都需要考慮的問(wèn)題。從方向上來(lái)說(shuō),權(quán)限可以分為功能權(quán)限和數(shù)據(jù)權(quán)限,功能權(quán)限指你能發(fā)起什么事件,數(shù)據(jù)權(quán)限指你能看到哪些數(shù)據(jù)。合起來(lái)就是你能看到哪些數(shù)據(jù),對(duì)他們分別能發(fā)起哪些事件。
功能權(quán)限有很多理論模型,經(jīng)常談到的有DAC,MAC,RBAC,ABAC,可以看到都是AC結(jié)尾,AC代表Access Control。其中以RBAC在實(shí)際系統(tǒng)中應(yīng)用最多。
DAC有兩個(gè)關(guān)鍵點(diǎn):1資源默認(rèn)只有創(chuàng)建者擁有全部權(quán)限;2資源由誰(shuí)創(chuàng)建,該資源的權(quán)限就由誰(shuí)分配;
DAC是這樣工作的,系統(tǒng)首先會(huì)識(shí)別用戶(hù),然后根據(jù)用戶(hù)要操作的資源,去查詢(xún)他是否能做操作,比如查看和編輯。最典型的數(shù)敏例子,就是Windows的文件權(quán)限控制:
DAC的缺點(diǎn)在于:權(quán)限控制過(guò)于分散,不方便管理。
MAC有四個(gè)關(guān)鍵點(diǎn):1資源和用戶(hù)都有權(quán)限等級(jí);2資源和用戶(hù)的權(quán)限等級(jí)全部由管理員控制;3用戶(hù)權(quán)限等級(jí)高于或等于資源時(shí),才具有操作權(quán)限;4下讀上寫(xiě)。
其中下讀上寫(xiě),是出于保密的考慮。具體是指用戶(hù)只能閱讀權(quán)限等于或低于自身的資源,只能創(chuàng)建和編輯權(quán)限等于或高于自身的資源。舉個(gè)例子,權(quán)限等級(jí)1最低,5最高,用戶(hù)A的薯州枝權(quán)限是3,他可以看到等級(jí)為1,2,3的文件,只能創(chuàng)建和編輯3,4,5的文件。
MAC通常用在保密性比較高的政治軍事系統(tǒng)中,比如FBI的文件保密系統(tǒng)。缺點(diǎn)在于太過(guò)嚴(yán)格而導(dǎo)致不夠靈活。
這是實(shí)際應(yīng)用最多的一個(gè)模型。RBAC有幾個(gè)概念:用戶(hù),會(huì)話(huà),角色,權(quán)限。其中用戶(hù)角色權(quán)限都好理解,而會(huì)話(huà)其實(shí)就是session,可以看做是登錄驗(yàn)證通過(guò)后的句柄。
這個(gè)模型有4個(gè)變體:RBAC0,RBAC1,RBAC2,RBAC3,下面分別來(lái)看。
這是最簡(jiǎn)單的,一個(gè)用戶(hù)只能對(duì)應(yīng)多個(gè)角色,一個(gè)角色對(duì)應(yīng)多個(gè)權(quán)限。如下圖:
RBAC0有個(gè)麻煩的地方,當(dāng)角色A有權(quán)限1到10共十個(gè)點(diǎn),角色B有權(quán)限1到11共十一個(gè)點(diǎn),你創(chuàng)建角色A之后,創(chuàng)建角色B的時(shí)候又為角色B再勾選十一個(gè)權(quán)限點(diǎn)。
RBAC1在RBAC0的基礎(chǔ)上,引入了角色繼承。上面的例子,你創(chuàng)建角色A之后,創(chuàng)建角色B時(shí),只用繼承角色A然后再另外勾選一個(gè)權(quán)限點(diǎn)就行了。
角色繼承分為普通繼承和受限繼承。
普通繼承 ,是指一個(gè)角色可以有多個(gè)父角色。利用普通繼承,可以做到角色組的概念。
受限繼承 ,是指跡信一個(gè)角色只能有一個(gè)父角色。利用受限繼承,可以做到角色的嚴(yán)格樹(shù)形結(jié)構(gòu)。
RBAC1如下圖:
RBAC0還有個(gè)麻煩的地方,由于一個(gè)用戶(hù)可以分配多個(gè)角色,如果把一個(gè)用戶(hù)同時(shí)設(shè)置成裁判和球員,就糟糕了。
RBAC2在RBAC0的基礎(chǔ)上,引入了責(zé)任分離。責(zé)任分離分為兩種:靜態(tài)責(zé)任分離SSD,動(dòng)態(tài)責(zé)任分離DSD。
當(dāng)給用戶(hù)分配了球員角色時(shí),就不允許再分配成裁判角色,這是靜態(tài)責(zé)任分離的一種。
可以為用戶(hù)同時(shí)分配球員和裁判角色,但是同一場(chǎng)比賽,用戶(hù)只能使用一種身份參加,這是動(dòng)態(tài)責(zé)任分離。
靜態(tài)責(zé)任分離 的本質(zhì)是在分配角色時(shí)增加約束。約束有三種形式: 角色互斥 ,就像上面的例子,不允許給用戶(hù)同時(shí)分配球員和裁判; 基數(shù)約束 ,限制一個(gè)用戶(hù)能擁有的角色數(shù)量;先決條件約束,用戶(hù)要擁有一個(gè)角色,必須先擁有另外一個(gè)角色,比如必須先成為工程師,才能成為架構(gòu)師。
動(dòng)態(tài)責(zé)任分離 的本質(zhì)是在系統(tǒng)運(yùn)行時(shí)有所約束。比如用戶(hù)既是球員也是裁判時(shí),登錄系統(tǒng)時(shí)必須選擇其中一種角色登錄,登錄后只擁有被選角色的權(quán)限。
RBAC2如下圖:
RBAC3就是同時(shí)實(shí)現(xiàn)RABC1和RBAC2,如下圖:
ABAC的本質(zhì),是根據(jù)規(guī)則,動(dòng)態(tài)計(jì)算一個(gè)或一組屬性是否滿(mǎn)足某種規(guī)則,來(lái)進(jìn)行授權(quán)判斷。通常用來(lái)計(jì)算的屬性分為:用戶(hù)屬性,環(huán)境屬性,操作屬性和資源屬性。可以用XML,YAML或其他形式來(lái)存儲(chǔ)規(guī)則。
簡(jiǎn)單來(lái)說(shuō),就是把訪(fǎng)問(wèn)規(guī)則寫(xiě)在配置文件里,當(dāng)用戶(hù)要做操作的時(shí)候,規(guī)則引擎根據(jù)配置去計(jì)算結(jié)果。
ABAC的優(yōu)點(diǎn):
1. 規(guī)則集中式管理。也就是配置文件。
2. 可以按需實(shí)現(xiàn)不同顆粒的權(quán)限控制。意思是配置文件的規(guī)則,是自定義的,A模塊可以做到菜單級(jí),B模塊可以做到功能級(jí)。
3.?不需要預(yù)定義判斷邏輯,減輕了權(quán)限系統(tǒng)的維護(hù)成本,特別是在需求經(jīng)常變化的系統(tǒng)中
缺點(diǎn):
1. 不能直觀(guān)地看出用戶(hù)和權(quán)限之間的關(guān)系。
2.?規(guī)則如果復(fù)雜,或者設(shè)計(jì)混亂,會(huì)給管理者維護(hù)和追查帶來(lái)麻煩。
3.?權(quán)限判斷需要實(shí)時(shí)執(zhí)行,規(guī)則過(guò)多會(huì)導(dǎo)致性能問(wèn)題。
數(shù)據(jù)權(quán)限,我覺(jué)得可以分為三個(gè)級(jí)別去講:表級(jí),行級(jí),列級(jí)。
作為一個(gè)技術(shù)員角色,就不應(yīng)該看到銷(xiāo)售數(shù)據(jù),這就是表級(jí)權(quán)限,其實(shí)跟前面說(shuō)的菜單權(quán)限是一個(gè)意思。
作為基層銷(xiāo)售,你只能看到自己的銷(xiāo)售數(shù)據(jù),作為銷(xiāo)售總監(jiān),能看到銷(xiāo)售部門(mén)所有人的數(shù)據(jù),就是行級(jí)數(shù)據(jù)權(quán)限。從上面這個(gè)例子可以看出,行級(jí)數(shù)據(jù)權(quán)限是由組織結(jié)構(gòu)決定的。當(dāng)然 最簡(jiǎn)單的辦法就是硬編碼 ,在組織結(jié)構(gòu)里只能看自己和下級(jí)數(shù)據(jù)。優(yōu)點(diǎn)是簡(jiǎn)單,缺點(diǎn)是不靈活,無(wú)法處理跨節(jié)點(diǎn)看數(shù)據(jù)的問(wèn)題。
另一個(gè)辦法就是配置用戶(hù)和組織結(jié)構(gòu)的關(guān)系,下圖是一個(gè)例子:
像上圖所示,把角色跟組織機(jī)構(gòu)關(guān)聯(lián)起來(lái),也就間接把用戶(hù)跟組織結(jié)構(gòu)關(guān)聯(lián)了,你就知道誰(shuí)官大誰(shuí)官小了,同一個(gè)數(shù)據(jù)表,村長(zhǎng)能看自己村的,縣長(zhǎng)能看十幾個(gè)村的。
也可以直接把用戶(hù)跟組織機(jī)構(gòu)關(guān)聯(lián)起來(lái),做起來(lái)簡(jiǎn)單,但是調(diào)整的時(shí)候偏麻煩一點(diǎn)。
如果給角色分配組織結(jié)構(gòu),可能會(huì)造成角色承擔(dān)過(guò)多責(zé)任。如果直接給用戶(hù)分配組織結(jié)構(gòu),可能會(huì)造成調(diào)整麻煩。于是我們可以引入崗位的概念,通過(guò)崗位把用戶(hù)和組織結(jié)構(gòu)關(guān)聯(lián)起來(lái)。
以上就是通過(guò)組織結(jié)構(gòu)解決行級(jí)數(shù)據(jù)權(quán)限的方法。其背后還存在一個(gè)問(wèn)題, 一個(gè)用戶(hù)可以同時(shí)站在組織結(jié)構(gòu)的多個(gè)節(jié)點(diǎn)上嗎? 通俗的說(shuō)就是,一個(gè)人可以同時(shí)是村長(zhǎng)和縣長(zhǎng)嗎?如果可以,他能看全縣所有村的數(shù)據(jù)嗎?
這個(gè)問(wèn)題要看實(shí)際業(yè)務(wù)情況來(lái)定。如果不能兼任,就不存在這個(gè)問(wèn)題了。如果允許兼任,數(shù)據(jù)權(quán)限就應(yīng)該取并集。
我們假設(shè)一個(gè)不太嚴(yán)謹(jǐn)?shù)膱?chǎng)景,銷(xiāo)售數(shù)據(jù)包括銷(xiāo)售員,客戶(hù)信息,合同編號(hào),金額,提成。銷(xiāo)售總監(jiān),可以看到銷(xiāo)售部門(mén)所有銷(xiāo)售數(shù)據(jù),但是提成這一列是看不到的。這個(gè)場(chǎng)景就是列級(jí)數(shù)據(jù)權(quán)限。
當(dāng)然最簡(jiǎn)單,還是硬編碼 。寫(xiě)死某些角色就是看不到某列數(shù)據(jù)。同樣,優(yōu)點(diǎn)是簡(jiǎn)單,缺點(diǎn)是不靈活。
引入一個(gè)概念,數(shù)據(jù)資源,說(shuō)白了就是數(shù)據(jù)表,數(shù)據(jù)資源包含表里所有字段。接下來(lái)就跟行級(jí)權(quán)限處理一樣了。
功能權(quán)限在系統(tǒng)管吵清禪理中進(jìn)行設(shè)置,主要升塵規(guī)定了每個(gè)操作員對(duì)各模塊及細(xì)分功能的操作權(quán)限。數(shù)據(jù)權(quán)限是針對(duì)業(yè)務(wù)對(duì)象進(jìn)正擾行的控制,可以選擇對(duì)特定業(yè)務(wù)對(duì)象的某些項(xiàng)目和某些記錄進(jìn)行查詢(xún)和錄入的權(quán)限控制。
新聞名稱(chēng):功能權(quán)限和數(shù)據(jù)權(quán)限PHP 功能權(quán)限和數(shù)據(jù)權(quán)限金額權(quán)限的關(guān)系
本文URL:http://www.chinadenli.net/article18/ddpeogp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、、網(wǎng)站建設(shè)、網(wǎng)站收錄、企業(yè)建站、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)