真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Hyperledgercomposer訪問控制語言怎么用

這篇文章主要為大家展示了“Hyperledger composer訪問控制語言怎么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Hyperledger composer訪問控制語言怎么用”這篇文章吧。

創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,先為渝中等服務(wù)建站,渝中等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為渝中企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

    Hyperledger Composer包含訪問控制語言(ACL),它提供對(duì)域模型元素的聲明式訪問控制。通過定義ACL規(guī)則,您可以確定允許哪些用戶/角色在業(yè)務(wù)網(wǎng)絡(luò)的域模型中創(chuàng)建,讀取,更新或刪除元素。

    1、授予網(wǎng)絡(luò)訪問控制權(quán)

     使用系統(tǒng)命名空間授予網(wǎng)絡(luò)訪問權(quán)限。系統(tǒng)名稱空間始終org.hyperledger.composer.system.Network用于網(wǎng)絡(luò)訪問和org.hyperledger.composer.system所有訪問。以下訪問控制規(guī)則為NetworkControl參與者授予對(duì)網(wǎng)絡(luò)命令使用所有操作的權(quán)限。

rule NetworkControlPermission {
  description:  "NetworkControl can access network commands"
  participant: "org.example.basic.NetworkControl"
  operation: ALL
  resource: "org.hyperledger.composer.system.Network"
  action: ALLOW
}

以下訪問控制規(guī)則將允許所有參與者訪問業(yè)務(wù)網(wǎng)絡(luò)中的所有操作和命令,包括網(wǎng)絡(luò)訪問和業(yè)務(wù)訪問。

rule AllAccess {
  description: "AllAccess - grant everything to everybody"
  participant: "org.hyperledger.composer.system.Participant"
  operation: ALL
  resource: "org.hyperledger.composer.system.**"
  action: ALLOW
}

    2、訪問控制規(guī)則的評(píng)估

    業(yè)務(wù)網(wǎng)絡(luò)的訪問控制由一組有序的ACL規(guī)則來定義。規(guī)則按順序進(jìn)行評(píng)估,條件匹配的第一條規(guī)則決定訪問是被授予還是拒絕。如果沒有規(guī)則匹配,則訪問被拒絕。

    ACL規(guī)則是在permissions.acl業(yè)務(wù)網(wǎng)絡(luò)的根目錄中調(diào)用的文件中定義的。如果該業(yè)務(wù)網(wǎng)絡(luò)中缺少該文件,則允許所有訪問。

    3、訪問控制規(guī)則語法

    有兩種類型的ACL規(guī)則:簡(jiǎn)單ACL規(guī)則和條件ACL規(guī)則。簡(jiǎn)單規(guī)則用于控制參與者類型或參與者實(shí)例對(duì)名稱空間或資產(chǎn)的訪問。例如,下面的規(guī)則指出任何org.example.SampleParticipant類型的實(shí)例都可以對(duì)所有實(shí)例執(zhí)行所有操作org.example.SampleAsset。

rule SimpleRule {
    description: "Description of the ACL rule"
    participant: "org.example.SampleParticipant"
    operation: ALL
    resource: "org.example.SampleAsset"
    action: ALLOW
}

有條件的ACL規(guī)則為參與者和被訪問的資源引入變量綁定,以及布爾型JavaScript表達(dá)式,如果為true,則參與者可以允許或拒絕資源訪問。例如,下面的規(guī)則指出,任何org.example.SampleParticipant類型的實(shí)例都可以在org.example.SampleAssetIF的所有實(shí)例上執(zhí)行ALL操作,參與者是資產(chǎn)的所有者。

rule SampleConditionalRule {
    description: "Description of the ACL rule"
    participant(m): "org.example.SampleParticipant"
    operation: ALL
    resource(v): "org.example.SampleAsset"
    condition: (v.owner.getIdentifier() == m.getIdentifier())
    action: ALLOW
}

有條件的ACL規(guī)則也可以指定一個(gè)可選的事務(wù)子句。當(dāng)指定事務(wù)子句時(shí),如果參與者提交了事務(wù),并且該事務(wù)是指定類型,則ACL規(guī)則僅允許參與者訪問資源。例如,下面的規(guī)則指出,任何org.example.SampleParticipant類型的實(shí)例都可以對(duì)org.example.SampleAssetIF的所有實(shí)例執(zhí)行ALL操作,參與者是資產(chǎn)的所有者,并且參與者提交了該org.example.SampleTransaction類型的事務(wù)以執(zhí)行操作。

