基于属性的访问控制与策略之间的 Hyperledger 结构差异

Hyperledger fabric difference between Attribute based Access Control vs Policy

我正在阅读 HLF 文档,在文档中他们有通道和链代码的策略。 HLF 还有访问控制列表和基于属性的访问控制。主要区别是什么,何时何地使用基于属性的访问控制以及如何实施它。

hyperledger fabric 是基于权限的区块链。因此,要实现权限结构,请在网络配置级别(策略)和链代码级别(ABAC 或私有数据)提供对权限的支持。 首先我将解释网络配置级别:

Form Docs:policy is a set of rules that define the structure for how decisions are made and 
specific outcomes are reached. To that end, policies typically describe a who and 
a what, such as the access or rights that an individual has over an asset. We can 
see that policies are used throughout our daily lives to protect assets of value 
to us, from car rentals, health, our homes, and many more.

策略在 confgtx.yaml 文件中定义如下:

 Policies:
        Readers:
            Type: Signature
            Rule: "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"
        Writers:
            Type: Signature
            Rule: "OR('Org1MSP.admin', 'Org1MSP.client')"
        Admins:
            Type: Signature
            Rule: "OR('Org1MSP.admin')"

组织、渠道、订购者和应用程序组件有自己的政策。

更多解释:https://hyperledger-fabric.readthedocs.io/en/master/policies/policies.html

您还可以从 fabric 样本中查看 first-network,他们在 configtx.yaml 文件中使用了策略,这样您就可以轻松理解它。

基于属性的访问控制 (ABAC): ABAC 用于开发人员希望在链代码级别实施访问限制的地方。例如,如果某些资产仅允许这些用户使用,则他们具有属性代理。那么你可以使用ABAC。 ABAC 与 fabric-ca 非常相关,因为属性是在 ca 证书中定义的。 huperledger fabric 运行 时间从用户请求提案中提取属性并将其提供给链码,然后链码对其进行验证。 要使用它,您必须在您的链代码文件中导入 CID(客户端身份)库。(注意:如果找不到,请让您下载 CID 库,将供应商目录保留在链代码目录中)

Link 至 CID 文档:https://godoc.org/github.com/hyperledger/fabric/core/chaincode/lib/cid

Link 至 github 页:https://github.com/hyperledger/fabric/blob/release-1.1/core/chaincode/lib/cid/README.md