Hyperledger fabric 如何使用基于属性的访问控制(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?是否有合适的用例

我知道我们可以使用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”可用-这不足以识别组织吗?