rule SampleConditionalRuleWithTransaction {
    description: "Description of the ACL rule"
    participant(m): "org.example.SampleParticipant"
    operation: READ, CREATE, UPDATE
    resource(v): "org.example.SampleAsset"
    transaction(tx): "org.example.SampleTransaction"
    condition: (v.owner.getIdentifier() == m.getIdentifier())
    action: ALLOW
}

可以定義多個(gè)ACL規(guī)則,從概念上定義決策表。決策樹的行為定義訪問控制決策(ALLOW或DENY)。如果決策表無法匹配,默認(rèn)情況下,訪問被拒絕。

資源定義了ACL規(guī)則適用的內(nèi)容。這可以是一個(gè)類,名稱空間內(nèi)的所有類或名稱空間下的所有類。它也可以是一個(gè)類的實(shí)例。

資源示例:

  • 命名空間:org.example。*

  • 命名空間(遞歸):org.example。**

  • 命名空間中的類:org.example.Car

  • 類的實(shí)例:org.example.Car#ABC123

操作標(biāo)識(shí)規(guī)則管理的操作。支持四種操作:CREATE,READ,UPDATE和DELETE。您可以使用ALL指定規(guī)則管理所有支持的操作。或者,您可以使用逗號(hào)分隔列表來指定規(guī)則管理一組支持的操作。

參與者定義已提交交易進(jìn)行處理的個(gè)人或?qū)嶓w。如果指定了參與者,他們必須存在于參與者注冊(cè)表中。PARTICIPANT可以選擇性地綁定到一個(gè)變量以用于PREDICATE。特殊值“ANY”可以用來表示參與者類型檢查沒有針對(duì)規(guī)則執(zhí)行。

事務(wù)定義了參與者為了對(duì)指定資源執(zhí)行指定操作而必須提交的事務(wù)。如果指定了此子句,并且參與者未提交此類型的事務(wù) - 例如,他們正在使用CRUD API - 則ACL規(guī)則不允許訪問。

條件是綁定變量上的布爾型JavaScript表達(dá)式。任何在表達(dá)式中合法的JavaScript表達(dá)式都if(...)可以在這里使用。用于ACL規(guī)則條件的JavaScript表達(dá)式可以引用腳本文件中的JavaScript實(shí)用程序函數(shù)。這允許用戶輕松實(shí)現(xiàn)復(fù)雜的訪問控制邏輯,并在多個(gè)ACL規(guī)則中重復(fù)使用相同的訪問控制邏輯功能。

行動(dòng)確定規(guī)則的行為。它必須是:允許,拒絕。

    4、舉例

    示例ACL規(guī)則(按評(píng)估順序):

rule R1 {
    description: "Fred can DELETE the car ABC123"
    participant: "org.example.Driver#Fred"
    operation: DELETE
    resource: "org.example.Car#ABC123"
    action: ALLOW
}

rule R2 {
    description: "regulator with ID Bill can not update a Car if they own it"
    participant(r): "org.example.Regulator#Bill"
    operation: UPDATE
    resource(c): "org.example.Car"
    condition: (c.owner == r)
    action: DENY
}

rule R3 {
    description: "regulators can perform all operations on Cars"
    participant: "org.example.Regulator"
    operation: ALL
    resource: "org.example.Car"
    action: ALLOW
}

rule R4 {
    description: "Everyone can read all resources in the org.example namespace"
    participant: "ANY"
    operation: READ
    resource: "org.example.*"
    action: ALLOW
}

rule R5 {
    description: "Everyone can read all resources under the org.example namespace"
    participant: "ANY"
    operation: READ
    resource: "org.example.**"
    action: ALLOW
}

規(guī)則從頂部(最具體)到底部(最不具體)進(jìn)行評(píng)估。一旦參與者,操作和資源匹配規(guī)則,則不評(píng)估后續(xù)規(guī)則。

這種排序使決策表更快地掃描人類和計(jì)算機(jī)。如果沒有ACL規(guī)則觸發(fā),則訪問控制決策是拒絕。

以上是“Hyperledger composer訪問控制語言怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁標(biāo)題:Hyperledgercomposer訪問控制語言怎么用
當(dāng)前路徑:http://weahome.cn/article/gssijj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部