首页 > 解决方案 > 如何使用基于属性的访问控制 (ABAC)

问题描述

我知道我们可以使用 ABAC 在链码中实现访问控制。
例如,有 2 个组织。
Org1 的用户有一个属性:org_id=org1.
Org2 的用户有一个属性:org_id=org2.

但是,如果fabric-ca-server 没有使用户在组织中具有指定属性的功能,用户可以借助fabric-ca 的管理员来伪装自己的属性。
(我的意思是 Org1 的用户可以有一个属性:org_id=org2如果他们真的想做。)

最终,我认为链码中的 ABAC 没有任何意义。
我怎么能ABAC?有没有合适的用例?

标签: hyperledger-fabrichyperledgeraccess-control

解决方案


当用户在 CA 中注册时,可以通过注册他们的人员/ID 为他们分配属性 - 例如使用 fabric-ca-client 命令行:

fabric-ca-client register --id.name clare --id.secret hellothere --id.maxenrollments -1 --id.attrs 'department=Finance:ecert,role=buyerapproval:ecert'

注册时属性将出现在证书clare中,然后在此示例中,可以在Clare提交交易时在智能合约(链码)中检查角色和部门。

(必须ecert在属性上带有标志以确保它包含在证书中。)

属性在 CA 中设置,因此仅适用于在设置属性后在注册时颁发的证书 - 不会修改现有证书。


推荐阅读