中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Fabric鏈碼背書策略及ACL配置的示例分析

發布時間:2021-12-29 09:11:08 來源:億速云 閱讀:273 作者:小新 欄目:互聯網科技

這篇文章主要為大家展示了“Fabric鏈碼背書策略及ACL配置的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Fabric鏈碼背書策略及ACL配置的示例分析”這篇文章吧。

1、Hyperledger Fabric訪問控制列表/ACL的基本概念

在Hyperledger Fabric中有兩種類型的訪問控制策略:

  • 簽名策略:Signature Policies

  • 隱性元策略:Implicit Meta Policies

簽名策略通過檢查請求中的簽名來識別特定的用戶。例如:

Policies:
  MyPolicy:
    Type: Signature
    Rule: “Org1.Peer OR Org2.Peer”

簽名策略支持的關鍵字包括:AND、OR和NOutOf,利用這幾個關鍵字可以組合出強大的訪問控制規則,例如:

  • A機構的管理員簽名的請求可以放行

  • 20個機構中超過半數的管理員簽名的請求可以放行

隱性元策略則通過聚合后代簽名策略來定義訪問控制規則,它支持默認的訪問規則例如“超過半數的機構管理員簽名的請求可以放行”。隱性元策略的定義方法與簽名策略類似但略有區別,其形式如下:

<ALL|ANY|MAJORITY> <sub_policy>

下面是一個隱性元策略的示例:

Policies:
  AnotherPolicy:
    Type: ImplicitMeta
    Rule: "MAJORITY Admins"

2、Hyperledger Fabric的默認訪問控制清單

默認的訪問控制規則定義在configtx.yaml中,用來供configtxgen生成通道配置。在官方提供的configtx.yaml示例中,第35行定義了簽名策略,第194行定義了隱性元策略,而第131行則定義了訪問控制清單/ACL。

3、自定義Hyperledger Fabric的訪問控制清單

讓我們編輯configtx.yaml中的Application: ACLs部分來修改以下內容:

peer/Propose: /Channel/Application/Writers

為:

peer/Propose: /Channel/Application/MyPolicy

其中MyPolicy這個策略定義如下:

Policies: 
    Readers:
        Type: ImplicitMeta
        Rule: "ANY Readers"
    Writers:
        Type: ImplicitMeta
        Rule: "ANY Writers"
    Admins:
        Type: ImplicitMeta
        Rule: "MAJORITY Admins"
    MyPolicy:
        Type: Signature
        Rule: "OR('Org1MSP.client')"

MyPolicy策略聲明了只有Client角色可以執行相應的任務。

別忘了生成并更新CA和管理員證書。

現在讓我們嘗試從Org1Client來調用鏈碼:

Fabric鏈碼背書策略及ACL配置的示例分析

現在使用Org2Client來調用鏈碼:

Fabric鏈碼背書策略及ACL配置的示例分析

可以清楚的看到,peer/propose已經不接受ORG2的Client的調用了。

4、動態更新Hyperledger Fabric通道的ACL配置

有兩種方法可以用來更新訪問控制策略:

  • 編輯configtx.yaml,僅適用于后續建立的新通道

  • 直接更新特定通道中的ACL配置,適用于已有的通道

在下面我們將展示如何更新已有通道中的訪問控制清單配置。

在執行以下操作之前,記得先啟動你的Hyperledger Fabric網絡。

4.1 訪問命令行接口

Hyperledger Fabric有一個自動創建的cli容器,可以提供操作節點的命令行接口。執行如下命令進入cli界面:

docker exec -it cli bash

然后設置程序需要使用的環境變量:

export CHANNEL_NAME=mychannel
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=peer0.org1.example.com:7051
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

4.2 獲取指定Fabric通道的當前配置

執行下面命令獲取通道的當前配置并寫入文件config_block.pb:

peer channel fetch config config_block.pb -o orderer.example.com:7050 -c $CHANNEL_NAME --tls --cafile $ORDERER_CA

4.3 將通道配置轉換為JSON格式

config_block.pb是二進制編碼的區塊配置數據,我們要將其先轉換為 容易查看、修改的JSON格式:

configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config > config.json

4.4 創建通道配置的JSON副本以便修改

后續的修改將在副本modified_config.json上進行:

cp config.json modified_config.json

4.5 修改JSON副本的通道配置

可以使用你喜歡的任何編輯器來修改JSON副本,比如用vim:

vim modified_config.json

我們將MyPolicy的描述從Org1MSP修改為Org2MSP:

Fabric鏈碼背書策略及ACL配置的示例分析

修改后記得保存。

4.6 將修改后的通道配置JSON副本轉換為二進制格式

configtxlator proto_encode --input modified_config.json --type common.Config --output modified_config.pb

4.7 將config.json轉換為區塊二進制格式

configtxlator proto_encode --input config.json --type common.Config --output config.pb

4.8 生成修改前后通道配置的差異

configtxlator compute_update --channel_id $CHANNEL_NAME --original config.pb --updated modified_config.pb --output diff_config.pb

4.9 將配置的差異部分轉換為JSON格式

configtxlator proto_decode --input diff_config.pb --type common.ConfigUpdate | jq . > diff_config.json

4.10 封裝Fabric配置更新消息

echo '{"payload":{"header":{"channel_header":{"channel_id":"mychannel", "type":2}},"data":{"config_update":'$(cat diff_config.json)'}}}' | jq . > diff_config_envelope.json

4.11 將配置更新消息轉換為二進制格式

configtxlator proto_encode --input diff_config_envelope.json --type common.Envelope --output diff_config_envelope.pb

4.12 簽名配置更新消息

首先以Org1的管理員簽名,設置環境變量:

export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=peer0.org1.example.com:7051
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

然后簽名:

peer channel signconfigtx -f diff_config_envelope.pb

然后以Org2的管理員身份簽名,設置環境變量:

export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=peer0.org2.example.com:7051
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt

簽名:

peer channel signconfigtx -f diff_config_envelope.pb

4.13 提交通道配置更新

執行如下命令向排序節點提交通道更新交易:

peer channel update -f diff_config_envelope.pb -c $CHANNEL_NAME -o orderer.example.com:7050 --tls --cafile $ORDERER_CA

現在讓我們檢查下效果。首先用Org1的Client調用鏈碼:

Fabric鏈碼背書策略及ACL配置的示例分析

果然失敗了。接下來用Org2的Client調用鏈碼:

Fabric鏈碼背書策略及ACL配置的示例分析

和預期也一樣,成功了。

以上是“Fabric鏈碼背書策略及ACL配置的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南通市| 陇川县| 睢宁县| 周口市| 云龙县| 涪陵区| 仙居县| 泽州县| 保山市| 灌南县| 开阳县| 张家港市| 鄂托克前旗| 泾源县| 大安市| 长兴县| 巩留县| 海宁市| 汉寿县| 宣汉县| 体育| 丰县| 台前县| 沙坪坝区| 尼木县| 石家庄市| 盖州市| 许昌县| 安化县| 丹阳市| 固始县| 托克托县| 四子王旗| 宁阳县| 石楼县| 峨边| 荥阳市| 海宁市| 石嘴山市| 开江县| 瑞安市|