CN116991472A - 管理全局资源的方法及计算设备 - Google Patents
管理全局资源的方法及计算设备 Download PDFInfo
- Publication number
- CN116991472A CN116991472A CN202311254971.4A CN202311254971A CN116991472A CN 116991472 A CN116991472 A CN 116991472A CN 202311254971 A CN202311254971 A CN 202311254971A CN 116991472 A CN116991472 A CN 116991472A
- Authority
- CN
- China
- Prior art keywords
- resource
- interface
- micro
- service
- interface resource
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000014509 gene expression Effects 0.000 claims abstract description 72
- 101150039077 CRCP gene Proteins 0.000 claims description 17
- 238000013475 authorization Methods 0.000 claims description 14
- 238000009434 installation Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 5
- 238000004806 packaging method and process Methods 0.000 claims description 4
- 238000007689 inspection Methods 0.000 claims description 3
- 238000012986 modification Methods 0.000 abstract description 2
- 230000004048 modification Effects 0.000 abstract description 2
- 238000012795 verification Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 239000008186 active pharmaceutical agent Substances 0.000 description 8
- 230000006870 function Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001149 cognitive effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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/44—Program or device 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/604—Tools and structures for managing or administering access control systems
-
- 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/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/62—Uninstallation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
Abstract
本申请提供一种管理全局资源的方法及计算设备。所述方法用于微服务系统,包括:定义用于接口资源的一致的资源表达方式;注册第一微服务的接口资源,所述第一微服务的接口资源包括第一接口资源且以所述资源表达方式表征;对待安装的第二微服务进行接口资源依赖检查,所述第二微服务依赖的接口资源包括第二接口资源且以所述资源表达方式表征,其中,所述进行接口资源依赖检查,包括:将所述第二接口资源的资源表达方式与所注册的第一微服务的各接口资源的资源表达方式分别进行匹配,如果匹配成功任一接口资源,则所述第二接口资源满足接口资源依赖要求。根据本申请的技术方案,可灵活实现资源校验逻辑的修改,加强接口元数据的兼容性。
Description
技术领域
本发明涉及软件开发技术领域,具体涉及一种管理全局资源的方法及计算设备。
背景技术
现有技术方案中,当微服务在进行安装、卸载和升级时需要进行接口校验,通常每次新增接口校验逻辑都需要修改相应API的参数和校验逻辑,由于接口参数数量较多,且内容繁琐,因此对技术人员来说是个比较繁重的任务,并且使用常用做法表示接口的话,需要将一些接口元数据存储在数据库中,不易于扩展接口元数据和前向/后向兼容。
为此,需要一种技术方法,能够灵活的对接口资源的校验逻辑进行修改,加强接口元数据的兼容性。
发明内容
本申请旨在提供一种管理全局资源的方法及计算设备,通过定义资源表达方式,将接口资源的资源表达方式进行匹配来进行依赖性校验,可以灵活的增加和修改字段校验器来修改比较逻辑,使接口元数据更加方便的做到扩展、前向兼容和后向兼容。
根据本申请的一方面,提供一种接口资源进行依赖性校验的方法,用于微服务系统,包括:
定义用于接口资源的一致的资源表达方式;
注册第一微服务的接口资源,所述第一微服务的接口资源包括第一接口资源且以所述资源表达方式表征;
对待安装的第二微服务进行接口资源依赖检查,所述第二微服务依赖的接口资源包括第二接口资源且以所述资源表达方式表征,其中,所述进行接口资源依赖检查,包括:
将所述第二接口资源的资源表达方式与所注册的第一微服务的各接口资源的资源表达方式分别进行匹配,如果匹配成功任一接口资源,则所述第二接口资源满足接口资源依赖要求;
如果所述第二微服务通过接口资源依赖检查,则开始安装所述第二微服务,否则退出安装。
根据一些实施例,前述方法还包括:
响应于所述第二微服务的请求,根据所述第二微服务依赖的接口资源和用户需要请求的所述第一微服务,生成接口资源信息包以及用于调用所述第一微服务的授权令牌。
根据一些实施例,生成接口资源信息包以及用于调用所述第一微服务的授权令牌,包括:
根据所述第二微服务注册的接口资源依赖,对用户针对所述第一微服务的相应接口资源的访问权限执行访问控制检查;
将通过访问控制检查的接口资源名称打包,生成接口资源信息包;
计算所述接口资源信息包的消息摘要,作为所述授权令牌提供给所述第二微服务,从而所述第二微服务携带所述授权令牌和所述接口资源信息包访问所述第一微服务。
根据一些实施例,前述方法还包括:
预先生成对接口资源进行访问控制的访问控制模型;
预先生成用于接口资源的访问规则;
基于所述访问控制模型和所述访问规则,对用户针对所述第一微服务的相应接口资源的访问权限执行访问控制检查。
根据一些实施例,所述对用户针对所述第一微服务的相应接口资源的访问权限执行访问控制检查,包括:
将所述第一微服务的相应接口资源的资源表达式与所述访问规则中限定的资源表达式进行匹配并返回匹配结果。
根据一些实施例,所述资源表达方式构造为资源六段式表达,所述资源六段式表达是所述微服务系统中任一所述接口资源的唯一标识。
根据一些实施例,所述定义用于接口资源的一致的资源表达方式,包括:
定义如下的所述资源六段式表达方式:
crcp:<ram-code>:<project-id>:<region>:<mc-code-id>:<relative-id>,
其中,
crcp为平台代码;
ram-code为平台RAM代码;
project-id为平台用户表示;
region为地域信息;
mc-code-id为模块标识;
relative-id为与服务相关的资源描述部分。
根据一些实施例,前述方法还包括:
以与所述接口资源一致的所述资源表达方式定义数据资源,从而以与所述接口资源一致的方式对所述数据资源进行权限控制。
根据一些实施例,前述方法还包括:
在所述第二微服务升级时,进行接口资源依赖检查;和/或
在所述第一微服务卸载时,进行接口资源依赖检查。
根据本申请的另一方面,提供一种计算设备,包括:
处理器;以及
存储器,存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行如上任一项所述的方法。
根据本申请的另一方面,提供一种非瞬时性计算机可读存储介质,其上存储有计算机可读指令,当所述指令被处理器执行时,使得所述处理器执行如上任一项所述的方法。
根据本申请的实施例,通过定义用于全局资源的一致的资源表达方式,注册微服务的接口资源,接口资源以资源表达方式表征,对待安装的微服务进行接口资源依赖检查。由于全局资源使用了一致的资源表达方式,可以更加系统地管理全局资源,使全局资源的查询调用更加清晰明了。将接口资源的资源表达方式进行匹配来进行依赖性校验,可以灵活的增加和修改字段校验器来修改比较逻辑,并且使接口元数据更加方便的做到扩展、前向兼容和后向兼容。
根据一些实施例,通过定义资源表达方式和访问控制模型,定义用于各类资源的访问规则,利用权限控制库框架,基于所述访问控制模型和所述访问规则对请求执行访问控制检查。由于可基于资源表达方式表征的资源进行规则遍历检查,从而可容易地实现资源局部范围的权限控制,补充完善了现有权限控制方式中缺少的局部范围权限控制,并可方便地通过资源表达方式的匹配实现范围的权限控制。
此外,基于统一的资源表达方式定义,使得资源命名和定义保持一致,避免了命名冲突和混乱的情况,提高了系统的可读性和可理解性,降低了开发人员的认知负担。另外,统一管理资源定义简化了系统的维护和更新,减少了维护成本和风险。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。
图1示出根据示例实施例的资源权限控制的方法流程图。
图2示出根据示例实施例的匹配器执行访问控制检查方法流程图。
图3示出根据示例实施例的匹配器实现校验原理流程图。
图4示出根据示例实施例的接口资源依赖检查的方法流程图。
图5A示出根据示例实施例访问微服务接口的方法流程图。
图5B示出根据示例实施例访问微服务接口的时序图。
图6示出根据示例实施例的访问控制检查的方法流程图。
图7示出根据示例性实施例的计算设备的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
在现代软件开发中,微服务架构已经成为一种常见的系统设计模式。在微服务架构中,系统被拆分成多个独立的微服务,每个微服务负责特定的业务功能,各个微服务之间直接互相调用。然而,随着微服务数量的增加,资源的命名和管理变得复杂,导致命名冲突、不一致性以及微服务升级导致的各种可维护性问题。在微服务平台中,微服务的安装、升级、卸载的过程中都会使用接口资源进行依赖性的校验,在微服务接口互相调用的过程中也会进行接口权限的校验。目前使用的技术方案中,通常每次新增接口校验逻辑,都需要修改相应的参数和校验逻辑,由于接口参数数量较多,且内容繁琐,因此需要更多的人力时间。并且使用常用做法表示接口的话,需要将一些接口元数据存储在数据库中,不易于扩展接口元数据和前向/后向兼容。
为此,本申请提出一种管理全局资源的方法,通过定义用于全局资源的一致的资源表达方式,注册微服务的接口资源,接口资源以资源表达方式表征,对待安装的微服务进行接口资源依赖检查,更加灵活的增加和修改字段校验器来修改比较逻辑,并且使接口元数据更加方便的做到扩展、前向兼容和后向兼容。
在描述本申请实施例之前,对本申请实施例涉及到的一些术语或概念进行解释说明。
Casbin:Casbin(凯斯宾)是一种基于策略的权限控制库,它可以帮助开发人员轻松实现灵活的、可扩展的权限控制机制。Casbin的技术方案基于规则引擎的思想,它使用一种名为"访问控制模型"的方法来描述应用程序中的安全策略。这种模型由三个基本元素组成:主体、资源和操作。主体代表用户,资源代表应用程序中的受保护的对象,操作代表主体可以执行的操作。Casbin的核心算法是一种名为"基于角色的访问控制"(RBAC)的模型,它使用一组角色来描述用户的权限。但是,Casbin还支持其他类型的访问控制模型,例如"基于属性的访问控制"(ABAC)和"动态访问控制"(DAC)。在实施Casbin时,开发人员需要定义访问控制策略,并将其存储在Casbin模型中。这些策略可以使用Casbin提供的自定义策略语言(named policy language)来定义,也可以从外部存储中加载。Casbin提供了适配器(adapter)接口,使开发人员可以将Casbin与各种类型的存储系统集成,例如关系数据库、NoSQL数据库和文件系统。一旦定义了策略,开发人员就可以使用Casbin提供的API来执行访问控制检查。Casbin还可以与许多流行的框架和库集成,例如Django、Flask、Gin、Echo、Spring等。
MD5:MD5消息摘要算法是一种被广泛使用的密码散列函数,可以产生出一个128位的散列值,用于确保信息传输完整一致。
AuthToken:授权令牌,可以帮助服务器识别用户的身份,从而保护用户的隐私和安全。
ABAC:ABAC是一种为解决行业分布式应用可信关系访问控制模型,它利用相关实体(如主体、客体、环境)的属性作为授权的基础来研究如何进行访问控制。基于这样的目的,可将实体的属性分为主体属性、客体属性和环境属性,这与传统的基于身份的访问控制(IBAC)不同。在基于属性的访问控制中,访问判定是基于请求者和资源具有的属性,请求者和资源在 ABAC 中通过特性来标识,而不像 IBAC 那样只通过 ID 来标识,这使得 ABAC具有足够的灵活性和可扩展性,同时使得安全的匿名访问成为可能,这在大型分布式环境下是十分重要的。
DAC:DAC(Discretinoary Access Control),自主访问控制。它是传统的Linux访问控制方式。资源所有者负责管理访问控制权限,并通过 ACL(AcessControl List)管理非所有者权限。DAC思想:进程与其执行用户,拥有相同的权限。基于DAC的安全策略,可以简单理解为常见的文件资源的读、写、执行,三个权限。
下面结合附图对本申请的示例实施例进行说明。
图1示出根据示例实施例的资源权限控制的方法流程图。
下面首先参照图1描述根据本申请实施例的在计算系统中对资源进行权限控制的方法,其中,通过定义资源表达方式和访问控制模型,定义资源访问规则,来实现资源访问范围的权限控制,来实现资源访问范围(包括个体资源、资源和局部资源)的权限控制。
在下面的描述中,以Casbin为例对示例实施例进行说明。易于理解,本申请的技术方案不局限于具体的权限控制库框架。
参见图1,在S101,定义资源表达方式,所述资源表达方式包括接口资源或数据资源的范围限定。
根据实施例,数据资源可以是各个服务模块创建的数据。例如,用户管理模块创建的用户/用户组/部门,都属于数据资源。定义了数据资源,可以进行数据资源的权限控制,精细化管理接口、用户对数据资源的各种操作权限。
通常意义上,一个功能接口(http接口/rpc接口等)由这个接口所操作的数据资源和它的操作逻辑组成(接口 = 数据资源 + 功能逻辑)。根据实施例,通过把接口抽象为接口资源,能够屏蔽不同接口协议的差异,并精细化管理用户对接口的调用操作权限,还能够通过接口资源进行接口依赖性检查等操作。
根据一些实施例,接口资源或数据资源表达方式采用资源六段式表达方式。
例如,定义数据资源六段式表达方式为:
crcp:<ram-code>:<project-id>:<region>:<account-id>:<relative-id>
其中,crcp为平台代码。
ram-code为平台RAM(Resource Access Management:资源访问管理)代码。
project-id为平台用户标识(ID),例如:123456789012****。
region为地域信息,对于全局资源(无需指定地域就可以访问的资源),该字段可用星号(*)表示。
account-id为平台账号标识(ID),例如:123456789012****,一般为资源创建者的账号。
relative-id为与服务相关的资源描述部分,其语义可由具体模块指定。这部分的格式支持树状结构(类似文件路径),以对象存储服务OSS为例,表示一个OSS对象的格式为:relative-id =“mybucket/dir1/object1.jpg”。
例如,定义接口资源六段式表达方式为:
crcp:<ram-code>:<project-id>:<region>:<mc-code-id>:<relative-id>
其中,crcp为平台代码。
ram-code为平台RAM代码,例如微服务的全局唯一代码(mc-code)。
project-id为平台用户表示,例如:123456789012****。
region为地域信息,对于全局资源(无需指定地域就可以访问的资源),该字段可用星号(*)表示。
mc-code-id为模块标识(ID)。
relative-id为与服务相关的接口资源描述部分,其语义可由具体模块指定。例如,relative-id={dataRes}/delete,其中{dataRes}表示某种特定的数据资源,接口资源中可包含版本信息,delete表示删除接口。又例如,用户管理模块中v1版本的创建用户接口可表达为:crcp:mc:*:*:module/um:v1/user/create。
通过资源六段式可赋予接口资源的局部范围表达。
根据一些实施例,资源六段式表达方式是资源在计算平台中的唯一标识。
通过资源六段式,可以容易地定义数据资源和接口资源,并应用于不同的资源校验场景,从而可简化微服务架构下的服务治理、单个微服务升级等问题。另外,通过统一整个微服务系统中抽象资源的定义,可为基于抽象资源的权限管理打下基础。如下面的描述,在进行权限校验时,接口资源和数据资源可采用一致的方式。而且,根据前面的描述,通过资源六段式定义,可以屏蔽不同接口协议来抽象接口资源,并可定义带版本控制的接口资源。
在S103,定义计算系统中对资源访问进行控制的访问控制模型。
根据一些实施例,所述访问控制模型基于主体、资源和操作定义所述计算系统中的安全策略。例如,分配一个用户权限的时候,可以分配接口资源和数据资源,使用时会校验用户有没有接口资源和数据资源权限。
根据一些实施例,在使用 Casbin 进行局部权限控制之前,需要定义访问控制模型。访问控制模型基于主体、资源和操作等基本元素,用于描述系统中的安全策略。可以使用 Casbin 提供的自定义策略语言来定义访问控制模型,也可以使用 Casbin 支持的其他模型,例如基于属性的访问控制(ABAC)和动态访问控制(DAC)等。下面的描述以ABAC访问控制模型为例,但本发明不限于此。
在S105,定义用于各类资源的访问规则,所述各类资源包括以所述资源表达方式表征的接口资源和数据资源。
根据一些实施例,在定义访问控制模型之后,需要定义一组访问规则来描述局部权限控制。
根据一些实施例,访问规则定义了哪些主体可以访问哪些资源以及可以执行哪些操作。访问规则可以基于角色、属性、时间和其他因素定义,以满足特定的授权需求。下面的表1给出了一个访问规则的定义示例。
表1
表1中,g表示分组,用来记录用户和组的关系。user1_crn表一个用户,group_crn表一个用户分组,p表示访问规则,strategy1_crn就是一个策略(规则的集合)。data_resource1_crn即是一个可以描述成局部权限的资源。
在S107,加载所述访问规则到权限控制库框架中。
根据一些实施例,在定义访问规则之后,需要将访问规则加载到Casbin中。可以使用Casbin提供的适配器接口将策略加载到关系数据库、NoSQL数据库或文件系统等外部存储系统中,也可以直接将策略存储在内存中。可以使用Casbin提供的API来加载策略,例如casbin.Enforcer().load_policy()。
在S109,接收对特定资源的请求,请求的所述特定资源在所述请求中以所述资源表达方式表征。
根据一些实施例,资源的表达、存储和请求都为资源六段式作为表达方式。
根据一些实施例,用户请求资源CRN(cloud resource name:资源名称)时,只能请求单个资源。
在S111,利用所述权限控制库框架基于所述访问控制模型和所述访问规则对所述请求执行访问控制检查。
根据一些实施例,在加载访问规则之后,可以使用Casbin提供的 API 来执行访问控制检查,casbin检查请求的资源是否有权限时,可调用预定义的匹配器(matcher)。由于采用的资源表达方式对局部资源的范围限定,匹配器中可容易地实现定义的局部范围权限控制的资源匹配。匹配器逐一对比存储的资源表达,全部和仅本人创建的资源表达也会进行对比,如果符合这条策略的定义,则会返回这条策略的匹配的结果。开发人员可以使用API 检查特定主体是否有权限访问特定资源以及执行特定操作。如果访问控制检查成功,Casbin将返回允许访问的结果;如果访问控制检查失败,Casbin将返回拒绝访问的结果。
图2示出根据示例实施例的匹配器执行访问控制检查方法流程图。
参见图2,在S201,所述权限控制库框架遍历所述访问规则
根据一些实施例,使用Casbin提供的API,根据请求的对象、主体和动作执行访问控制检查。
在S203,所述访问规则传递给所述预定义匹配器。
根据一些实施例,通过调用Casbin提供的 API 来调用预定义匹配器。
在S205,所述预定义匹配器将请求的所述特定资源的资源表达式与所述访问规则中限定的各类资源的资源表达式进行匹配并返回匹配结果。
根据一些实施例,匹配没有顺序限制。
根据一些实施例,匹配是通过资源六段式表达式进行对比。例如,请求一个资源六段式,访问规则中*占位的资源六段式就标识局部的,如果除*外都相同,那么这条规则就是符合的。
图3示出根据示例实施例的匹配器实现校验原理流程图。
参见图3,在S301,请求资源CRN。
根据一些实施例,资源的CRN包括四种,分别为如下:
全部:表示这个策略有这类资源的全部权限;
仅本人创建:表示这个策略仅仅有本人(本模块)创建的资源的权限;
无:表示无须选择资源范围的类型,可以认为是全部;
具体的资源:表示这个策略有这个资源的权限。
例如,用户管理菜单下,"全部"的用户对应的CRN为:crcp:um:*:*:*:v1/user/*;
用户管理菜单下,"仅本人创建"的对应的CRN为:crcp:um:*:*:<user_id>:v1/user/*;
在算法信息菜单下,"无"对应的CRN为:crcp:am:*:*:*:*;
具体的一个资源:用户(user_id)创建的模块(mcCode)下的(resCode)类型的资源(uuid)为:crcp:{mcCode}:*:*:{user_id}:v1/{resCode}/{uuid}。
在S303,对比判断第一规则。
根据一些实施例,第一规则为casbin_rule 全部crn。
在S305,对比判断第二规则。
根据一些实施例,第二规则为casbin_rule 仅本人创建crn。
在S307,对比判断第三规则。
根据一些实施例,第三规则为casbin_rule 无crn。
在S309,对比判断第四规则。
根据一些实施例,第四规则为casbin_rule 具体crn。
在S311,输出匹配结果。
根据一些实施例,对比判断上述四种规则,若符合规则,则输出匹配结果。
在S313,对比判断更多规则。
根据一些实施例,权限控制库中可定义包括但不限于上述第一至第四的规则。
图4示出根据示例实施例的接口资源依赖检查的方法流程图。
参见图1,在S401,定义用于接口资源的资源表达方式。
通过资源全局定义,资源命名和定义的一致性可提高系统的可读性和可理解性,降低开发人员的认知负担。此外,统一管理资源定义可简化系统的维护和更新,减少维护成本和风险。通过资源定义服务,系统可具备高度可发现性,微服务可以轻松地发现和使用其他微服务提供的资源。
根据一些实施例,全局资源的资源表达方式具体定义方式前面已经说明,此处相同内容不再赘述。
在S403,注册第一微服务的接口资源。
根据实施例,资源定义服务允许微服务在启动时向其注册提供的资源,并获取其他微服务提供的资源定义。这样,所有微服务之间的资源命名和定义保持一致,可避免命名冲突和混乱的情况。同时,资源定义服务还可提供查询接口,其他微服务可以通过查询接口来发现和使用其他微服务提供的资源,校验服务自身依赖的接口版本等。
根据一些实施例,所述第一微服务的接口资源以前述资源表达方式表征且包括第一接口资源。
在S405,对待安装的第二微服务进行接口资源依赖检查。
根据一些实施例,第二微服务在安装时需要使用接口资源进行依赖性的校验。
根据一些实施例,第二微服务依赖的接口资源包括第二接口资源且以所述资源表达方式表征,将所述第二接口资源的资源表达方式与前述所注册的第一微服务的各接口资源的资源表达方式分别进行匹配,如果匹配成功任一接口资源,则所述第二接口资源满足接口资源依赖要求。
例如,假设微服务A有:a1_v1、 a2_v2、 a3_v1、 a4_v1四个接口(其中a1_v1表示v1版本的a1接口,以此类推)。假设微服务B依赖于微服务A的a1_v1、a2_v2两个接口,那么在微服务B安装的过程中就会校验微服务A的接口是否已经存在。如果不满足,微服务B就会安装失败。更新和卸载类似。
例如,根据一些实施例,校验失败过程如下:
第一微服务注册了第一接口:crcp:um:*:*:module/um:v1/user/create,但第二微服务依赖于第二接口:crcp:um:*:*:module/um:v2/user/create,比较的时候就是每个字段分别比较。比较到最后一个字段时,由于第二微服务依赖的是v2版本,但第一微服务只有v1版本,所以依赖检查失败。
例如,根据一些实施例,校验成功过程如下:
第一微服务注册了接口:
crcp:um:um/project/7b9979adf10b4bdbb4cccdb98e599107:*:module/um:v1/user/crea
这个接口只能给某个特定用户使用;
第二微服务依赖于某个接口:
crcp:um:*:*:module/um:v1/user/create
任意用户提供这个接口都可以,在比较时,第三个字段虽然不同,但是第二微服务的依赖能够匹配,可以被满足,所以依赖检查成功。
在S407,第二微服务通过接口资源依赖检查,则开始安装第二微服务。
根据一些实施例,通过依赖性检查后,第二微服务可以进行安装。否则,可退出安装。
根据一些实施例,权限检查是后续用户调用这个接口时做的校验,依赖检查只是第二微服务安装时做的校验。
根据一些实施例,若第二微服务安装时,其接口依赖是满足的,能够正常安装且提供给所有用户使用。但在后续使用的过程中,若第一微服务接口有权限限制,那么整个系统只有第一微服务的第一接口限制的用户可以使用第二微服务的第二接口。
相比于使用参数传递这些待校验的接口,每次新增接口校验逻辑都需要修改相应API的参数和校验逻辑,而使用六段式,只需要增加/修改字段校验器即可修改比较逻辑。同样,使用元数据表示接口的话,需要将一些接口元数据存储在数据库中,不易于扩展接口元数据和前向/后向兼容,而基于资源表达(例如,六段式)转换数据形式就能够很方便的做到前向/后向兼容。
图5A示出根据示例实施例访问微服务接口的方法流程图。
图5B示出根据示例实施例访问微服务接口的时序图。
参见图5A和图5B,在用户具有权限的第二微服务(例如,微服务A)访问第一微服务(例如,微服务B)时,需要进行访问控制权限检查。
根据示例实施例,全局资源管理服务可响应于所述第二微服务的请求,根据所述第二微服务依赖的接口资源和用户需要请求的所述第一微服务,生成接口资源信息包以及用于调用所述第一微服务的授权令牌,详细描述如下。
在S501,根据第二微服务注册的接口资源依赖,对用户针对第一微服务的相应接口资源的访问权限执行访问控制检查。
根据一些实施例,将第二微服务注册的接口资源依赖中所述第一微服务的相应接口资源的资源表达式与访问规则中限定的资源表达式进行匹配并返回匹配结果,此处不再赘述。
在S503,通过访问控制检查的接口资源名称打包,生成接口资源信息包。
根据一些实施例,全局资源管理服务在生成第二微服务访问第一微服务携带的AuthToken时,会先根据第二微服务注册的接口依赖和权限检查结果,把这些接口依赖打包为接口资源信息包(scope)。
在S505,计算接口资源信息包的消息摘要,作为授权令牌。
根据一些实施例,将接口依赖打包起来生成接口资源信息包(scope)后,计算MD5,并加密MD5作为颁发给第二微服务的AuthToken。参见前面的描述,把接口依赖打包起来之前,全局资源管理服务也会使用完整的六段式名称去校验当前的用户是否有接口资源的调用权限。
根据一些实施例,第二微服务携带这个AuthToken和scope访问第一微服务的接口时,第一微服务首先会去解密AuthToken,然后用解密后的MD5校验scope是否有篡改。如果没有篡改,第一微服务就会查看第二微服务的scope中是否包含第二微服务要访问的第一微服务提供的接口。若包含,就成功访问。在这一步,第一微服务会使用到完整的资源六段式名称去进行校验,如前面所描述的。
图6示出根据示例实施例的访问控制检查的方法流程图。
在S601,生成对接口资源进行访问控制的访问控制模型。
根据一些实施例,所述访问控制模型基于主体、资源和操作定义所述计算系统中的安全策略。
在S603,生成用于接口资源的访问规则。
根据一些实施例,生成用于接口资源的访问规则的具体方法前面已经说明,此处相同内容不再赘述。
在S605,基于访问控制模型和访问规则,对用户针对第一微服务的相应接口资源的访问权限执行访问控制检查。
根据一些实施例,基于定义的接口资源的访问模型和访问规则,进行对第一微服务的相应接口资源的权限访问控制检查。例如,参见前面的描述,加载所述访问规则到权限控制库框架中,所述权限控制库框架调用预定义匹配器执行访问控制检查。
在S307,将第一微服务的相应接口资源的资源表达式与访问规则中限定的资源表达式进行匹配并返回匹配结果。
根据一些实施例,所述权限控制库框架遍历所述访问规则,将所述访问规则传递给所述预定义匹配器,所述预定义匹配器将请求的所述特定资源的资源表达式与所述访问规则中限定的各类资源的资源表达式进行匹配并返回匹配结果。
图7示出根据本申请示例实施例的计算设备的框图。
如图7所示,计算设备30包括处理器12和存储器14。计算设备30还可以包括总线22、网络接口16以及I/O接口18。处理器12、存储器14、网络接口16以及I/O接口18可以通过总线22相互通信。
处理器12可以包括一个或多个通用CPU(Central Processing Unit,处理器)、微处理器、或专用集成电路等,用于执行相关程序指令。根据一些实施例,计算设备30还可包括为处理器12进行加速的高性能显示适配器(GPU)20。
存储器14可以包括易失性存储器形式的机器系统可读介质,例如随机存取存储器(RAM)、只读存储器(ROM)和/或高速缓存存储器。存储器14用于存储包含指令的一个或多个程序以及数据。处理器12可读取存储在存储器14中的指令以执行上述根据本申请实施例的方法。
计算设备30也可以通过网络接口16与一个或者多个网络通信。该网络接口16可以是无线网络接口。
总线22可以为包括地址总线、数据总线、控制总线等。总线22提供了各组件之间交换信息的通路。
需要说明的是,在具体实施过程中,计算设备30还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC)、网络存储设备、云存储设备,或适合于存储指令和/或数据的任何类型的媒介或设备。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括存储计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种方法的部分或全部步骤。
本领域的技术人员可以清楚地了解到本申请的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列、集成电路等。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上具体地展示和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附条款的精神和范围内的各种修改和等效设置。
Claims (10)
1.一种管理全局资源的方法,用于微服务系统,其特征在于,包括:
定义用于接口资源的一致的资源表达方式;
注册第一微服务的接口资源,所述第一微服务的接口资源包括第一接口资源且以所述资源表达方式表征;
对待安装的第二微服务进行接口资源依赖检查,所述第二微服务依赖的接口资源包括第二接口资源且以所述资源表达方式表征,其中,所述进行接口资源依赖检查,包括:
将所述第二接口资源的资源表达方式与所注册的第一微服务的各接口资源的资源表达方式分别进行匹配,如果匹配成功任一接口资源,则所述第二接口资源满足接口资源依赖要求;
如果所述第二微服务通过接口资源依赖检查,则开始安装所述第二微服务,否则退出安装。
2.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述第二微服务的请求,根据所述第二微服务依赖的接口资源和用户需要请求的所述第一微服务,生成接口资源信息包以及用于调用所述第一微服务的授权令牌。
3.根据权利要求2所述的方法,其特征在于,生成接口资源信息包以及用于调用所述第一微服务的授权令牌,包括:
根据所述第二微服务注册的接口资源依赖,对用户针对所述第一微服务的相应接口资源的访问权限执行访问控制检查;
将通过访问控制检查的接口资源名称打包,生成接口资源信息包;
计算所述接口资源信息包的消息摘要,作为所述授权令牌提供给所述第二微服务,从而所述第二微服务携带所述授权令牌和所述接口资源信息包访问所述第一微服务。
4.根据权利要求3所述的方法,其特征在于,还包括:
预先生成对接口资源进行访问控制的访问控制模型;
预先生成用于接口资源的访问规则;
基于所述访问控制模型和所述访问规则,对用户针对所述第一微服务的相应接口资源的访问权限执行访问控制检查。
5.根据权利要求4所述的方法,其特征在于,所述对用户针对所述第一微服务的相应接口资源的访问权限执行访问控制检查,包括:
将所述第一微服务的相应接口资源的资源表达式与所述访问规则中限定的资源表达式进行匹配并返回匹配结果。
6.根据权利要求1所述的方法,其特征在于,所述资源表达方式构造为资源六段式表达,所述资源六段式表达是所述微服务系统中任一所述接口资源的唯一标识。
7.根据权利要求6所述的方法,其特征在于,所述定义用于接口资源的一致的资源表达方式,包括:
定义如下的所述资源六段式表达方式:
crcp:<ram-code>:<project-id>:<region>:<mc-code-id>:<relative-id>,
其中,
crcp为平台代码;
ram-code为平台资源访问管理代码;
project-id为平台用户表示;
region为地域信息;
mc-code-id为模块标识;
relative-id为与服务相关的资源描述部分。
8.根据权利要求1所述的方法,其特征在于,还包括:
以与所述接口资源一致的所述资源表达方式定义数据资源,从而以与所述接口资源一致的方式对所述数据资源进行权限控制。
9.根据权利要求1所述的方法,其特征在于,还包括:
在所述第二微服务升级时,进行接口资源依赖检查;和/或
在所述第一微服务卸载时,进行接口资源依赖检查。
10.一种计算设备,其特征在于,包括:
处理器;以及
存储器,存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311254971.4A CN116991472B (zh) | 2023-09-27 | 2023-09-27 | 管理全局资源的方法及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311254971.4A CN116991472B (zh) | 2023-09-27 | 2023-09-27 | 管理全局资源的方法及计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116991472A true CN116991472A (zh) | 2023-11-03 |
CN116991472B CN116991472B (zh) | 2023-12-22 |
Family
ID=88530608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311254971.4A Active CN116991472B (zh) | 2023-09-27 | 2023-09-27 | 管理全局资源的方法及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116991472B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150200948A1 (en) * | 2012-04-23 | 2015-07-16 | Google Inc. | Controlling Access by Web Applications to Resources on Servers |
CN110266544A (zh) * | 2019-06-28 | 2019-09-20 | 苏州浪潮智能科技有限公司 | 一种云平台微服务化服务失败的原因定位的装置及方法 |
CN110781476A (zh) * | 2019-10-15 | 2020-02-11 | 南京南瑞信息通信科技有限公司 | 一种柔性微服务安全访问控制方法及系统 |
CN111752641A (zh) * | 2020-06-29 | 2020-10-09 | 深圳壹账通智能科技有限公司 | 微服务容器之间服务启动方法、装置、设备及存储介质 |
CN112866385A (zh) * | 2021-01-19 | 2021-05-28 | 北京字跳网络技术有限公司 | 接口调用方法、装置、电子设备和存储介质 |
CN116260650A (zh) * | 2022-03-31 | 2023-06-13 | 国网智能电网研究院有限公司 | 一种基于ai高速正则匹配的接口交互数据安全防护方法 |
-
2023
- 2023-09-27 CN CN202311254971.4A patent/CN116991472B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150200948A1 (en) * | 2012-04-23 | 2015-07-16 | Google Inc. | Controlling Access by Web Applications to Resources on Servers |
CN110266544A (zh) * | 2019-06-28 | 2019-09-20 | 苏州浪潮智能科技有限公司 | 一种云平台微服务化服务失败的原因定位的装置及方法 |
CN110781476A (zh) * | 2019-10-15 | 2020-02-11 | 南京南瑞信息通信科技有限公司 | 一种柔性微服务安全访问控制方法及系统 |
CN111752641A (zh) * | 2020-06-29 | 2020-10-09 | 深圳壹账通智能科技有限公司 | 微服务容器之间服务启动方法、装置、设备及存储介质 |
CN112866385A (zh) * | 2021-01-19 | 2021-05-28 | 北京字跳网络技术有限公司 | 接口调用方法、装置、电子设备和存储介质 |
CN116260650A (zh) * | 2022-03-31 | 2023-06-13 | 国网智能电网研究院有限公司 | 一种基于ai高速正则匹配的接口交互数据安全防护方法 |
Non-Patent Citations (2)
Title |
---|
郭皓明等: "以功能需求为驱的资源聚合方法与实现", 北京航空航天大学学报, no. 05 * |
阿里云: "权限策略基本元素", pages 1 - 7, Retrieved from the Internet <URL:https://www.alibabacloud.com/help/zh/ram/user-guide/policy-elements> * |
Also Published As
Publication number | Publication date |
---|---|
CN116991472B (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8024564B2 (en) | Automating configuration of software applications | |
US8239954B2 (en) | Access control based on program properties | |
US8413130B2 (en) | System and method for self policing of authorized configuration by end points | |
US10650138B2 (en) | System call policies for containers | |
US11909890B2 (en) | Software release verification | |
US7698662B1 (en) | System and method for proxied evaluation of PCells | |
US20090249436A1 (en) | Centralized Enforcement of Name-Based Computer System Security Rules | |
CN108289098B (zh) | 分布式文件系统的权限管理方法和装置、服务器、介质 | |
US11431503B2 (en) | Self-sovereign data access via bot-chain | |
US20080141338A1 (en) | Secure policy description method and apparatus for secure operating system | |
US10528749B2 (en) | Methods and apparatus for containerized secure computing resources | |
US11580206B2 (en) | Project-based permission system | |
CA3088147C (en) | Data isolation in distributed hash chains | |
WO2020001162A1 (zh) | 容器管理方法、装置和设备 | |
US10592660B2 (en) | Capability access management | |
Worley et al. | Opportunities, challenges, and future extensions for smart-contract design patterns | |
CN117693737A (zh) | 为容器实例设立子目录和网络接口的过程的保护 | |
CN116991472B (zh) | 管理全局资源的方法及计算设备 | |
WO2022053048A1 (en) | Ensuring secure provisioning of blockchain infrastructure | |
CN116521306A (zh) | 一种容器使能selinux的方法和计算机设备 | |
CN117216776A (zh) | 在计算系统中对资源进行权限控制的方法及计算设备 | |
US20190392133A1 (en) | System and method for producing secure data management software | |
CN117034233B (zh) | 基于权限的应用管理方法、装置、计算设备及存储介质 | |
US20220353298A1 (en) | Embedded and distributable policy enforcement | |
CN114503512B (zh) | 允许具有多级的层次结构的嵌套租户 |
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 |