限制链码访问-Hyperledger Fabric

时间:2018-09-03 01:20:28

标签: hyperledger-fabric

我想知道如何限制特定客户端对链码功能的访问,是否可以通过ACL进行操作,或者我应该通过链码进行操作? 谢谢与问候!

2 个答案:

答案 0 :(得分:0)

您可以尝试Hyperledger Fabric的ABAC(基于属性的访问控制)。

https://jira.hyperledger.org/browse/FABC-539

在向CA注册/注册用户时,您可以向用户的x509证书添加其他字段/属性。稍后在调用时,您可以检查链码中的属性。

答案 1 :(得分:0)

如果需要根据请求者是否是某个组织的成员来限制访问,那么ABAC并不是实现此目的的正确工具,因为任何人都可以在证书中放置他们想要的任何属性。不仅如此,还可以在X509证书的Subject标头中伪造Organization。通常,请勿使用X509证书中的元数据来确定请求者是否是组织的一部分(例如,可能存在应该仅针对公司用户的链码方法)。要测试组织中的成员资格,请使用ClientIdentity [1]返回的mspID。那不能伪造。如果有人试图伪造它,则同行会出现错误:

2019-05-16 16:12:49.132 UTC [protoutils] ValidateProposalMessage -> WARN c98 channel [mychannel]: MSP error: the supplied identity is not valid: x509: certificate signed by unknown authority

ABAC可以用来限制进一步的访问,但是请记住,ABAC不是基于组织成员身份来限制访问的正确工具。


幕后到底发生了什么?例如,使用peer chaincode invoke CLI调用链码时,需要设置的环境变量之一是CORE_PEER_LOCALMSPID(如果未设置,则结构将使用{{3 }}文件)。通过设置此变量,调用chaincode的人断言他们是CORE_PEER_LOCALMSPID中组织的成员。然后,当请求到达对等方时,将根据在CORE_PEER_LOCALMSPID变量中指定的组织的CA验证进行呼叫的人员提供的X509证书。此验证与运行openssl verify -CAfile ca.cert user.pem的验证相同。现在,如果用户试图假装自己不是该组织的成员,则验证将失败,并显示上述消息。可以在core.yaml中找到有关如何验证证书的详细信息。如果使用节点sdk调用链码,则在organizations -> org1 -> mspid下的here中设置msp id。底线是,如果有人试图伪造它,将导致错误。