本发明涉及区块链实施技术领域,具体地,涉及一种用区块链实施的基于角色的访问控制管理系统及方法。
背景技术:
在联盟链这样的场景下,公链的非许可型模式无法满足联盟链成员对链的管理需求,因此需要制定完善的权限管理模型。现有技术中亟需一种用区块链实施的基于角色的访问控制管理系统及方法。
专利文献cn101379504b公开了一种用于复合应用的访问控制管理的方法、系统和计算机程序产品。在第一实施例中,提供了一种用于复合应用的基于角色的访问控制管理的方法。所述方法可以包括选择要部署在复合应用中的组件,以及分析所述组件的安全策略以确定所述组件的特定角色与所述复合应用的虚拟角色之间的映射。可以从所述安全策略生成绑定逻辑并且可以将所述组件部署在所述复合应用中。最后,通过对所述绑定逻辑中定义的操作的方法调用,可以处理所述虚拟角色的安全访问操作。该专利在结构和性能上仍然有待提高的空间。
技术实现要素:
针对现有技术中的缺陷,本发明的目的是提供一种用区块链实施的基于角色的访问控制管理系统及方法。
根据本发明提供的一种用区块链实施的基于角色的访问控制管理系统,包括:区块链可视化操作模块、区块链载体模块;所述区块链可视化操作模块与区块链载体模块相连接;所述角色管理模块与区块链载体模块相连接;所述区块链可视化操作模块包括:数据管理器、api服务器、区块链浏览器;所述区块链载体模块包括:p2p通信模块、共识模块;所述数据管理器与区块链浏览器相连;所述区块链浏览器与api服务器相连;所述p2p通信模块与api服务器相连;所述p2p通信模块与共识模块相连。
优选地,还包括:角色管理模块;所述角色管理模块与区块链载体模块相连。
优选地,所述角色管理模块与共识模块相连。
优选地,还包括:访问鉴权模块;
所述访问鉴权模块与角色管理模块相连。
优选地,所述数据管理器模块采用定时轮询的访问策略,将区块链上的数据通过访问查询类rpc接口的方式进行获取,同时负责验证数据来源的真实性和数据的有效性后将数据内容进行解码加工并存放至数据管理器的存储模块。为保证数据的真实性和防止单点障碍问题出现,数据管理器每轮新的轮询将随机选择实现导入的任意节点,通过这些节点的互相确认,保证了数据来源的真实可靠。
优选地,所述api服务器定义将区块链上的各类方法调用能力进行继承并对外提供了api接口。例如:区块链上的系统参数管理能力、合约部署和调用能力、节点管理能力等了链上发证方的申请和管理方法。在该模块中,api服务器为每一个后台管理用户申请一个链上对应的账户(包含了公钥,私钥,地址),并将之和后台用户名建立永久性映射,同时为映射的链账户设置链上用户角色私钥直接保存在api服务器。用户可以通过用户名和密码的方式登陆api服务器。
优选地,所述区块链浏览器为用户提供了采用ajax,iframe,websocket等web端数据交互技术将web端数据传输至api服务器。
用户进行操作时,将收集表单信息,自动判断用户的账户余额和交易的有效性,封装交易信息,并以远程节点代理发送的形式将交易发送至区块链上,在获取到该交易回执后,提供用户查看交易回执的能力。
优选地,所述p2p通信模块的节点包括:种子节点;
所述种子节点能够承担节点分享工作。
所述p2p通信模块在区块链的全网节点中存在一类叫“种子节点”的节点(以下简称种子节点),该类节点是网络中的最早出现的节点,负责对其他节点的分享工作。在区块链的安装程序中会初始化配置种子节点的信息,包括节点的ip地址和端口号,所有新加入的节点在安装区块链程序并启动时会与初始化的种子节点建立连接,将自身的ip地址和端口号告知种子节点,种子节点也将现有p2p网络中的其他节点信息告知新节点,并将新加入的节点告知其他节点。新节点收到其他节点信息后,与这些现有节点建立连接。
优选地,所述共识模块的节点包括:共识节点、观察员节点;
所述共识节点采用以下任意一种状态:
-正常状态;
-隔离状态。
只有处于正常状态的共识节点才可以参与共识和打包区块。节点管理(nodemanager)系统合约设计用于存储和管理节点信息。可以通过节点申请(noderegister)系统合约申请注册共识节点,审核通过后,申请节点的类型会更新为共识节点,更新后的节点信息存储在节点管理合约中,并且可被查询。管理员可以根据需要更新共识节点的状态,来决定共识节点是否可以参加共识。链上每次产生新区块后,节点管理合约中最新的节点信息都会被读取,并且最新的共识节点集合会被保存下来,并被共识引擎读取和使用。
所述角色管理模块将角色权限分为一种或者多种。
优选地,采用用区块链实施的基于角色的访问控制管理系统,进行用区块链实施的基于角色的访问控制管理。
与现有技术相比,本发明具有如下的有益效果:
1、本发明通过api服务器模块对用户提供了简单容易上手的区块链操作能力,用户只需要通过前段调用api服务器封装的各类api接口即可针对区块链进行各种操作;
2、本发明通过制定基于角色的权限访问控制策略,完善了联盟链的角色划分和安全等级,同时提供了系统的可用性和抗风险能力;
3、本发明可以在联盟链的场景下通过给出的权限管理模型,定义了区块链上各个行为人的行为模式和能力范围,完善了区块链系统的安全性和可扩展性。
4、本发明结构合理,使用方便,能够克服现有技术的缺陷。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明实施例中的整体结构示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
如图1所示,一种用区块链实施的基于角色的访问控制(role-basedaccesscontrol,rbac)管理方案,包括:区块链可视化操作模块、区块链载体模块、角色管理模块。
所述区块链可视化操作模块包含数据管理器、api服务器、区块链浏览器;
所述区块链载体模块包含p2p通信模块、共识模块;
所述角色管理模块包含用户角色管理、访问鉴权两个重要操作;
所述数据管理器模块采用定时轮询的访问策略,将区块链上的数据通过访问查询类rpc接口的方式进行获取,同时负责验证数据来源的真实性和数据的有效性后将数据内容进行解码加工并存放至数据管理器的存储模块。为保证数据的真实性和防止单点障碍问题出现,数据管理器每轮新的轮询将随机选择实现导入的任意节点,通过这些节点的互相确认,保证了数据来源的真实可靠。
所述api服务器定义将区块链上的各类方法调用能力进行了继承并对外提供了api接口,例如:区块链上的系统参数管理能力、合约部署和调用能力、节点管理能力等了链上发证方的申请和管理方法。在该模块中,api服务器为每一个后台管理用户申请一个链上对应的账户(包含了公钥,私钥,地址),并将之和后台用户名建立永久性映射,同时为映射的链账户设置链上用户角色私钥直接保存在api服务器。用户可以通过用户名和密码的方式登陆api服务器。
所述区块链浏览器模块为用户提供了采用ajax,iframe,websocket等web端数据交互技术将web端数据传输至api服务器。用户进行操作时,将收集表单信息,自动判断用户的账户余额和交易的有效性,封装交易信息,并以远程节点代理发送的形式将交易发送至区块链上,在获取到该交易回执后,提供用户查看交易回执的能力。
所述p2p通信模块在区块链的全网节点中存在一类叫“种子节点”的节点(以下简称种子节点),该类节点是网络中的最早出现的节点,负责对其他节点的分享工作。在区块链的安装程序中会初始化配置种子节点的信息,包括节点的ip地址和端口号,所有新加入的节点在安装区块链程序并启动时会与初始化的种子节点建立连接,将自身的ip地址和端口号告知种子节点,种子节点也将现有p2p网络中的其他节点信息告知新节点,并将新加入的节点告知其他节点。新节点收到其他节点信息后,与这些现有节点建立连接。
所述共识模块节点分为共识节点(validator)和观察员节点两种类型。对于共识节点来说,存在两种状态:正常和隔离。只有处于正常状态的共识节点才可以参与共识和打包区块。节点管理(nodemanager)系统合约设计用于存储和管理节点信息。可以通过节点申请(noderegister)系统合约申请注册共识节点,审核通过后,申请节点的类型会更新为共识节点,更新后的节点信息存储在节点管理合约中,并且可被查询。管理员可以根据需要更新共识节点的状态,来决定共识节点是否可以参加共识。链上每次产生新区块后,节点管理合约中最新的节点信息都会被读取,并且最新的共识节点集合会被保存下来,并被共识引擎读取和使用。
所述角色管理模块通过预编译合约的形式,将用户的整体系统的角色权限分为以下几类:
super_admin:超级管理员,具备设置链管理员的权限
chain_admin:链管理员,具备链级别操作权限
group_admin:链管理员,具备链级别操作权限
node_admin:节点操作权限(增删节点、更改节点类型)
contract_admin:管理合约部署权限、审核合约权限(若已部署合约违规,可以拉黑该合约)
contract_deployer:合约部署权限,权限模式下,必须具备该权限才能够部署合约
以上角色分别代表系统的不同权限,通过角色管理合约中的授权方法,我们可以为某用户添加指定权限。添加权限后,用户使用得到授权的账户执行某些操作时,系统会先在角色管理合约对操作人进行确权,确权成功后正常执行操作,确权失败即用户无对应权限则拒绝用户的操作并返回无对应权限的结果。
所述共识模块可以采用可插拔的共识算法;
所述角色模块可以引入did数字身份的身份架构模式方式;
具体地,在一个实施例中,在联盟链角色管理这样的实例中,链的部署者将拥有该联盟链的超级管理员权限。该超级管理员可以指定链管理员等链上的权限拥有者,管理员可以根据职能或机构的需求策略来指定角色、给角色分配权限并给用户分配角色,用户能够访问的权限由该用户拥有的角色权限集合决定。
在本申请的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
1.一种用区块链实施的基于角色的访问控制管理系统,其特征在于,包括:区块链可视化操作模块、区块链载体模块;
所述区块链可视化操作模块与区块链载体模块相连接;
所述角色管理模块与区块链载体模块相连接;
所述区块链可视化操作模块包括:数据管理器、api服务器、区块链浏览器;
所述区块链载体模块包括:p2p通信模块、共识模块;
所述数据管理器与区块链浏览器相连;
所述区块链浏览器与api服务器相连;
所述p2p通信模块与api服务器相连;
所述p2p通信模块与共识模块相连。
2.根据权利要求1所述的用区块链实施的基于角色的访问控制管理系统,其特征在于,还包括:角色管理模块;
所述角色管理模块与区块链载体模块相连。
3.根据权利要求2所述的用区块链实施的基于角色的访问控制管理系统,其特征在于,所述角色管理模块与共识模块相连。
4.根据权利要求2所述的用区块链实施的基于角色的访问控制管理系统,其特征在于,还包括:访问鉴权模块;
所述访问鉴权模块与角色管理模块相连。
5.根据权利要求1所述的用区块链实施的基于角色的访问控制管理系统,其特征在于,所述数据管理器模块采用定时轮询的访问策略,将区块链上的数据通过访问查询类rpc接口的方式进行获取,同时负责验证数据来源的真实性和数据的有效性后将数据内容进行解码加工并存放至数据管理器的存储模块。
6.根据权利要求1所述的用区块链实施的基于角色的访问控制管理系统,其特征在于,所述api服务器定义将区块链上的各类方法调用能力进行继承并对外提供了api接口。
7.根据权利要求1所述的用区块链实施的基于角色的访问控制管理系统,其特征在于,所述区块链浏览器将web端数据传输至api服务器。
8.根据权利要求1所述的用区块链实施的基于角色的访问控制管理系统,其特征在于,所述p2p通信模块的节点包括:种子节点;
所述种子节点能够承担节点分享工作。
9.根据权利要求2所述的用区块链实施的基于角色的访问控制管理系统,其特征在于,所述共识模块的节点包括:共识节点、观察员节点;
所述共识节点采用以下任意一种状态:
-正常状态;
-隔离状态;
所述角色管理模块将角色权限分为一种或者多种。
10.一种用区块链实施的基于角色的访问控制管理方法,其特征在于,采用权利要求1-9任一项所述的用区块链实施的基于角色的访问控制管理系统,进行用区块链实施的基于角色的访问控制管理。
技术总结