通过 MPS 的多租户
先决条件
网络拓扑结构
一个网络可以由多租户节点和单租户节点组成。 可以使用一台或多台独立的授权服务器来保护多租户节点,但一个多租户节点只能由一台授权服务器保护。
示例网络设置
本节概述了如何设置多租户的示例。 网络运营商必须配置为每个租户在授权服务器中为每个用户配置 scope values 。 此示例网络包含 4 个节点。 多租户 Node1 在租户 J 和 G (isMPS=true) 之间共享,而 Standalone Node2 由租户 D 单独使用 (isMPS=false)
租户分配到多租户节点如下:
J Organization 拥有 J_K1 和 J_K2 ,并且它的租户在 Node1 上
G Organization 拥有 G_K1 和 G_K2 ,其租户在 Node1 上
D Organization 拥有 D_K1 ,其租户在 Node2 上。
在实践中, J Organization 和 G Organization 可能会决定将密钥分配给他们的部门,因此安全模型可能如下:
J Organization 有:
J Investment 可以访问 J 租赁并使用任何自我管理的以太坊账户
J Settlement 可以访问 J 租户并使用节点管理的以太坊账户 J_ACC1 和自我管理的 Wallet1
G 组织有:
G Investment 可以访问 G 租赁并使用任何自我管理的以太坊账户
G Settlement 可以访问 G 租户并使用节点管理的以太坊账户 G_ACC1 和自我管理的 Wallet2
每个授权服务器都有自己的配置步骤和客户端载入过程。网络运营商的责任是通过定义 custom scopes 并将它们授予目标客户端来在授权服务器中实现上述安全模型。
代表 J Investment 的自定义范围是:
代表 G 结算的自定义范围是:
客户端还必须被授予指定对 JSON RPC API 的访问权限的范围。
有关更多信息,请参阅 JSON RPC Security plugin 。
总之,为了反映上述安全模型,授予 J Investment 的典型范围如下:
Tessera 设置
除了配置授权服务器之外,还必须更新 Tessera 配置文件以包含新标志 enableMultiplePrivateStates=true 和多租户节点的 residentGroups 。
在上述设置中, Node1 的 residentGroups 配置为:
在 Tessera 启动期间, residentGroups 被验证以检查每个钥匙是否 是单个常驻组 的一部分。 将密钥添加到常驻组后,它必须保留在该组中。
如果 residentGroups 配置不正确且 enableMultiplePrivateStates=true , Tessera 将不会启动。
在上述设置中, Node2 作为 isMPS=false 的传统独立节点运行。 Tessera 中不需要额外的配置更改。
向多租户节点添加新租户
网络管理员执行 Tessera keygen 以生成新密钥
必须更新 Tessera 配置文件以将新密钥包含在常驻组中。
Tessera 需要重新启动才能加载新密钥。 当 Tessera 启动时,如果新密钥已生成但未添加到常驻组中,则启动将失败。
应更新授权服务器,以提供对 residentGroups 配置中定义的私有状态的新租户访问权限。