Hyperledger fabric 在Hyperledger结构中使用基于自定义从属关系的策略

Hyperledger fabric 在Hyperledger结构中使用基于自定义从属关系的策略,hyperledger-fabric,hyperledger-fabric-ca,organizational-unit,Hyperledger Fabric,Hyperledger Fabric Ca,Organizational Unit,我希望为对等组织提供4个中间CA:ICA1、ICA2、ICA3和ICA4——每个节点OU(对等、订购方、管理员和客户端)一个 假设我将ICA1作为信道配置的对等节点OU中的cacerts属性,那么Peer身份是否会位于不同的ICA(ICA2、ICA3或ICA4)下,能够满足签名为“OrgMSP.Peer”的策略 如果是,那么我如何确保只有特定部门下的角色集才能满足OrgMSP.给出的策略?我不希望为组织中的每个部门或团队创建MSP定义。那么,没有这一点是否可以实现 如果否,那么我还可以在通道的

我希望为对等组织提供4个中间CA:
ICA1、ICA2、ICA3和ICA4
——每个节点OU(对等、订购方、管理员和客户端)一个

假设我将
ICA1
作为信道配置的对等节点OU中的
cacerts
属性,那么
Peer
身份是否会位于不同的
ICA
ICA2
ICA3
ICA4
)下,能够满足签名为
“OrgMSP.Peer”
的策略

  • 如果是,那么我如何确保只有特定部门下的角色集才能满足
    OrgMSP.
    给出的策略?我不希望为组织中的每个部门或团队创建MSP定义。那么,没有这一点是否可以实现
  • 如果否,那么我还可以在通道的节点OU配置中为特定OU指定一组ICA,这样我就可以利用非常复杂的策略,如
    “OrgMSP.peer”之一的签名
    ,假设这里,
    对等方
    OU的
    cacerts
    属性将是ICA1和ICA3。这是可以实现的吗

当您指定nodeOU配置时,您可以简单地提供与角色对应的OU名称(听起来这就是您所做的),或者您可以指定OU名称和颁发证书。这可以是根CA,也可以是中间CA,但在任何一种情况下,为了满足该角色,证书必须同时具有指定的OU和由指定的CA颁发的OU

注意:每个角色/证书对通知MSP满足角色的证书的有效颁发者。因此,如果您有CA1、CA2、ICA1和ICA2,您可以两次指定给定角色,一次为CA1,一次为ICA2。那么,只有CA1或ICA2(直接)颁发的证书才能满足角色要求

如果查看,可以看到可能指定了证书,但默认情况下会忽略该证书


您可以看到有关此证书在实际中如何使用的更多详细信息。

因此,这意味着如果我创建policy
OrgMSP.admin
并在OU定义中将ICA1作为
admin
角色的
cacert
,那么只有ICA1下的
admin
身份才能执行该操作,对吗?假设ICA2下的
admin
类型标识将无法满足该策略。对的如果我没有错,
cacerts
值只能设置为一个PEM证书,对吗?如果我在此处编辑
FabricNodeOUs
消息块:那么我也可以拥有自定义角色。对吗?Fabric目前实际上不支持该功能。但是,在结构的某些不同组件上还有其他含义吗?是的,如果您指定了与特定节点出口关联的CA证书,则该证书和OU组合被认为对该角色有效。注意,您可以多次指定角色,并具有多个颁发证书。您可以为角色选择自定义OU名称,但不能指定自定义角色。如果您想要任意角色,您可以基于OU而不是基于角色构建策略。答案有点细微差别。可以直接使用引用OU的JSON/protobuf表示来制定策略。但是,CLI工具(如
configtxgen
peer
)使用的“策略语言”仅支持引用角色。扩展策略语言应该不会太困难,而且它有一个开放的工作项,但是现在,尽管可以在内部定义基于OU的策略,但我们没有很好的方式对外表示它。对于大多数用例,“管理员”、“对等者”、“客户机”和“订购者”的角色已经足够了。如果这能满足你的需要,我会用这些。如果确实需要基于OU的任意策略,可以定义与特定发行人关联的任意OU,并使用这些OU手动(在代码中)制定自定义策略。如果你能避免的话,我建议你不要使用后者,因为这需要更多的工作。至于这些事情是必须在引导时完成,还是可以在以后修改,一般来说,任何参数,比如在引导时设置的MSP和策略,都可以在以后更新。只是有点痛。