hyperledger-fabric - 如何使用基于属性的访问控制 (ABAC)
问题描述
我知道我们可以使用 ABAC 在链码中实现访问控制。
例如,有 2 个组织。
Org1 的用户有一个属性:org_id=org1
.
Org2 的用户有一个属性:org_id=org2
.
但是,如果fabric-ca-server 没有使用户在组织中具有指定属性的功能,用户可以借助fabric-ca 的管理员来伪装自己的属性。
(我的意思是 Org1 的用户可以有一个属性:org_id=org2
如果他们真的想做。)
最终,我认为链码中的 ABAC 没有任何意义。
我怎么能ABAC?有没有合适的用例?
解决方案
当用户在 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 中设置,因此仅适用于在设置属性后在注册时颁发的证书 - 不会修改现有证书。
推荐阅读
- unity3d - 更改我的 mac 后在 Unity 中看不到我的项目
- c++ - 检查图连通性的程序会产生分段错误
- c# - xUnit 并行测试集合
- spring-boot - 带有 Spring Boot 单元测试设置的 Apache Camel
- android - 无法使用自定义适配器从 firebase 获取数据,“Сan't pass null for argument pathString in child ()”
- vba - 当用户选择组合框时验证 2 个文本框是否为空
- android - java.net.ConnectException:连接失败
- spring - 蜂窝 + 弹簧靴 2 排除标准字段
- git - 所有提交的 clang-format 以修复缩进并删除尾随空格
- python - 如何自动生成 Turtle 对象?