Hyperledger fabric 如何使用基于属性的访问控制(ABAC)
我知道我们可以使用ABAC在链码中实现访问控制。Hyperledger fabric 如何使用基于属性的访问控制(ABAC),hyperledger-fabric,hyperledger,access-control,Hyperledger Fabric,Hyperledger,Access Control,我知道我们可以使用ABAC在链码中实现访问控制。 例如,有两个组织。 Org1的用户有一个属性:org\u id=Org1 Org2的用户有一个属性:org\u id=Org2 但是,如果fabric ca server没有使用户在组织中具有指定属性的功能,则用户可以在fabric ca管理员的帮助下隐藏其属性。 (我的意思是Org1的用户可以有一个属性:org\u id=org2,如果他们真的想这样做的话。) 最后,我认为链码中的ABAC没有任何意义。 我怎样才能使用ABAC?是否有合适的用例
例如,有两个组织。
Org1的用户有一个属性:
org\u id=Org1
Org2的用户有一个属性:
org\u id=Org2
但是,如果fabric ca server没有使用户在组织中具有指定属性的功能,则用户可以在fabric ca管理员的帮助下隐藏其属性。(我的意思是Org1的用户可以有一个属性:
org\u id=org2
,如果他们真的想这样做的话。)
最后,我认为链码中的ABAC没有任何意义。我怎样才能使用ABAC?是否有合适的用例?当用户在CA中注册时,可以由注册他们的人员/ID为他们分配属性-例如,使用fabric CA客户端命令行:
fabric ca客户端注册--id.name clare--id.secret hellother--id.maxEnrolments-1--id.attrs'部门=财务:ecert,角色=买方批准:ecert'
当clare
注册时,这些属性将出现在证书中,在本例中,当clare
提交交易时,可以在智能合同(链码)中检查角色和部门
(有必要在属性上设置标志ecert
,以确保它包含在证书中。)
属性在CA中设置,因此仅适用于在设置属性后注册时颁发的证书-现有证书不会被修改。我知道如何使用结构CA分配属性。我想说的是,如果每个组织都自己管理Fabric CA,那么ABAC就没有任何意义。由于每个组织都可以自由分配任何属性,因此我们无法通过ABAC控制每个组织对chaincode函数的访问。你怎么看?智能合约中暴露属性的客户身份对象也有“mspId”和“id”可用-这不足以识别组织吗?