Hyperledger Fabric ACL

Hyperledger Fabric ACL

ELI5 请。为什么示例 https://github.com/hyperledger/fabric/blob/release-1.2/sampleconfig/configtx.yaml 中的 ACL 策略指定在不同的地方(在 "organizations"、"orderer"、"channel" 和 "application" 部分)?这些级别是什么意思?有什么不同?

在什么情况下我应该使用哪一个?为什么在某些块中只定义了策略,而在其他策略 + ACL("application" 部分)中?

PS: channel 和 org, orderer 策略有什么区别?例如,当我在频道部分指定 "MAJORITY admins",在频道部分指定 "ANY members",在组织部分指定 "ANY admins" 时会发生什么情况?作为应用程序开发人员,在这种情况下,我会发生什么变化?

写入ACL策略是指通道配置中的策略。 channel/application 路径是配置部分。语法有点晦涩,但是 channel/application/readers 是指允许频道上的读者访问策略管理的资源,而 channel/application/writers 将资源限制为频道上的作者。

您可以在此处了解有关 ACL 及其语法的更多信息:https://hyperledger-fabric.readthedocs.io/en/latest/access_control.html

ACL(访问控制列表)策略是根据不同的逻辑结构(即通道、订购者等)定义的,因此您可以对这些逻辑结构中的每一个进行更多控制,并且您可以定义网络上的哪些身份可以做什么每个单元的操作类型(为简单起见,将它们视为写入、读取或管理相关操作)。

因此,作为应用程序开发人员,您也需要明确定义的策略。关键字(ImplicitMeta 策略定义器)ANY、ALL 和 MAJORITY 定义满足策略需要多少签名。例如,如果您想在已经 运行 的网络中将组织添加到您的频道,您将需要来自管理员的 几个 签名(定义为来自您引用的 SampleOrg link)。这些 few 签名的数量取决于此关键字在网络 bootstrap 时间的选择,如果您使用 ANY ,即使是单个签名也可以完成您的工作,而 MAJORITY 则需要签名来自大多数指定的现有身份,ALL 将需要来自所有所需现有身份的签名。未能获得所需数量的签名会使政策不满意,因此 operation/transaction 不会成功。

在上述情况下,我们试图在渠道级别进行更改,我们也可以在订购者级别左右进行更改,因此我们有单独的访问控制策略。您可能会通过官方文档对此有更清晰的了解:Here