【问题标题】:Hyperledger Composer: Creating participants in a multi org fabricHyperledger Composer:在多组织结构中创建参与者
【发布时间】:2023-03-10 00:50:01
【问题描述】:

我在 Fabric 网络上实现了三个组织结构。和一个单独的订购者。假设 Org1、Org2、Org3 和 Orderer。 Org1、Org2 和 Org3 有自己的 CA 并使用 CouchDB。所有对等节点都连接到同一个通道。

这是一个贸易网络,其中每个组织都代表一个贸易公司。为了进行操作,他们创建了自己的参与者以在网络中进行交易。

每个组织有两个用户将为其公司进行交易。

我正在使用 Composer REST 服务器访问网络。因此,这些组织中的每一个都有一个业务网络管理员,他们可以通过它在网络上创建参与者/用户。

要启动 REST 服务器,假设我使用的是 Org1 的名片。

  1. 如何确保如果 Org1 正在创建任何参与者,它只映射到 Org1 的公司?以及如何限制 Org1 为 Org2 创建参与者,看到这个 REST 服务器是使用 Org1 的卡设置的?我可以使用 Composer 的 permissions.acl 文件来管理它吗?
  2. 有没有办法在运行时获取调用网络管理员的身份来管理这个?

我在某处缺乏研究吗?任何参考/指导都会有所帮助。

【问题讨论】:

    标签: hyperledger-fabric hyperledger hyperledger-composer


    【解决方案1】:

    从上面的@user9040429 添加到 cmets:

    1) 访问控制列表(规则):控制哪些业务网络管理员(在“贸易网络”中:例如见下文:organization 是您的模型参与者中的字段/属性。这是“更好的做法”而不是而不是试图在业务网络之外“派生”他/她的组织(您的交易输入将允许对参与者进行检查,从中可以得出“他/她的”组织)

    rule CreateParticipantsbyOrg {
      description: "example"
      participant(t): "org.hyperledger.composer.system.NetworkAdmin"
      operation: ALL  // (CREATE, READ, UPDATE, DELETE)
      resource(r): "mybiz.domain.Traders"
      condition: (t.getIdentifier() == r.organization)
      action: ALLOW
    }
    

    并且 DENY 是 Composer ACL 规则中的隐式默认值,即除非明确允许 - 另请注意,早期规则中的“匹配”(您可能有许多规则,特别是如果它们针对相同的资源)将意味着它可能不会达到这个规则来评估(因为它从上到下阅读规则) - 只是说。

    2) 上面的规则应该足以满足您的 ACL 需求。但只是说在您的事务逻辑中(如果您需要访问它),您可以使用以下功能,如文档中本页所示 -> https://hyperledger.github.io/composer/latest/business-network/programmatic-access-control - 请参阅代码示例:

    getcurrentParticipant() // 当前业务网络参与者

    getcurrentIdentity() // 身份,由 Fabric 发布,映射到上述参与者

    【讨论】:

    • 所以在资源中加入组织属性似乎是更好的选择。但是,如果我们为三个组织拥有三个网络管理员,那么他们都将有权更新和部署 bna 文件。在最坏的情况下,如果我们认为某个组织管理员更新 ACL 文件并部署 bna 文件,我们是否有暴露数据的风险?
    • 您可以(如果您愿意)控制业务网络的Network 控制领域,如here 所述,并再次设置仅允许 org1(例如)访问网络操作的条件(仅),假设您的合作伙伴组织同意。 “部署”实际上是指“升级能力”或“修改”,因为业务网络已经部署到每个组织的对等点。
    • 类似地(如果我对后一个问题的理解正确的话)您可以“锁定”“其他组织管理员”在业务网络中可以执行的操作(以防止业务网络本身的“数据风险” )。
    • 知道了。如果他们在同一个频道上,那么创建 3 个不同的组织是否有意义?还是让这 3 个实体成为单个组织的一部分会更好?我实际上对这个不同的组织部分感到困惑。
    • 我认为如果所有 3 个组织都有能力创建和管理区块链基础设施,那么创建 3 个组织会更好。
    【解决方案2】:

    假设每个组织都有三个不同的管理员参与者,他们负责为各自的组织创建用户(参与者)。在这里,您可以使用 acls,这样一个组织的管理员就不会创建另一个组织的用户。现在第二件事是你需要在多用户模式下启动 composer rest 服务器。为此,您需要将所有网卡存储在一个地方,然后使用身份验证机制(即护照策略)来访问特定卡。您可以参考作曲家教程中的多用户模式作曲家示例。虽然在这种情况下,您还需要使用卡启动其余服务器,但这只是为了读取网络,只是为了生成其余 api 而不是进行任何交易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-01
      • 1970-01-01
      • 2019-01-27
      • 2019-02-06
      • 1970-01-01
      • 2017-12-11
      相关资源
      最近更新 更多