中心化的權(quán)限系統(tǒng)使用場(chǎng)景受限,同時(shí)增加了網(wǎng)絡(luò)運(yùn)維成本以及用戶使用成本。百度超級(jí)鏈基于ACL權(quán)限模型實(shí)現(xiàn)了一套去中心化的權(quán)限系統(tǒng),同時(shí)保持著可擴(kuò)展、易用的特性,有助于開發(fā)者快速上手。
本期超級(jí)鏈學(xué)院線上微課堂就帶你解鎖超級(jí)鏈去中心化的權(quán)限系統(tǒng)!明星講師超哥將主要圍繞以下幾點(diǎn)展開:
1.權(quán)限系統(tǒng)在區(qū)塊鏈中有哪些作用?
2.超級(jí)鏈權(quán)限系統(tǒng)是如何構(gòu)建的?
3.用戶如何快速上手超級(jí)鏈權(quán)限系統(tǒng)?
4.使用過程有哪些常見問題需要避免?
5.超級(jí)鏈權(quán)限系統(tǒng)與其他系統(tǒng)的異同點(diǎn)?
快來繼續(xù)往下看吧!
Q1:賬戶與權(quán)限系統(tǒng)的定義是什么?
賬戶用于標(biāo)識(shí)區(qū)塊鏈網(wǎng)絡(luò)中不同身份,而權(quán)限控制用于約束資源獲取/更新等能力。
賬戶與權(quán)限系統(tǒng)就是指結(jié)合賬戶與權(quán)限控制兩個(gè)要素,以賬戶為粒度對(duì)資源獲取/更新等能力進(jìn)行約束的一種系統(tǒng)要素。這里的賬戶包括普通賬戶以及合約賬戶。
Q2:賬戶與權(quán)限系統(tǒng)有哪些常見模型?
區(qū)塊鏈中常見的權(quán)限控制模型包括:基于ACL的權(quán)限控制模型、基于RBAC的權(quán)限控制模型以及基于ABAC的權(quán)限控制模型。
Q3:賬戶與權(quán)限系統(tǒng)在區(qū)塊鏈中有哪些作用?
權(quán)限系統(tǒng)用于保障區(qū)塊鏈網(wǎng)絡(luò)中普通用戶資產(chǎn)、合約用戶資產(chǎn)的安全,只有擁有相應(yīng)權(quán)限的用戶才能訪問/更新相應(yīng)的數(shù)據(jù),做到用戶對(duì)自己的數(shù)據(jù)具有所有權(quán)。
常見的權(quán)限系統(tǒng)包括以聯(lián)盟鏈為代表的MSP身份認(rèn)證系統(tǒng),以公鏈為代表的去中心化權(quán)限系統(tǒng)。
Q4:超級(jí)鏈采用的哪種賬戶與權(quán)限模型呢?
超級(jí)鏈其實(shí)已經(jīng)實(shí)現(xiàn)了一套基于CA的權(quán)限控制系統(tǒng),適用于聯(lián)盟鏈應(yīng)用場(chǎng)景。為了不僅適用于聯(lián)盟鏈場(chǎng)景,同時(shí)適用于公鏈場(chǎng)景的需求,超級(jí)鏈還自研了一套基于ACL權(quán)限控制模型的去中心化的賬戶與權(quán)限系統(tǒng)。當(dāng)初設(shè)計(jì)去中心化的賬戶與權(quán)限系統(tǒng)主要是為了公鏈場(chǎng)景下,支持智能合約數(shù)據(jù)資產(chǎn)的訪問權(quán)限控制,保障合約資產(chǎn)數(shù)據(jù)的安全。
到目前為止,超級(jí)鏈中普通賬戶的權(quán)限認(rèn)證也走去中心化權(quán)限系統(tǒng),實(shí)現(xiàn)了權(quán)限認(rèn)證的入口統(tǒng)一。目前,超級(jí)鏈自研的權(quán)限控制系統(tǒng)支持簽名閾值策略、AK集簽名策略等。
閾值策略是指每個(gè)用戶持有一定權(quán)重的權(quán)限,當(dāng)授權(quán)用戶的總權(quán)重達(dá)到一定閾值時(shí),表明鑒權(quán)通過。AK集策略是指集合中的AK之間的與以及集合之間的或邏輯表達(dá)式,來決定是否鑒權(quán)通過。
Q5:超級(jí)鏈?zhǔn)侨绾螌?shí)現(xiàn)賬戶與權(quán)限系統(tǒng)的?
權(quán)限系統(tǒng)主要包括賦權(quán)與鑒權(quán)兩個(gè)部分,這兩個(gè)方法以系統(tǒng)合約的形式實(shí)現(xiàn)。在創(chuàng)建合約賬戶、設(shè)置合約賬戶權(quán)限列表、設(shè)置合約方法權(quán)限列表時(shí),會(huì)分別調(diào)用賦權(quán)與鑒權(quán)這兩類系統(tǒng)合約。
(1)超級(jí)鏈?zhǔn)侨绾螌?shí)現(xiàn)賦權(quán)的?什么操作涉及到賦權(quán)?
賦權(quán)是指為合約賬戶或者合約方法設(shè)置訪問權(quán)限列表,涉及到更新數(shù)據(jù)庫數(shù)據(jù)。
一般在創(chuàng)建合約賬戶、設(shè)置合約賬戶權(quán)限列表、設(shè)置合約方法權(quán)限列表時(shí)都會(huì)涉及到賦權(quán)操作。
主要操作就是將一個(gè)《key,value》寫入數(shù)據(jù)庫,value通常為json格式的權(quán)限配置文件,而key就是合約賬戶的ID或者合約方法的ID。
賦權(quán)過程中,還會(huì)對(duì)參數(shù)進(jìn)行有效性驗(yàn)證,比如合約賬戶命名規(guī)范是否合法,權(quán)限列表數(shù)量是否達(dá)到上限。
(2)超級(jí)鏈?zhǔn)侨绾螌?shí)現(xiàn)鑒權(quán)的?什么操作涉及到鑒權(quán)?
鑒權(quán)是指驗(yàn)證一組簽名是否具有足夠權(quán)限執(zhí)行特定的操作,比如調(diào)用某個(gè)合約的某個(gè)方法、普通用戶轉(zhuǎn)賬等。
主要通過權(quán)限樹模型進(jìn)行權(quán)限認(rèn)證流程,具體流程如下:
①根據(jù)實(shí)體的鏈上權(quán)限規(guī)則構(gòu)造出權(quán)限樹,并緩存每個(gè)非葉子節(jié)點(diǎn)的具體權(quán)限規(guī)則;
②按層遍歷權(quán)限樹,從最底層的節(jié)點(diǎn)進(jìn)行鑒權(quán);
a.如果節(jié)點(diǎn)是一個(gè)普通的address,直接判斷是否滿足實(shí)體的權(quán)限需求;
b.如果節(jié)點(diǎn)是一個(gè)合約賬號(hào),則遞歸判斷其所有子節(jié)點(diǎn)是否獲得授權(quán);
③如果當(dāng)前節(jié)點(diǎn)為根節(jié)點(diǎn),則按照(2)中的鑒權(quán)規(guī)則判斷,得到最終的鑒權(quán)結(jié)果;
通常,涉及到數(shù)據(jù)更新的地方都需要鑒權(quán)。
Q6:應(yīng)該如何使用超級(jí)鏈的賬戶與權(quán)限系統(tǒng)?
只需要正確填寫Initiator以及AuthRequire以及對(duì)應(yīng)的簽名即可。
Initiator通常從data/keys/address文件中獲取,AuthRequire通常從data/acl/addrs文件中獲取。
我們以創(chuàng)建一個(gè)合約賬戶為例,說明如何使用。
step1: 準(zhǔn)備一個(gè)acl配置文件,命名為newAccount.json,內(nèi)容如下:
{
“module_name”: “xkernel”,
“method_name”: “NewAccount”,
“args” : {
“account_name”: “1111111111111111”,
“acl”: “{\”pm\“: {\”rule\“: 1,\”acceptValue\“: 0.6},\”aksWeight\“: {\”AK1\“: 0.5,\”AK2\“: 0.5}}”
}
}
其中,module_name是指創(chuàng)建合約賬戶調(diào)用的系統(tǒng)合約名字;
method_name是指創(chuàng)建合約賬戶調(diào)用的系統(tǒng)合約方法名字;
account_name是指待創(chuàng)建的合約賬戶名字;
acl就是具體的權(quán)限配置規(guī)則,其中rule是指特定的權(quán)限模型,acceptValue是權(quán)限閾值,aksWeight是指具體的權(quán)限比重配置。
step2: 發(fā)起預(yù)執(zhí)行,命令如下:
。/xchain-cli multisig gen - -desc newAccount.json
step3: 對(duì)預(yù)執(zhí)行結(jié)果進(jìn)行簽名,命令如下:
。/xchain-cli multisig sign --output my.sign
step4: 將預(yù)執(zhí)行結(jié)果以及簽名組裝成一個(gè)完整的交易并轉(zhuǎn)發(fā)到網(wǎng)絡(luò),命令如下:
。/xchain-cli multisig send my.sign my.sign
Q7:超級(jí)鏈權(quán)限模型與其他模型有何異同點(diǎn)呢?
Fabric:
實(shí)現(xiàn)了一套基于MSP的權(quán)限認(rèn)證系統(tǒng),通過CA進(jìn)行證書授權(quán),基于ABAC進(jìn)行權(quán)限訪問控制。
只適用于聯(lián)盟鏈場(chǎng)景,不適用于公鏈,且ABAC方式較復(fù)雜。
EOS:
基于RBAC實(shí)現(xiàn)一套賬戶權(quán)限系統(tǒng),RBAC將角色與權(quán)限掛鉤。
Ethereum:
權(quán)限控制都是靠每個(gè)合約自己在代碼中定義。
Bitcoin:
沒有權(quán)限控制。
分享結(jié)束后,群里涌現(xiàn)出的精彩問題,摘取部分分享給各位。
問:超級(jí)鏈的權(quán)限模型是不是不使用CA證書?因?yàn)樵谖业睦斫庵校珻A是個(gè)中心化的東西。
答:我們支持CA模型,不過當(dāng)前開源的版本沒有實(shí)現(xiàn)CA。我們的聯(lián)盟鏈解決方案包含了CA,但目前開源版本的權(quán)限系統(tǒng)是獨(dú)立于CA存在的,是一種完全去中心化的權(quán)限系統(tǒng)。
問:普通賬戶權(quán)限認(rèn)證的去中心化權(quán)限系統(tǒng)是在哪個(gè)版本升級(jí)了?普通用戶該如何使用權(quán)限系統(tǒng)呢?
答:普通賬戶的權(quán)限驗(yàn)證一直都是在鏈上完成的,后來將普通賬戶的權(quán)限驗(yàn)證接口統(tǒng)一到了權(quán)限系統(tǒng)中了。
普通用戶的權(quán)限驗(yàn)證就是公私鑰驗(yàn)證。
問:物聯(lián)網(wǎng)的海量數(shù)據(jù)接入鏈會(huì)發(fā)生什么事?是否有具體有關(guān)充電樁場(chǎng)景應(yīng)用的案例呢?
答:這種場(chǎng)景對(duì)網(wǎng)絡(luò)的性能有要求。如果網(wǎng)絡(luò)性能不行,容易阻塞。
超級(jí)鏈之前恰好有過汽車充電樁數(shù)據(jù)接入?yún)^(qū)塊鏈的案例,在這個(gè)案例中,我們通過LCV輕量級(jí)節(jié)點(diǎn)植入到充電樁中,從源頭保證數(shù)據(jù)可信采集,并將實(shí)際充電結(jié)算數(shù)據(jù)上鏈,解決了充電樁服務(wù)商、電力部門和用戶之間的數(shù)據(jù)互信問題。
問:rule是指特定的權(quán)限模型,acceptValue是權(quán)限閾值,aksWeight是指具體的權(quán)限比重配置。那權(quán)限模型、閾值、權(quán)限比重配置,可以說明一下這3個(gè)嗎?
答:權(quán)限模型是指使用什么樣的ACL規(guī)則模型來驗(yàn)證權(quán)限,可選的有閾值模型和AK集模型。如果選擇閾值模型,那么ACL中每個(gè)address可以配置一個(gè)權(quán)重,這個(gè)權(quán)重配置列表就是aksWeight,那么將所有簽名Address的權(quán)重累加,如果超過acceptValue這個(gè)閾值,就說明權(quán)限驗(yàn)證成功。
問:EOS實(shí)現(xiàn)RBAC將角色與權(quán)限掛鉤。這種是不是更適合聯(lián)盟鏈業(yè)務(wù)場(chǎng)景?超級(jí)鏈選擇的acl的優(yōu)勢(shì)是什么?
答:超級(jí)鏈的ACL并不是傳統(tǒng)意義的訪問控制列表,而是一種基于賬戶列表的可擴(kuò)展的權(quán)限模型。舉例來說,我們提供的AK集模型就可以支持賬戶集合之間的邏輯關(guān)系判斷。所以基于這種可擴(kuò)展的權(quán)限模型,用戶甚至可以定制出自己的RBAC模型,這種靈活性要比RBAC更高。
問:由于企業(yè)內(nèi)部可能存在賬號(hào)系統(tǒng)中用戶信息被惡意泄露的問題,超級(jí)鏈中的授權(quán)鑒權(quán)能否發(fā)展成為企業(yè)內(nèi)部賬號(hào)系統(tǒng)?或者說未來有沒有可能打造一款類似產(chǎn)品,部署在企業(yè)內(nèi)部做私有鏈?
答:對(duì)于企業(yè)賬戶信息泄露的問題,可以從兩個(gè)角度考慮,第一個(gè)角度是單個(gè)用戶密碼泄露導(dǎo)致的單個(gè)用戶信息泄露,這個(gè)在區(qū)塊鏈場(chǎng)景下如果用戶私鑰泄露也同樣會(huì)泄露個(gè)人信息;第二個(gè)角度是因?yàn)橛脩魯?shù)據(jù)中心化存儲(chǔ)帶來的中心化系統(tǒng)數(shù)據(jù)泄露問題,這種情況通過區(qū)塊鏈可以將用戶信息作為個(gè)人隱私數(shù)據(jù)保留在個(gè)人賬戶中,典型的例如去中心化身份系統(tǒng),可以做到不會(huì)因?yàn)橹行幕到y(tǒng)被攻破而泄露所有用戶的信息。
問:有方法實(shí)現(xiàn)去中心化的身份認(rèn)證系統(tǒng)嗎?
答:DID去中心化身份系統(tǒng)有標(biāo)準(zhǔn)實(shí)現(xiàn),我們也會(huì)在未來開源我們自己的DID解決方案。
問:Fabric中的CA認(rèn)證能不能拓展到其他場(chǎng)景呢?例如:登陸某一網(wǎng)站或者APP,通過掃描二維碼,進(jìn)行CA授權(quán)及權(quán)限劃分。
答:超級(jí)鏈不是Fabric,不過我們也有CA。除此之外,我們的權(quán)限系統(tǒng)是一種更靈活、可擴(kuò)展的權(quán)限模型。理論上,可以通過擴(kuò)展權(quán)限模型來支持外部驗(yàn)證系統(tǒng),不過外部系統(tǒng)數(shù)據(jù)不在鏈上,當(dāng)外部用戶發(fā)生變化時(shí),鏈上并無法及時(shí)得知,有可能導(dǎo)致數(shù)據(jù)不一致問題。
責(zé)任編輯;zl
評(píng)論
查看更多