您好,登錄后才能下訂單哦!
如何分析FISCO BCOS 角色權限模型的實現,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
引言
FISCO BCOS的權限控制是通過控制賬號對系統中表的寫權限來實現的。這種權限控制模型非常靈活且強大,用戶幾乎可以控制任意一項權限,例如,通過控制權限表的寫權限管理分配權限;通過控制系統合約所對應表的寫權限管理鏈配置、節點身份管理、合約部署、用戶表創建等;通過控制合約表的寫權限管理合約寫接口的調用。
然而,絕對完美是不存在的。強大靈活的權限控制也帶來較高的學習成本:用戶需要理解每個權限項控制的內容以及如何設置,了解鏈管理員和系統管理員的區別……大量的概念和操作,對用戶要求極高。
為了降低使用難度,提升用戶體驗,FISCO BCOS v2.5對此功能進行了優化,新增了基于角色的權限控制。把不同的權限統歸到不同角色,用戶根據賬號所屬角色即可判斷其所擁有的權限。同時v2.5基于角色引入了鏈上治理投票模型,使治理操作更加方便。
使用角色權限模型后,用戶只需記住角色,而角色對應的權限不言自明,例如,治理委員會委員擁有鏈治理相關權限,這極大降低用戶理解難度與學習成本。
、
角色對應的權限
區塊鏈上的參與者,可根據角色分為治理方、運維方、監管方和業務方。為避免既當裁判又當運動員,治理方、運維方應權責分離,角色互斥。
治理方:角色稱為治理委員會委員,簡稱委員,負責區塊鏈治理。
運維方:負責區塊鏈運維,該角色由委員添加。
業務方:業務方賬號由運維添加到某個合約,可以調用該合約的寫接口。
監管方:監管方監管鏈的運行,能夠獲取鏈運行中權限變更記錄以及需要審計的數據。
各角色所對應權限具體如下表所示。
角色權限實現的細節
本小節將簡單介紹委員、運維和業務角色的權限實現細節以及背后原理,以便更好理解與使用角色權限功能。
鏈初始無委員賬號,當存在至少一個委員賬號時,委員擁有的權限開始受到控制。聯盟鏈實際應用中多個參與方的技術實力可能并不相同,從實際應用場景出發,我們引入了鏈上治理投票模型,所有治理操作需要有效投票數/委員數>生效閾值才能生效,用戶通過新增的鏈治理預編譯合約可以實現委員的增刪、權重修改、投票生效閾值修改等操作。
投票模型有幾處值得注意:
每次投票操作,如果是委員投票,則記錄操作內容和投票委員,不重復計票
每次投票操作,計票結束后,計算有效投票數/委員數,如果大于此操作的生效閾值,則對應操作生效
投票設置過期時間,根據塊高,blockLimit的10倍,固定不可改
運維角色的新增與撤銷必須由委員角色操作。鏈初始無運維賬號,當存在至少一個運維賬號時,運維擁有的權限開始受到控制。
業務賬號可以調用鏈上查詢接口與運維指定合約的寫接口。
兼容性說明
目前,角色權限模型基于對系統中各類表的寫權限控制。我們做了最大努力與之前版本使用體驗保持一致,但為了權限控制的完整嚴謹,對FISCO BCOS v2.5新建鏈,控制臺grantPermissionManager指令不再有效,原PermissionManager的權限歸屬于委員角色。對于v2.5之前的鏈,該指令仍然有效。
本節將以“委員增刪”和“運維增刪”為例進行簡要的實操演示,文檔含括了更豐富的角色權限相關操作,歡迎移步查看。
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/permission_control.html
增刪委員
使用控制臺v1.0.10以上版本中自帶的get_account.sh腳本,生成3個如下賬號,接下來的操作以這3個賬號為例演示。配置好控制臺后,使用控制臺的-pem選項分別加載3個私鑰啟動3個控制臺。
# 賬號1 0x61d88abf7ce4a7f8479cff9cc1422bef2dac9b9a.pem # 賬號2 0x85961172229aec21694d742a5bd577bedffcfec3.pem # 賬號3 0x0b6f526d797425540ea70becd7adac7d50f4a7c0.pem
添加賬號1為委員
增加委員需要鏈治理委員會投票,有效票大于閾值才可生效。此處由于只有賬號1是委員,所以賬號1投票即可生效。
使用賬號1添加賬號2為委員
此處由于只有賬號1是委員,所以使用賬號1投票后,滿足閾值判斷立刻生效。
撤銷賬號2的委員權限
此時系統中有賬號1和賬號2兩個委員,默認投票生效閾值50%,所以需要兩個委員都投票撤銷賬號2的委員權限,有效票/總票數=2/2=1>0.5才滿足條件。
賬號1投票撤銷賬號2的委員權限,如下圖:
賬號2操作投票撤銷賬號2的委員權限,如下圖:
增刪運維
委員可以添加與撤銷運維角色,運維角色的權限包括部署合約、創建表、凍結解凍所部署的合約、使用CNS服務等。
使用賬號1添加賬號3為運維
使用賬號3部署HelloWorld
賬號3是運維角色,可以部署合約,具體操作如下圖:
使用賬號1部署HelloWorld
賬號1是委員,不具有部署合約的權限,部署合約失敗,如下圖:
使用賬號1撤銷賬號3的運維權限
賬號1是委員可以撤銷運維,如下圖:
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。