CN110348202B - 一种基于区块链智能合约的角色访问控制系统及方法 - Google Patents
一种基于区块链智能合约的角色访问控制系统及方法 Download PDFInfo
- Publication number
- CN110348202B CN110348202B CN201910632121.0A CN201910632121A CN110348202B CN 110348202 B CN110348202 B CN 110348202B CN 201910632121 A CN201910632121 A CN 201910632121A CN 110348202 B CN110348202 B CN 110348202B
- Authority
- CN
- China
- Prior art keywords
- user
- role
- authority
- access control
- administrator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Abstract
本发明提供了一种基于区块链智能合约的角色访问控制系统,根据RBAC规则设置,基于区块链智能合约的角色访问控制系统逻辑上分为:数据层、访问控制层及表现层,基于区块链智能合约的角色访问控制系统按照功能模块分为用户、角色及权限模块。还提供了角色访问控制方法,在访问控制系统使用之前需完成合约部署、管理员的初始化及角色与权限的配置;随后用户才能进行注册,管理员才能审核、分配角色的相关工作,包括:步骤1:在区块链系统中部署基于区块链智能合约的角色访问控制系统的智能合约;步骤2:配置权限与角色;步骤3:用户注册账户;步骤4:审核用户注册;步骤5:管理员为用户分配角色;步骤6:用户使用密钥登录并访问系统。
Description
技术领域
本发明涉及区块链技术领域,特别涉及一种基于区块链智能合约的角色访问控制系统及方法。
背景技术
在当今互联网时代,特别是移动互联网时代,信息技术对人类社会及日常生活的改变是前所未有的。与此同时,信息安全的重要性也在日益加强,需要有效防止误操作、人为破坏和数据泄露等现象,完成信息的有效隔离,使不同角色人员只能看到及操作属于自己权限范围的数据。这就涉及访问控制功能,可通过设置用户、角色、权限和操作的关系,限制用户对资源的访问和操作。基于角色的访问控制模型RBAC(Role-Based AccessControl)作为一种通用规则,受到学术界和工业界的青睐。
RBAC模型在用户与权限之间添加了角色模块,取消了用户和权限的直接关联,改为通过用户关联角色,角色关联权限,用户依据其责任和级别被指派相应的角色,并且通过所分配的角色获得对应权限,角色依据权限完成各类操作,用户与角色的关系易被修改,从而简化访问控制过程。
传统物理世界的身份认证,是可以通过用户物理特征(比如外貌特征)和身份证件(比如身份证)来保证的,但是在互联网时代,这种风险会大大加大,因为用户角色是虚拟的,传统的账户方式很难确定登录用户的物理身份,比如无法有效避免使用别人用户享受特定权限来使用资源,也就是说,物理空间用户身份和网络世界的账户身份缺乏一种紧密结合的桥梁。
另外,目前应用RBAC模型实现的访问控制,用户、角色与权限数据通常存放在中心化数据库中,这种传统的权限数据管理方式易导致角色、权限数据被篡改,为系统安全管理带来隐患。
当前区块链技术发展迅速,被称为下一代“价值”互联网,存在广泛的应用。区块链是具备分布式数据存储、点对点传输、节点共识、安全加密等计算机技术特征的新型应用模式,具有去中心化、开放性、数据不可篡改等特点。智能合约是传统合约的数字化版本,是在区块链系统上自动运行的计算机程序,可以在满足约定条件时自动执行。智能合约一旦部署就不可更改,具备可信特征。区块链与智能合约是天生的联盟,可有效结合使用。
区块链和智能合约技术的实际应用,特别是现在DApps(DecentralizedApplications)应用系统得到推广,开拓一个新的市场。DApps有效使用的一个基本前提就是加强安全性,这也正体现了区块链的安全特性。目前DApps的安全设计通常是针对某个应用定制开发的,开发工作费时费力,且不具备通用性。
传统RBAC规则当前面临着安全性的挑战,比如中心数据库的可修改性和无踪迹性、终端用户的身份确定问题、DApps应用安全性问题等给RBAC的应用实施带来隐患。RBAC的智能合约化,并与区块链结合使用,这种新模式对于加强区块链应用(DApps)的安全性,具有重要的作用。
发明内容
传统的系统权限管理大多将数据存储于中心化数据库,存在易被篡改的问题,为了解决这些问题,本发明在RBAC基本原理的基础上,结合区块链和智能合约的运行特点,提出一种基于区块链智能合约的角色访问控制系统及方法。
本发明的目的在于提供一种基于区块链智能合约的角色访问控制系统,根据RBAC规则设置,所述基于区块链智能合约的角色访问控制系统逻辑上分为三层:数据层、访问控制层以及表现层,其中:
所述数据层由区块链系统组成,负责存储关键数据,包括系统中的用户数据、角色数据、权限数据、用户与角色关系以及角色与权限关系;
所述访问控制层以智能合约实现对权限的管理,负责对用户、角色以及权限的管理。
所述表现层是所述系统的最上层,提供用户、角色以及权限数据的创建、修改、查询以及禁用的处理功能,并通过可视化手段展示复杂的用户、角色、权限关系。
优选地,所述访问控制层包括用户、角色以及权限三个智能合约功能模块,通过所述三个智能合约功能模块,使用者查询和定制用户、角色、权限以及用户与角色、角色与权限的关系,同时,实现对用户、角色以及权限的修改、查询和禁用,所述访问控制层的智能合约代码一旦部署不能改变,系统中的访问控制需要按照规则严格执行,所述访问控制层将创建、修改、查询和禁用功能智能合约化,供所述表现层调用。
优选地,所述表现层包含用户管理、角色管理、权限管理、与关系展示四个功能模块,可分别提供用户、角色以及权限数据的创建、修改、查询以及禁用等处理功能,并通过可视化手段展示复杂的用户、角色、权限关系,在所述关系展示模块内浏览所有更新信息,检查有无异常更新,以保护系统的运行安全。
优选地,所述基于区块链智能合约的角色访问控制系统按照功能模块分为用户、角色及权限模块,所有在系统内注册成功的用户、创建成功的角色以及权限在需要禁用时,都只能通过改变其可用性来实现,所述用户、角色及权限中设置用户、角色及权限结构体,所述用户、角色及权限结构体中包含一个名为可用性的变量,所述变量通过被赋值0或1分别代表用户、角色及权限不可用或用户、角色及权限可用,每次涉及用户、角色及权限时要先检查用户、角色及权限的可用性后再执行具体内容;所述基于区块链智能合约的角色访问控制系统中所述用户与所述角色之间,所述角色与所述权限之间存在联系,通过所述访问控制层的所述智能合约将所述用户与所述用户对应角色关联,所述角色与所述用户对应权限关联,而所述用户与所述权限之间不存在直接联系。
优选地,所述用户模块包含用户注册、用户审核、用户修改、用户查询、用户禁用、用户角色查询、用户角色修改以及用户权限查询8个子模块,其中,用户以账户的形式存在,在所述用户模块中,所有用户都可使用用户注册子模块,其余子模块仅限管理员调用,管理员使用用户审核子模块审核用户的注册申请,并为其分配角色;使用用户修改子模块更新用户名称以及附加说明信息;使用用户查询子模块查询用户的可用性、用户的地址、用户名称以及附加说明信息;使用用户禁用子模块将所述用户禁用;使用用户角色查询子模块查询用户所属角色;使用用户角色修改子模块修改用户的角色;使用用户权限查询子模块查询用户权限。
优选地,所述角色模块包含角色创建、角色修改、角色查询、角色禁用、角色权限查询以及角色权限修改6个子模块,且所述角色模块仅限管理员调用,管理员使用角色创建子模块创建新的角色;使用角色修改子模块修改角色名称以及附加说明信息;使用角色查询子模块查询角色名称、角色可用性以及附加说明信息;使用角色禁用子模块禁用关联角色;使用角色权限查询子模块查询角色的权限信息;使用角色权限修改子模块修改角色的权限。
优选地,所述权限模块包含权限创建、权限修改、权限查询以及权限禁用4个子模块,且所述权限模块仅限管理员调用,管理员可以使用权限创建子模块创建新权限;使用权限修改子模块修改权限名称以及附加说明信息;使用权限查询子模块查询某权限的名称、权限的可用性以及附加说明信息;使用权限禁用子模块禁用关联权限。
优选地,所述基于区块链智能合约的角色访问控制系统的三个功能模块的使用方法包括:
1)在管理员审核用户前,配置好所需权限,管理员通过权限模块的权限创建子模块创建权限;
2)管理员通过角色模块的角色创建子模块创建角色,随后为角色分配权限;
3)用户通过用户模块中的用户注册子模块完成注册;
4)用户注册子模块会对用户信息自动进行正确性和合规性检查,随后提交给管理员审核,进而管理员对审核通过的用户分配角色;
5)用户在管理员审核并分配角色后,可根据被授予的角色以及角色具有的权限去对业务系统进行操作;
6)后期若用户失效,管理员使用用户模块中的用户禁用子模块禁用所述用户。
本发明的目的还在于提供一种使用基于区块链智能合约的角色访问控制系统进行的角色访问控制方法,在访问控制系统正式使用之前需要完成合约部署、管理员的初始化以及角色与权限的配置;随后用户才能进行注册,管理员才能审核、分配角色的相关工作,包括:
步骤1:在区块链系统中部署基于区块链智能合约的角色访问控制系统的智能合约:部署智能合约是角色访问控制系统初始化的一部分,部署后所述系统会自动建立管理员权限、管理员角色以及管理员角色和权限间的关系,系统中将部署者生成用户,并将所述用户设置为管理员角色,智能合约的部署者即为智能合约的拥有者,同时也是所述角色控制系统的初始管理员,初始管理员不能更新,但可以设置多个其他用户为管理员角色;
步骤2:配置权限与角色:智能合约部署后,管理员根据需求配置权限,完成角色以及权限与角色的关联操作;
步骤3:用户注册账户:基于区块链智能合约的角色访问控制系统执行时,用户通过表现层模块注册账户,注册后会在区块链系统中生成密钥文件,所述密钥文件包含用户的账户密码,并加入用户生物信息来加强用户身份的确定性,此时该文件会被下载保存在角色访问控制系统中;
步骤4:审核用户注册:用户注册信息首先需要经过智能合约的正确性和合规性检查,智能合约会根据事先规定的审核规则判断用户上传的各项信息是否满足要求,若用户达到要求则通过智能合约检查,随后接受管理员的审核;
步骤5:管理员为用户分配角色:当管理员通过用户审核后,管理员为用户分配角色,同时系统会将用户注册时生成的密钥文件通过安全渠道反馈给用户;
步骤6:用户使用密钥登录并访问系统:管理员完成用户审核工作,用户收到密钥文件,通过密钥查看角色并依据权限在系统执行相关操作。
优选地,所述基于区块链智能合约的角色访问控制方法支持DApps应用的快速构建,通过形成DApps应用安全可插拔模块,与DApps无缝结合,DApps的业务和服务模块与权限相结合,通过智能合约的互相调用来实现;上层支持与用户交互的表现层,并通过Web3j.js或JSON-RPC方式调用,集成访问控制模块后,DApps表现层的Web页面接收用户服务请求后,不再直接调用智能合约,而是首先通过Web3.js或JSON-RPC调用访问控制模块,访问控制模块根据区块链上存储的规则,根据角色和权限调用对应的业务智能合约加以执行。
本发明的有益效果:
1、可以保证用户、角色与权限数据不易被篡改,且对用户、角色以及权限的修改,以及所述用户、角色以及权限之间关系的所有变动都会被记录,具备溯源功能,可随时追溯和审计,同时,并未损害应用的执行效率;
2、用户身份安全性提高,提供私钥或者生物特征信息来加强用户身份的认证;
3、审核规则和智能合约全部都是公开透明的;
4、系统运行是全自动和分布式的,无须中心机构的操作;
5、系统通过弹性接口作为DApps应用的安全可插拔模块,支持DApps的快速构建,与DApps无缝结合。
总之,所述系统及方法具备通用性,特别适用于区块链相关应用,增加了系统访问控制的安全性,有效推动了区块链应用的实施落地。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本发明的目标及特征考虑到如下结合附图的描述将更加明显,附图中:
图1为根据本发明实施例的基于区块链智能合约的角色访问控制系统逻辑架构图;
图2为根据本发明实施例的基于区块链智能合约的角色访问控制系统访问控制智能合约的功能模块图;
图3为根据本发明实施例的访问控制系统中用户、角色、权限间逻辑关系图;
图4为根据本发明实施例的访问控制系统组成关系示例图;
图5为根据本发明实施例的访问控制系统运行流程图;
图6为根据本发明实施例的访问控制系统支持DApps架构图;
图7为根据本发明实施例的访问控制系统实施逻辑架构图;
图8为根据本发明实施例的访问控制智能合约实施功能模块图;
图9为根据本发明实施例的访问控制系统方法流程图。
具体实施方式
为了使得本发明能够针对其发明要点更加明显易懂,下面将结合附图和实例对本发明作进一步的说明。在下面的描述中阐述了很多细节和具体实例,提供这些实例是为了能够更透彻地理解本发明,并且能够将本发明完整形象地传达给本领域的技术人员。虽然本发明能够以很多不同于此描述的其它方式实施,但是本领域技术人员可以在不违背本发明内涵的情况下做相应的推广,因此本发明不受下面公开的具体实例及具体附图所限制。
区块链是利用分布式节点的共识机制来存储数据,利用自动化脚本代码即智能合约来执行业务逻辑并处理数据,能减少人为干扰因素,具有去中心化、可追溯、篡改难、安全性高等特点。智能合约和区块链的有效结合,对于DApps的推广和应用具有重要的意义。本实施例依据RBAC基本原理,将用户、角色以及权限等数据存储于区块链,并结合智能合约完成访问控制操作,加强系统的安全性和区块链应用的通用性。
本实施例利用区块链智能合约来实现对用户、角色以及权限的自动管理,防篡改,完成相关数据与关系变更的储存,达到安全行为可追溯的目标。智能合约访问控制系统可以将规则自动化并严格执行,保证运转效率不受人为因素干扰,保障了安全规则的执行力。
本实施例的访问控制系统的逻辑架构如图1所示,依据区块链智能合约特点,以及RBAC规则原理,访问控制系统逻辑上可分为三层:数据层、访问控制层(即智能合约)以及表现层。下面描述各层组成与功能,以及层次之间的关系。
1、数据层由区块链系统组成,负责存储关键数据,包括系统中的用户数据、角色数据、权限数据、用户与角色关系以及角色与权限关系。
2、访问控制层主要以智能合约实现对权限的管理,负责对用户、角色以及权限的管理。主要包括用户、角色以及权限三个智能合约功能模块,通过这些智能合约模块,使用者可以查询和定制用户、角色、权限以及用户与角色、角色与权限的关系。同时,可以实现对用户、角色以及权限的修改、查询以及禁用。访问控制智能合约代码一旦部署不能改变,系统中的访问控制需要按照规则严格执行。该层主要将创建、修改、查询和禁用等功能智能合约化,供表现层调用。
3、表现层是该架构的最上层,包含用户管理、角色管理、权限管理、与关系展示四个功能模块,可分别提供用户、角色以及权限数据的创建、修改、查询以及禁用等处理功能,并通过可视化手段展示复杂的用户、角色、权限关系。由于区块链上的数据不可篡改,所有的信息更新都会被追加记录,所以管理员可以在关系展示模块浏览所有更新信息,检查有无异常更新,以保护系统的运行安全。
本实施例的基于区块链智能合约的角色访问控制系统,功能模块如图2所示,包含用户、角色及权限三个主功能模块及其子模块。其中,由于区块链上数据不可删除,所以所有在系统内注册成功的用户、创建成功的角色以及权限在需要禁用时,都只能通过改变其可用性来实现。例如,可以规定该智能合约权限模块中,权限结构体中包含一个名为可用性的变量,该变量可以被赋值0或1,其中0代表权限不可用,1代表权限可用。每次涉及权限时要先检查权限的可用性后再执行具体内容。用户与角色的禁用也采用类似实现方式。
其中,用户模块包含用户注册、用户审核、用户修改、用户查询、用户禁用、用户角色查询、用户角色修改以及用户权限查询8个子模块。其中,用户以账户的形式存在,在用户模块中,所有用户都可使用用户注册子模块,其余子模块仅限管理员调用。管理员使用用户审核子模块审核用户的注册申请,并为其分配角色;使用用户修改子模块更新用户名称以及附加说明信息;使用用户查询子模块查询用户的可用性、用户的地址、用户名称以及附加说明信息;使用用户禁用子模块将该用户禁用;使用用户角色查询子模块查询用户所属角色;使用用户角色修改子模块修改用户的角色;使用用户权限查询子模块查询用户权限。角色模块包含角色创建、角色修改、角色查询、角色禁用、角色权限查询以及角色权限修改6个子模块,且该模块仅限管理员调用。管理员可以使用角色创建子模块创建新的角色;使用角色修改子模块修改角色名称以及附加说明信息;使用角色查询子模块查询角色名称、角色可用性以及附加说明信息;使用角色禁用子模块禁用关联角色;使用角色权限查询子模块查询角色的权限信息;使用角色权限修改子模块修改角色的权限。权限模块包含权限创建、权限修改、权限查询以及权限禁用4个子模块,且该模块仅限管理员调用。管理员可以使用权限创建子模块创建新权限;使用权限修改子模块修改权限名称以及附加说明信息;使用权限查询子模块查询某权限的名称、权限的可用性以及附加说明信息;使用权限禁用子模块禁用关联权限。这里,管理员在初始化过程中确定,管理员可以创建其他管理员,但是初始管理员不能禁用。另外一种更加智能化的管理方法,是通过智能合约来实现管理员的审核和操作规则,自动智能化的去执行各种审核和操作工作。
该访问控制系统用户、角色、权限关系如图3所示,访问控制系统中用户与角色之间,角色与权限之间存在联系,通过智能合约的功能模块可将用户与对应角色关联,角色与对应权限关联,而用户与权限之间不存在直接联系。
该访问控制系统组成关系示例如图4所示。假设系统中存在四个用户(分别是A,B,C,D),三个角色和三个权限。其中,用户可以被赋予一个或多个角色、角色可以被赋予一个或多个权限。图中用户A被赋予角色1,用户B被同时赋予角色1和2,用户C被赋予角色3,同时用户4也被赋予角色3。关于角色和权限的关系,角色1拥有权限1、2,角色2拥有权限2、3,角色3与权限3关联。用户与权限不存在直接的关联关系。本发明将权限和操作集成在一起,对于复杂系统,权限和操作可进一步分离,组成关联组合关系。
以用户注册账户,管理员审核该用户并配置角色,用户完成相关权限要求,至最后用户失效,管理员禁用该用户这一流程为例,介绍各智能合约模块的使用。
1)在管理员审核用户前,需要配置好所需权限。管理员通过权限模块的权限创建子模块创建权限。
2)管理员通过角色模块的角色创建子模块创建角色,随后为角色分配权限。
3)用户通过用户模块中的用户注册子模块完成注册。
4)用户注册子模块会对用户信息自动进行正确性和合规性检查,随后提交给管理员审核,进而管理员对审核通过的用户分配角色。
5)用户在管理员审核并分配角色后,可根据被授予的角色以及角色具有的权限去对业务系统进行操作。
6)后期若用户失效,管理员使用用户模块中的用户禁用子模块禁用该用户。
本实施例提出一种基于区块链智能合约的角色访问控制系统及方法,访问控制系统的部署执行流程如图5所示,在访问控制系统正式使用之前需要完成合约部署、管理员的初始化以及角色与权限的配置。随后,用户才能进行注册,管理员才能审核、分配角色等相关工作。
使用基于区块链智能合约的角色访问控制系统进行角色访问控制方法,基于区块链智能合约的角色访问控制系统初始化和运行的流程描述如下:
步骤1:在区块链系统中部署角色访问控制智能合约
首先需要将基于区块链智能合约的角色访问控制系统部署至区块链系统上。智能合约的部署是系统初始化的一部分,部署后系统会自动建立管理员权限、管理员角色以及管理员角色和权限间的关系,系统中将部署者生成用户,并将该用户设置为管理员角色,智能合约的部署者即为智能合约的拥有者,同时也是该系统的初始管理员,初始管理员不能更新,但可以设置多个其他用户为管理员角色。
步骤2:配置权限与角色
智能合约部署后,管理员根据需求配置权限,完成角色以及权限与角色的关联操作。
步骤3:用户注册账户
系统执行时,用户通过表现层模块注册账户,注册后会在区块链系统中生成密钥文件(Key Pair File),该文件包含用户的账户密码,通常加入用户生物信息,比如指纹、虹膜信息,来加强用户身份的确定性,此时该文件会被下载保存在角色访问控制系统中。
步骤4:审核用户注册
用户注册信息首先需要经过智能合约的正确性和合规性检查,智能合约会根据事先规定的审核规则判断用户上传的各项信息是否满足要求。例如智能合约规定系统只能本单位员工使用,员工要求要具有本科及以上学历,则智能合约会对用户上传的学历资料进行审核,当该用户的学历未达到要求则会在系统显示未通过审核,拒绝该用户进入。若用户达到要求则通过智能合约检查,随后接受管理员的审核。
步骤5:管理员为用户分配角色
当管理员通过用户审核后,管理员需要为用户分配角色,同时系统会将用户注册时生成的密钥文件通过安全渠道反馈给用户,比如发送加密邮件。
步骤6:用户使用密钥登录并访问系统
管理员完成用户审核工作,用户会收到密钥文件,可以通过密钥查看角色并依据权限在系统执行相关操作。
本实施例的基于区块链智能合约的角色访问控制系统级方法可支持DApps应用的快速构建,通过形成DApps应用安全可插拔模块,与DApps无缝结合,在DApps融合的功能及架构如图6所示。
图6中将访问控制系统通过灵活接口模块化,并设计为可插拔式,能实现DApps对RBAC的快速集成。访问控制模块表现为智能合约,而DApps的业务和服务模块,往往以智能合约的形式实现,所以业务和服务模块就可与权限相结合,通过智能合约的互相调用来实现。上层支持与用户交互的表现层,并通过Web3j.js或JSON-RPC方式调用。图6的左侧和右侧分别为DApps1和DApps2,除了访问控制模块外,其他均为DApps的原有组成部分,它们都可集成此访问控制模块,具备通用性。集成访问控制模块后,DApps表现层的Web页面接收用户服务请求后,不再是直接调用智能合约,而是首先通过Web3.js或JSON-RPC调用访问控制模块,访问控制模块根据区块链上的规则数据,根据角色和权限调用对应的业务智能合约加以执行。通过这种方式,可实现DApps安全模块的快速构建,有效实现对资源的可控访问。
下面将本发明实施部署具体案例展开说明,图7为访问控制系统实施逻辑架构图。该系统的业务逻辑层由Java编写,区块链系统选择以太坊的区块链环境,权限管理层由智能合约编程语言Solidity编写,权限模型采用RBAC模型族中的模型进行说明。表现层通过web形式展现给用户相关功能,包括账户注册、角色/权限设置、可视化展示功能,表现层通过web3j调用下面的智能合约逻辑。智能合约实现业务逻辑,归纳为创建、修改、查询和禁用四个功能。
图8为访问控制系统智能合约实施功能模块图,该访问控制智能合约中主要包含以下三个功能模块:权限模块、角色模块以及用户模块,其中用户模块继承于角色模块,角色模块继承于权限模块,各功能模块包含如下所示的智能合约子模块。
参见图8,权限模块中有4个智能合约子功能模块:权限创建、权限修改、权限查询以及权限禁用。
1)权限创建子模块:可创建权限。调用智能合约中的createPermission()方法,传参数_permissionId(权限ID),_permissionName(权限名称)以及_permissionInfo(权限附加信息),权限创建时默认权限可用性变量的值为1。
2)权限修改子模块:可修改权限名称和附加信息。调用智能合约中的changePermissionInfo()方法,传参数_permissionId(权限ID),_newPermissionName(新的权限名称)以及_newPermissionInfo(新的权限附加信息),返回修改成功信息。
3)权限查询子模块:可查询权限名称以及附加信息。调用智能合约中的getPermissionInfo()方法,传参数_permissionId(权限ID),查询成功会返回权限名称、权限可用性以及权限附加信息。
4)权限禁用子模块:可禁用权限。调用智能合约中的disablePermission()方法,传需要禁用的_permissionId(权限ID),权限可用性变量的值会变为0,此权限不可再使用。
角色模块中有6个智能合约子功能模块:角色创建、角色修改、角色查询、角色禁用、角色权限查询以及角色权限修改。
1)角色创建子模块:可创建角色。调用智能合约中的createRole()方法,传参数_roleId(角色ID),_roleName(角色名称)以及_roleInfo(角色附加信息),角色创建时默认角色可用性变量的值为1。
2)角色修改子模块:可修改角色名称和附加信息。调用智能合约中的changeRoleInfo()方法,传参数_roleId(角色ID),_newRoleName(新的角色名称)以及__newRoleInfo(新的角色附加信息),返回修改成功信息。
3)角色查询子模块:可查询角色信息。调用智能合约中的getRoleInfo()方法,传参数_roleId(角色ID),查询成功后会返回角色名称、角色可用性以及角色附加信息。
4)角色禁用子模块:可禁用角色。调用智能合约中的disableRole()方法,传参数_roleId(角色ID),角色可用性变量的值会变为0,此角色不可用。
5)角色权限查询子模块:可查询相关角色的权限信息。调用智能合约中的getPermissionByRoleId()方法,传_roleId(角色ID),会返回某个角色的权限ID、权限名称、权限可用性以及权限的附加信息。
6)角色权限修改子模块:可为某个角色修改权限。为角色更换权限时则调用changePermissionForRole()方法,传参数_roleId(角色ID),_oldPermissionId(原有的权限ID)以及_newPermissionId(新的权限ID)。为角色增加权限时则调用addPermissionForRole()方法,传参数_roleId(角色ID)以及_newPermissionId(新的权限ID)。为角色减少权限时则调用reducePermissionForRole()方法,传参数_roleId(角色ID)以及_oldPermissionId(原有的权限ID),操作成功会返回目前该角色具有的权限。
用户模块中有8个智能合约子模块:用户注册、用户审核、用户修改、用户查询、用户禁用、用户角色查询、用户角色修改以及用户权限查询。
1)用户注册子模块:可实现用户注册。调用智能合约中的registerUser()方法,传参数_userAddress(用户账户地址),_userId(用户ID),_userName(用户名称)以及_userInfo(用户附加信息),用户注册时默认用户可用性变量的值为0。
2)用户审核子模块:可实现对用户数据的正确性和合规性检查,并提交管理员对注册用户进行审核与角色分配。调用智能合约中的enrollUser()方法,传参数userId(用户ID)以及_roleId(所要分配的角色ID),用户通过审核后可用性变量的值变为1。
3)用户修改子模块:可更新用户名称和附加信息。调用智能合约中的changeUserInfo()方法,传参数_userId(用户ID),_newUserName(新的用户名称)以及_newUserInfo(新的用户附加信息),返回修改成功信息。。
4)用户查询子模块:可查询用户信息。调用智能合约中的getUserInfo()方法,传参数_userId(用户ID),会返回用户名称、用户可用性、用户账户地址以及用户附加信息。
5)用户禁用子模块,具有实现管理员禁用某个用户的功能。调用智能合约中的disableUser()方法,传参数_userId(用户ID),用户可用性变量的值变为0,此用户不可用。
6)用户角色查询子模块,可查询相关用户的角色。调用getRoleByUserId()方法,传参数userId(用户ID),返回用户的角色ID、角色名称、角色可用性以及角色附加信息。
7)用户角色修改子模块:可为相关用户修改角色。为用户更换角色时则调用changeRoleForUser()方法,传参数_userId(用户ID),oldRoleId(原有角色ID)和_newRoleId(新的角色ID)。为用户增加角色时则调用addRoleForUser()方法,传参数_userId(用户ID)和_newRoleId(新的角色ID)。为用户减少角色时则调用reduceRoleForUser()方法,传参数_userId(用户ID)和oldRoleId(原有角色ID),操作成功会返回目前该用户具有的角色。8)用户权限查询子模块:可查询某用户的权限。调用智能合约中的getPermissionByUserId()方法,传_userId(用户ID),会返回用户的权限ID、权限名称、权限可用性以及权限附加信息。
图9为本实施例的区块链智能合约访问控制系统的方法流程图,首先需要完成角色访问控制智能合约的部署,以及完成角色、权限的创建与配置工作。随后,用户才能注册账户,管理员才能进行用户注册审核、角色分配以及权限分配工作。
以一个4人单位为例,该单位目前有用户A、B、C以及D,该单位具有3种角色分别为角色1、角色2以及角色3,同时该单位具有3种权限分别为权限1、权限2以及权限3,且三种权限分别对应查询资源、创建修改资源以及删除资源3种操作。在该单位内角色与权限相关联,一种角色可以拥有一种或多种权限。用户与角色相关联,一个用户可以拥有1种或多种角色。用户A、B、C、D不会与权限1、2、3直接关联,而是通过角色1、2、3与权限关联。
步骤1:权限管理系统初始化。
首先需要将访问控制智能合约部署到区块链系统,见图9中①。例如,用户A承担了智能合约部署工作,此时访问控制智能合约会自动生成访问控制系统管理员权限以及管理员角色,并自动为管理员角色分配管理员权限。同时,用户A会被添加为系统管理员用户,并被分配管理员角色,该管理员用户为初始管理员,不可更换(但后续的管理员可以更换角色)。同时可以对这些初始化的用户、角色以及权限的名称进行更改,例如将管理员用户、管理员角色以及管理员权限的名称分别更换为用户A、角色1以及权限1。
步骤2:权限以及角色的创建与配置
随后用户A需要创建系统需要的其他角色以及权限,并为角色配置权限,见图9中②,例如用户A需要创建权限2、权限3、角色2以及角色3。同时用户A还需要为角色1再分配一个权限2,为角色2分配权限2和权限3,同时为角色3分配权限3。完成以上创建与配置工作系统就可以正式投入使用了。
步骤3:用户注册账户
系统运行时,用户B可通过表现层模块注册账户,用户B需要根据系统提示完成相关信息如学位信息、用户生物特征信息(比如指纹、虹膜等信息,来加强用户身份的确定性)指纹证书扫描件等信息的提交,见图9中③,用户B注册后会在区块链系统中生成密钥文件(Key Pair File,该文件通常含上述已采集的用户生物特征信息),此时该文件会被下载保存在角色访问控制系统中。
步骤4:审核用户注册并分配角色
用户B的注册信息首先需要经过智能合约的正确性和合规性检查,智能合约会检查B的相关信息是否符合要求,若是用户B不满足要求智能合约会拒绝其进入系统。若是用户B通过智能合约检查,其还需要接受用户A的审核,同时用户A还需要为通过审核的用户B分配角色2,见图9中④。此时用户B就具有了角色2以及角色2被分配的权限2和权限3。同时系统会将用户注册时生成的密钥文件通过安全渠道反馈给用户B。
步骤5:用户使用密钥登录并访问系统
用户B收到密钥文件后可通过密钥文件查看自己被分配的角色以及该角色具有的权限,并依据权限在系统执行相关操作,见图9中⑤。
类似的用户C以及用户D想要进入系统也需要执行步骤3和步骤4。
本实施例的系统及方法具备通用性,特别适用于区块链相关应用,增加了系统访问控制的安全性,有效推动了区块链应用的实施落地。
虽然本发明已经参考特定的说明性实施例进行了描述,但是不会受到这些实施例的限定而仅仅受到附加权利要求的限定。本领域技术人员应当理解可以在不偏离本发明的保护范围和精神的情况下对本发明的实施例能够进行改动和修改。
Claims (9)
1.一种基于区块链智能合约的角色访问控制系统,其特征在于:根据基于角色的访问控制模型(RBAC)规则设置,所述基于区块链智能合约的角色访问控制系统逻辑上分为三层:数据层、访问控制层以及表现层,其中:
所述数据层由区块链系统组成,负责存储关键数据,包括系统中的用户数据、角色数据、权限数据、用户与角色关系以及角色与权限关系;
所述访问控制层以智能合约实现对权限的管理,负责对用户、角色以及权限的管理;
所述表现层是所述系统的最上层,提供用户、角色以及权限数据的创建、修改、查询以及禁用的处理功能,并通过可视化手段展示复杂的用户、角色、权限关系;
所述基于区块链智能合约的角色访问控制系统按照功能模块分为用户、角色及权限模块,所有在系统内注册成功的用户、创建成功的角色以及权限在需要禁用时,都只能通过改变其可用性来实现,所述用户、角色及权限中设置用户、角色及权限结构体,所述用户、角色及权限结构体中包含一个名为可用性的变量,所述变量通过被赋值0或1分别代表用户、角色及权限不可用或用户、角色及权限可用,每次涉及用户、角色及权限时要先检查用户、角色及权限的可用性后再执行具体内容;所述基于区块链智能合约的角色访问控制系统中所述用户与所述角色之间,所述角色与所述权限之间存在联系,通过所述访问控制层的所述智能合约将所述用户与所述用户对应角色关联,所述角色与所述用户对应权限关联,而所述用户与所述权限之间不存在直接联系。
2.根据权利要求1所述一种基于区块链智能合约的角色访问控制系统,其特征在于:所述访问控制层包括用户、角色以及权限三个智能合约功能模块,通过所述三个智能合约功能模块,使用者查询和定制用户、角色、权限以及用户与角色、角色与权限的关系,同时,实现对用户、角色以及权限的修改、查询和禁用,所述访问控制层的智能合约代码一旦部署不能改变,系统中的访问控制需要按照规则严格执行,所述访问控制层将创建、修改、查询和禁用功能智能合约化,供所述表现层调用。
3.根据权利要求1所述一种基于区块链智能合约的角色访问控制系统,其特征在于:所述表现层包含用户管理、角色管理、权限管理、与关系展示四个功能模块,可分别提供用户、角色以及权限数据的创建、修改、查询以及禁用等处理功能,并通过可视化手段展示复杂的用户、角色、权限关系,在所述关系展示模块内浏览所有更新信息,检查有无异常更新,以保护系统的运行安全。
4.根据权利要求1所述一种基于区块链智能合约的角色访问控制系统,其特征在于:
所述用户模块包含用户注册、用户审核、用户修改、用户查询、用户禁用、用户角色查询、用户角色修改以及用户权限查询8个子模块,其中,用户以账户的形式存在,在所述用户模块中,所有用户都可使用用户注册子模块,其余子模块仅限管理员调用,管理员使用用户审核子模块审核用户的注册申请,并为其分配角色;使用用户修改子模块更新用户名称以及附加说明信息;使用用户查询子模块查询用户的可用性、用户的地址、用户名称以及附加说明信息;使用用户禁用子模块将所述用户禁用;使用用户角色查询子模块查询用户所属角色;使用用户角色修改子模块修改用户的角色;使用用户权限查询子模块查询用户权限。
5.根据权利要求4所述一种基于区块链智能合约的角色访问控制系统,其特征在于:所述角色模块包含角色创建、角色修改、角色查询、角色禁用、角色权限查询以及角色权限修改6个子模块,且所述角色模块仅限管理员调用,管理员使用角色创建子模块创建新的角色;使用角色修改子模块修改角色名称以及附加说明信息;使用角色查询子模块查询角色名称、角色可用性以及附加说明信息;使用角色禁用子模块禁用关联角色;使用角色权限查询子模块查询角色的权限信息;使用角色权限修改子模块修改角色的权限。
6.根据权利要求5所述一种基于区块链智能合约的角色访问控制系统,其特征在于:所述权限模块包含权限创建、权限修改、权限查询以及权限禁用4个子模块,且所述权限模块仅限管理员调用,管理员可以使用权限创建子模块创建新权限;使用权限修改子模块修改权限名称以及附加说明信息;使用权限查询子模块查询某权限的名称、权限的可用性以及附加说明信息;使用权限禁用子模块禁用关联权限。
7.根据权利要求6所述一种基于区块链智能合约的角色访问控制系统,其特征在于:所述基于区块链智能合约的角色访问控制系统的三个功能模块的使用方法包括:
1)在管理员审核用户前,配置好所需权限,管理员通过权限模块的权限创建子模块创建权限;
2)管理员通过角色模块的角色创建子模块创建角色,随后为角色分配权限;
3)用户通过用户模块中的用户注册子模块完成注册;
4)用户注册子模块会对用户信息自动进行正确性和合规性检查,随后提交给管理员审核,进而管理员对审核通过的用户分配角色;
5)用户在管理员审核并分配角色后,可根据被授予的角色以及角色具有的权限去对业务系统进行操作;
6)后期若用户失效,管理员使用用户模块中的用户禁用子模块禁用所述用户。
8.一种使用根据权利要求6所述一种基于区块链智能合约的角色访问控制系统进行的角色访问控制方法,在访问控制系统正式使用之前需要完成合约部署、管理员的初始化以及角色与权限的配置;随后用户才能进行注册,管理员才能审核、分配角色的相关工作,包括:
步骤1:在区块链系统中部署基于区块链智能合约的角色访问控制系统的智能合约:部署智能合约是角色访问控制系统初始化的一部分,部署后所述系统会自动建立管理员权限、管理员角色以及管理员角色和权限间的关系,系统中将部署者生成用户,并将所述用户设置为管理员角色,智能合约的部署者即为智能合约的拥有者,同时也是所述角色访问控制系统的初始管理员,初始管理员不能更新,但可以设置多个其他用户为管理员角色;
步骤2:配置权限与角色:智能合约部署后,管理员根据需求配置权限,完成角色以及权限与角色的关联操作;
步骤3:用户注册账户:基于区块链智能合约的角色访问控制系统执行时,用户通过表现层模块注册账户,注册后会在区块链系统中生成密钥文件,所述密钥文件包含用户的账户密码,并加入用户生物信息来加强用户身份的确定性,此时该文件会被下载保存在角色访问控制系统中;
步骤4:审核用户注册:用户注册信息首先需要经过智能合约的正确性和合规性检查,智能合约会根据事先规定的审核规则判断用户上传的各项信息是否满足要求,若用户达到要求则通过智能合约检查,随后接受管理员的审核;
步骤5:管理员为用户分配角色:当管理员通过用户审核后,管理员为用户分配角色,同时系统会将用户注册时生成的密钥文件通过安全渠道反馈给用户;
步骤6:用户使用密钥登录并访问系统:管理员完成用户审核工作,用户收到密钥文件,通过密钥查看角色并依据权限在系统执行相关操作。
9.根据权利要求8所述的角色访问控制方法,其特征在于:所述基于区块链智能合约的角色访问控制方法支持DApps应用的快速构建,通过形成DApps应用安全可插拔模块,与DApps无缝结合,DApps的业务和服务模块与权限相结合,通过智能合约的互相调用来实现;上层支持与用户交互的表现层,并通过Web3j.js或JSON-RPC方式调用,集成访问控制模块后,DApps表现层的Web页面接收用户服务请求后,不再直接调用智能合约,而是首先通过Web3.js或JSON-RPC调用访问控制模块,访问控制模块根据区块链上存储的规则,根据角色和权限调用对应的业务智能合约加以执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910632121.0A CN110348202B (zh) | 2019-07-12 | 2019-07-12 | 一种基于区块链智能合约的角色访问控制系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910632121.0A CN110348202B (zh) | 2019-07-12 | 2019-07-12 | 一种基于区块链智能合约的角色访问控制系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110348202A CN110348202A (zh) | 2019-10-18 |
CN110348202B true CN110348202B (zh) | 2020-06-12 |
Family
ID=68175169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910632121.0A Active CN110348202B (zh) | 2019-07-12 | 2019-07-12 | 一种基于区块链智能合约的角色访问控制系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110348202B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022263690A1 (es) * | 2021-06-16 | 2022-12-22 | E Process Med, S.L. | Método de generacion de contratos inteligentes |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111163089B (zh) * | 2019-12-30 | 2022-05-10 | 北京智汇信元科技有限公司 | 一种智能合约权限控制方法及系统 |
CN112163035A (zh) * | 2020-05-15 | 2021-01-01 | 支付宝(杭州)信息技术有限公司 | 调用智能合约的方法及装置 |
CN111597585B (zh) * | 2020-05-26 | 2023-08-11 | 牛津(海南)区块链研究院有限公司 | 区块链数据的隐私保护方法、系统及相关组件 |
CN111651469B (zh) * | 2020-06-01 | 2023-05-26 | 杭州溪塔科技有限公司 | 一种管理区块链系统合约的方法和装置 |
CN111741015A (zh) * | 2020-07-21 | 2020-10-02 | 百度在线网络技术(北京)有限公司 | 区块链网络中操作处理方法、装置、设备和介质 |
CN111797374B (zh) * | 2020-07-21 | 2023-06-06 | 浙江同善人工智能技术有限公司 | 一种基于公链智能合约的供应链访问控制系统和方法 |
CN112084162B (zh) * | 2020-08-07 | 2024-04-23 | 同济大学 | 一种基于区块链和ipfs的溯源权限管理系统 |
CN112118224B (zh) * | 2020-08-12 | 2021-07-23 | 北京大学 | 一种大数据区块链的可信机制权限管理方法和系统 |
CN112395570B (zh) * | 2020-10-30 | 2024-02-27 | 迅鳐成都科技有限公司 | 一种联盟链智能合约调用权限控制方法、系统及存储介质 |
CN112269836B (zh) * | 2020-11-15 | 2023-07-04 | 北京物资学院 | 一种区块链智能合约生成与管理系统及其实现机制 |
CN112615864A (zh) * | 2020-12-18 | 2021-04-06 | 上海万向区块链股份公司 | 用区块链实施的基于角色的访问控制管理系统及方法 |
CN112968880B (zh) * | 2021-02-01 | 2022-07-12 | 浪潮思科网络科技有限公司 | 一种基于sdn架构的权限控制方法、系统 |
CN112819634B (zh) * | 2021-02-25 | 2023-06-02 | 成都质数斯达克科技有限公司 | 交易处理方法、装置、电子设备及可读存储介质 |
CN113515764B (zh) * | 2021-06-24 | 2021-11-30 | 南京可信区块链与算法经济研究院有限公司 | 一种数据管控方法 |
CN113535690B (zh) * | 2021-09-15 | 2021-12-21 | 支付宝(杭州)信息技术有限公司 | 一种区块链服务网络的组建方法和装置 |
CN113535691B (zh) * | 2021-09-15 | 2022-01-25 | 支付宝(杭州)信息技术有限公司 | 一种用户服务注册方法及装置 |
CN115309433B (zh) * | 2022-10-12 | 2022-12-20 | 江苏移动信息系统集成有限公司 | 基于区块链的角色权限管理智能合约升级方法及系统 |
CN116248751A (zh) * | 2023-03-20 | 2023-06-09 | 北京航空航天大学云南创新研究院 | 一种基于联盟链的智能合约注册与校验方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106796688B (zh) * | 2016-12-26 | 2020-12-18 | 深圳前海达闼云端智能科技有限公司 | 区块链的权限控制方法、装置、系统及节点设备 |
CN109391612A (zh) * | 2018-08-17 | 2019-02-26 | 杭州微链区块链科技有限公司 | 一种基于区块链的身份确认系统及方法 |
CN109714348B (zh) * | 2018-12-29 | 2021-08-06 | 百度在线网络技术(北京)有限公司 | 基于区块链实现的权限处理方法、装置、设备和介质 |
CN109683869A (zh) * | 2018-12-29 | 2019-04-26 | 北京阿斯特时代科技有限公司 | Dapp的开发方法和装置 |
-
2019
- 2019-07-12 CN CN201910632121.0A patent/CN110348202B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022263690A1 (es) * | 2021-06-16 | 2022-12-22 | E Process Med, S.L. | Método de generacion de contratos inteligentes |
Also Published As
Publication number | Publication date |
---|---|
CN110348202A (zh) | 2019-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110348202B (zh) | 一种基于区块链智能合约的角色访问控制系统及方法 | |
CN109688120B (zh) | 基于改进RBAC模型及Spring Security框架的动态权限管理系统 | |
KR100968303B1 (ko) | Java에 대한 일반적인 선언적 권한부여 방법, 시스템및 컴퓨터 저장 매체 | |
US9053302B2 (en) | Obligation system for enterprise environments | |
KR102355480B1 (ko) | 멀티테넌트 어플리케이션 서버 환경에서 보안을 지원하는 시스템 및 방법 | |
CA2649862C (en) | Translating role-based access control policy to resource authorization policy | |
CN112118224B (zh) | 一种大数据区块链的可信机制权限管理方法和系统 | |
TW425799B (en) | Client-server system for maintaining a user desktop consistent with server application user access permissions | |
US20090205018A1 (en) | Method and system for the specification and enforcement of arbitrary attribute-based access control policies | |
EP1988486B1 (en) | Virtualized federated role provisioning | |
CN113297550A (zh) | 权限控制的方法、装置、设备、存储介质及程序产品 | |
WO2020135492A1 (zh) | 软件分层管理系统 | |
US11005852B2 (en) | System and method for securing electronic devices | |
WO2016026320A1 (zh) | 访问控制方法及装置 | |
EP4158518A1 (en) | Secure resource authorization for external identities using remote principal objects | |
Moffett | Delegation of authority using domain-based access rules | |
WO2010028583A1 (zh) | 基于权限组件对工作流组件中的权限管理的方法及装置 | |
Gamble | Implementing Execution Controls in Unix. | |
Stan et al. | Enforce a global security policy for user access to clustered container systems via user namespace sharing | |
Kritikos et al. | Security enforcement for multi-cloud platforms–the case of paasage | |
CN113691539A (zh) | 企业内部统一功能权限管理方法及系统 | |
He et al. | Virtual security kernel: A component-based os architecture for self-protection | |
CN115309433B (zh) | 基于区块链的角色权限管理智能合约升级方法及系统 | |
US20210306348A1 (en) | System and method for securing electronic devices | |
Clark | An introduction to role-based access control |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |