CN118133266A - 基于函数级别的权限管控方法、装置、设备、介质和产品 - Google Patents
基于函数级别的权限管控方法、装置、设备、介质和产品 Download PDFInfo
- Publication number
- CN118133266A CN118133266A CN202410573902.8A CN202410573902A CN118133266A CN 118133266 A CN118133266 A CN 118133266A CN 202410573902 A CN202410573902 A CN 202410573902A CN 118133266 A CN118133266 A CN 118133266A
- Authority
- CN
- China
- Prior art keywords
- function
- attribute
- authority
- call request
- api call
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 123
- 238000012795 verification Methods 0.000 claims abstract description 108
- 230000006870 function Effects 0.000 claims description 491
- 238000007726 management method Methods 0.000 claims description 271
- 238000004590 computer program Methods 0.000 claims description 16
- 238000003780 insertion Methods 0.000 claims description 3
- 230000037431 insertion Effects 0.000 claims description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 171
- 230000008569 process Effects 0.000 description 68
- 238000004891 communication Methods 0.000 description 22
- 238000002372 labelling Methods 0.000 description 22
- 239000002699 waste material Substances 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 15
- 241000220317 Rosa Species 0.000 description 10
- 230000003068 static effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000013475 authorization Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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
- Storage Device Security (AREA)
Abstract
本发明提供一种基于函数级别的权限管控方法、装置、设备、介质和产品,涉及安全管控技术领域。方法包括:接收API调用请求,基于API调用请求确定所访问的目标函数;查询服务端针对目标函数的第一函数管控属性;若未查询到第一函数管控属性,对API调用请求进行服务级别的权限管控;若查询到第一函数管控属性,查询客户端针对目标函数的第二函数管控属性;若查询到第二函数管控属性,基于第一函数管控属性与第二函数管控属性,对API调用请求进行函数级别的权限校验得到第一权限校验结果;若第一权限校验结果为有权限,将API调用请求路由至API调用请求所访问的目标服务。本发明可以实现函数级别的权限管控,提高系统的运行效率。
Description
技术领域
本发明涉及安全管控技术领域,尤其涉及一种基于函数级别的权限管控方法、装置、设备、介质和产品。
背景技术
在操作系统中,dbus(针对桌面环境优化的进程间通信机制)提供了强大而灵活的跨进程通信功能。其中,对于一些涉及安全的服务,服务所提供的API需要授权的客户端才可以调用,因此需要对API调用请求进行权限管控。
dbus自身提供了一套安全管控方案,通过在配置文件中设置相应的服务权限来管控客户端对相关API的调用。dbus提供的配置文件可以控制用户是否能启动服务,是否能给该服务、该服务下面的某个接口发送消息,还可以进一步精细化到给该接口的某些函数发送消息。然而,该用户态配置文件是可能被修改的,从而可以绕过服务调用的安全管控,带来一定的安全隐患。
目前,为了能做到配置文件中的配置不被修改,dbus进一步适配了SELinux(Security-Enhanced Linux,安全增强Linux)。通过修改dbus内部代码,支持通过SELinux来控制是否可以基于某服务名来启动该服务,也可以控制进程A给进程B的消息发送,将权限校验放到了内核态完成,同时也避免了用户态配置文件被修改的可能。然而,SELinux中消息的发送是以进程为单位,无法做到以函数名为单位,即SELinux是基于进程的权限管理方式,针对一些仅仅需要运行少数函数的进程,一旦被拦截,则会使得因整个进程无法执行而导致函数无法执行,会导致系统的运行效率大大降低。
发明内容
本发明提供一种基于函数级别的权限管控方法、装置、设备、介质和产品,用以解决现有技术中无法做到函数级别的权限管控的缺陷,实现函数级别的权限管控。
本发明提供一种基于函数级别的权限管控方法,应用于服务端,所述方法包括:
接收客户端发送的API调用请求,基于所述API调用请求确定所访问的目标函数;
查询所述服务端针对所述目标函数的第一函数管控属性;
若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;
若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;
若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;
若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务。
根据本发明提供的一种基于函数级别的权限管控方法,所述对所述API调用请求进行服务级别的权限管控,包括:
查询所述服务端针对所述目标服务的第一权限管控属性;
若未查询到所述第一权限管控属性,将所述API调用请求路由至所述目标服务;
若查询到所述第一权限管控属性,查询所述客户端针对所述目标服务的第二权限管控属性;
若查询到所述第二权限管控属性,基于所述第一权限管控属性与所述第二权限管控属性,对所述API调用请求进行权限校验得到第二权限校验结果;
若所述第二权限校验结果为有权限,将所述API调用请求路由至所述目标服务。
根据本发明提供的一种基于函数级别的权限管控方法,所述查询所述客户端针对所述目标服务的第二权限管控属性,包括:
基于所述客户端发送的套接字第一Socket,查询所述客户端针对所述目标服务的第二权限管控属性;
其中,所述第一Socket与所述客户端自身的第二Socket之间存在引用,所述第一Socket存储有所述第一权限管控属性,所述第二Socket存储有所述第二权限管控属性,以使所述服务端基于所述第一Socket可查询所述第二权限管控属性。
根据本发明提供的一种基于函数级别的权限管控方法,所述第一权限管控属性是基于如下方式生成:
获取配置在所述目标服务对应的文件上的扩展属性;
基于所述扩展属性,确定查找哈希表的第一关键字;
若基于所述第一关键字在所述哈希表中查找得到所述第一关键字,将所述第一关键字在所述哈希表中的位置确定为所述第一权限管控属性;
若基于所述第一关键字在所述哈希表中未查找得到所述第一关键字,将所述第一关键字插入所述哈希表,并将所述第一关键字在所述哈希表中的插入位置确定为所述第一权限管控属性。
根据本发明提供的一种基于函数级别的权限管控方法,所述查询所述服务端针对所述目标函数的第一函数管控属性,包括:
基于所述目标函数确定文件名;
查询所述文件名对应的目标文件;
若查询到所述目标文件,查询所述目标文件是否配置有所述第一函数管控属性;
若未查询到所述目标文件,则未查询到所述第一函数管控属性;
所述第一函数管控属性是基于如下方式配置:
确定待配置所述第一函数管控属性的目标函数,基于所述目标函数确定文件名;
创建所述文件名对应的目标文件;
为所述目标文件配置所述第一函数管控属性,以使所述第一函数管控属性为所述目标文件的扩展属性。
本发明还提供一种基于函数级别的权限管控方法,应用于客户端,所述方法包括:
发送API调用请求至服务端,以供所述服务端对所述API调用请求进行权限校验;
其中,所述服务端是基于如下方式对所述API调用请求进行权限校验:
基于所述API调用请求确定所访问的目标函数;
查询所述服务端针对所述目标函数的第一函数管控属性;
若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;
若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;
若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;
若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务;
所述服务端若查询到所述第二函数管控属性,所述发送API调用请求至服务端,之后还包括:
发送所述客户端的第二函数管控属性至所述服务端。
本发明还提供一种基于函数级别的权限管控装置,部署于服务端,所述装置包括:
请求接收模块,用于接收客户端发送的API调用请求,基于所述API调用请求确定所访问的目标函数;
第一查询模块,用于查询所述服务端针对所述目标函数的第一函数管控属性;
权限管控模块,用于若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;
第二查询模块,用于若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;
权限校验模块,用于若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;
请求路由模块,用于若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务。
本发明还提供一种基于函数级别的权限管控装置,部署于客户端,所述装置包括:
请求发送模块,用于发送API调用请求至服务端,以供所述服务端对所述API调用请求进行权限校验;
其中,所述服务端是基于如下方式对所述API调用请求进行权限校验:
基于所述API调用请求确定所访问的目标函数;
查询所述服务端针对所述目标函数的第一函数管控属性;
若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;
若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;
若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;
若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务;
所述服务端若查询到所述第二函数管控属性,所述装置还包括:
属性发送模块,用于发送所述客户端的第二函数管控属性至所述服务端。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于函数级别的权限管控方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于函数级别的权限管控方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于函数级别的权限管控方法。
本发明提供的基于函数级别的权限管控方法、装置、设备、介质和产品,接收客户端发送的API调用请求,基于API调用请求确定所访问的目标函数,查询服务端针对目标函数的第一函数管控属性,若未查询到第一函数管控属性,对API调用请求进行服务级别的权限管控,从而在没有配置第一函数管控属性的情况下,确认服务端针对目标函数没有做权限管控,可以直接进行服务级别的权限管控,即没有配置就默认没有函数级别的权限管控,只有查询到第一函数管控属性,才查询客户端针对目标函数的第二函数管控属性,即有配置第一函数管控属性才确认服务端针对目标函数有做权限管控,进而才需要对客户端的API调用请求进行函数级别的权限校验,从而无需所有的函数都打标签,只需要针对需要权限管控的函数配置第一函数管控属性即可,从而减少资源和性能上的浪费,提升系统性能;若查询到第二函数管控属性,才基于第一函数管控属性与第二函数管控属性,对API调用请求进行函数级别的权限校验得到第一权限校验结果,从而减少资源和性能上的浪费,提升系统性能。综上,本发明实施例可以实现函数级别的权限管控,从而提高系统的运行效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的基于函数级别的权限管控方法的流程示意图之一;
图2为本发明提供的基于函数级别的权限管控方法的流程示意图之二;
图3为本发明提供的基于函数级别的权限管控装置的结构示意图;
图4为本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在操作系统中,dbus(针对桌面环境优化的进程间通信机制)提供了强大而灵活的跨进程通信功能。其中,对于一些涉及安全的服务,服务所提供的API需要授权的客户端才可以调用,因此需要对API调用请求进行权限管控。
dbus自身提供了一套安全管控方案,通过在配置文件中设置相应的服务权限来管控客户端对相关API的调用。dbus提供的配置文件可以控制用户是否能启动服务,是否能给该服务、该服务下面的某个接口发送消息,还可以进一步精细化到给该接口的某些函数发送消息。然而,该用户态配置文件是可能被修改的,从而可以绕过服务调用的安全管控,带来一定的安全隐患。例如,由于操作系统一些特殊账户(例如root账户)的特殊权限,配置文件中的配置也是可以直接修改的,即可以使用root账号直接修改配置文件中的配置。
为便于理解,以服务配置为例,其对应的dbus配置文件如下:
“<busconfig>
<policy context="default">
//配置1
<deny own=""/>
</policy>
<policy user="root">
//配置2
<deny own=""/>
<allow own="Rose.LocalPropertyRepository"/>
//配置3
<deny send_destination="Rose.LocalPropertyRepository"/>
<alow send_destination="Rose.LocalPropertyRepository"
send_interface="Rose.LocalPropertyRepository.Internal"/>
//配置4
<SELinux>
<associate own="Rose.LocalPropertyRepository" context="system_u:object_r:service_own_name_t:s0"/>
</SELinux>
</policy>
</busconfig>”。
其中,配置1表示普通用户不可以启动服务,其通过deny设置了拒绝任何服务名的启动。配置2表示root用户可以启动服务,但仅仅可以启动服务名为“Rose.LocalPropertyRepository”的服务,其先通过deny拒绝了所有的服务,然后用allow设置了以“Rose.LocalPropertyRepository”为服务名来启动服务。配置3表示只可以给“Rose.LocalPropertyRepository”服务下的“Rose.LocalPropertyRepository.Internal”接口发送消息,不可以给该服务下的其它接口发送消息。配置4表示通过SELinux来控制启动服务的权限和能否发送消息的权限,其能否基于“Rose.LocalPropertyRepository”服务名启动,由“service_own_name_t”这个标签来决定。
目前,为了能做到配置文件中的配置不被修改,dbus进一步适配了SELinux(Security-Enhanced Linux,安全增强Linux),SELinux是MAC(Mandatory AccessControl,强制访问控制)的一种实现方式,其利用安全策略来强制执行系统所允许的访问,在该访问控制体系的限制下,进程只能访问在它的任务中所需要的资源,允许范围之外的资源将会被系统禁止。通过修改dbus内部代码,支持通过SELinux来控制是否可以基于某服务名来启动该服务,也可以控制进程A给进程B的消息发送,将权限校验放到了内核态完成,同时也避免了用户态配置文件被修改的可能。然而,SELinux中消息的发送是以进程为单位,无法做到以函数名为单位,即SELinux是基于进程的权限管理方式,针对一些仅仅需要运行少数函数的进程,一旦被拦截,则会使得因整个进程无法执行而导致函数无法执行,会导致操作系统的运行效率大大降低。
此外,白名单机制容易导致资源浪费,由于直接引入了SELinux,假设让SELinux去管控消息的发送,如给进程B发送消息需要授权,若进程A需要给进程B发送消息,那么给进程A打上授权的blksec_clt_send_t标签集可以了,但是因为SELinux的引入,整个系统都需要进行打标签的操作,这时假如系统没有其它方面的管控需求,就会导致资源浪费。虽然可以打默认权限都放开的标签,但是这些额外引入的标签也会导致资源和性能上的浪费。
针对上述问题,本发明提出以下各实施例。图1为本发明提供的基于函数级别的权限管控方法的流程示意图之一,如图1所示,该应用于服务端的基于函数级别的权限管控方法包括:
步骤110,接收客户端发送的API调用请求,基于所述API调用请求确定所访问的目标函数。
此处,API调用请求用于调用所访问的目标函数的API。在一实施例中,客户端是向服务端的目标服务service发送该API调用请求的;首先,API调用请求发送给servicedaemon,然后再路由至目标服务service。
步骤120,查询所述服务端针对所述目标函数的第一函数管控属性。
若针对该目标函数存在权限管控,则针对目标函数配置有第一函数管控属性,从而可查询到第一函数管控属性;若针对该目标函数不存在权限管控,则针对目标函数不配置第一函数管控属性,从而查询不到第一函数管控属性。
在一实施例中,第一函数管控属性配置在文件上,即第一函数管控属性为文件上的扩展属性,从而实现动态配置第一函数管控属性,即实现动态打标签,相比静态标签可以针对目标函数动态打标签。
步骤130,若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控。
具体地,若未查询到第一函数管控属性,表示服务端针对目标函数没有做权限管控,因此可以直接对API调用请求进行服务级别的权限管控。
步骤140,若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性。
具体地,若查询到第一函数管控属性,表示服务端针对目标函数需要做权限管控,因此查询客户端针对目标函数的第二函数管控属性,以对客户端的API调用请求进行函数级别的权限校验,以确定是否将API调用请求路由至目标服务。
若客户端没有权限访问目标函数,则客户端针对目标函数不会配置有第二函数管控属性,从而若查询不到第二函数管控属性,拒绝将API调用请求路由至目标服务;若客户端有权限访问目标函数,则客户端针对目标函数会配置有第二函数管控属性,从而若查询到第二函数管控属性,基于第一函数管控属性与第二函数管控属性,对API调用请求进行函数级别的权限校验,以确定客户端是否有权限访问目标函数。
在一实施例中,第二函数管控属性配置在客户端的文件上,即第二函数管控属性为文件上的扩展属性,从而实现动态配置第二函数管控属性,即实现动态打标签,相比静态标签可以针对目标函数动态打标签。
步骤150,若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果。
应理解,若查询到第二函数管控属性,表示从客户端中获取得到该第二函数管控属性。
具体地,基于内核态对API调用请求进行函数级别的权限校验,即权限校验本身要陷入内核态,由内核态返回第一权限校验结果。应理解,基于MAC机制来实现跨进程通信的权限管控,使对客户端应用调用服务的权限校验在内核态完成,解决了用户态配置文件被修改这种可能,避免了通过特殊权限账户绕过安全管控机制等潜在问题,提高权限管控的安全性。换言之,在MAC基础上,默认没有函数级别的权限管控,只有配置了函数管控属性才有权限管控,且权限的判断在内核态完成。
步骤160,若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务。
若第一权限校验结果为有权限,则可以将API调用请求路由至目标服务,以供目标服务响应该API调用请求;若第一权限校验结果为无权限,则拒绝将API调用请求路由至目标服务,即拒绝响应该API调用请求。
应理解,函数级别的权限管控有两种场景。第一种,服务端本身只需要服务级别的权限管控,但是有些函数需要进行函数级别的权限管控;第二种,服务端本身只有个别函数需要进行权限管控,其它接口不需要管控。因此,对API调用请求进行函数级别的权限管控,可以实现更精细化的权限管控,从而对于一些仅仅需要对少数函数进行权限管控的进程,在进程中首先判断个别函数是否存在权限管控,只有配置了才需要管控,不需要对整个进程进行权限管控,解决了操作系统中因为进程级别的管控造成的运行效率低的问题。
应理解,函数级别的安全管控不排斥服务级别的安全管控,优先使用函数级别的安全管控,当函数级别的安全管控不存在时,尝试服务级别的安全管控,当服务级别的安全管控也不存在时,权限放开。
本发明实施例提供的基于函数级别的权限管控方法,接收客户端发送的API调用请求,基于API调用请求确定所访问的目标函数,查询服务端针对目标函数的第一函数管控属性,若未查询到第一函数管控属性,对API调用请求进行服务级别的权限管控,从而在没有配置第一函数管控属性的情况下,确认服务端针对目标函数没有做权限管控,可以直接进行服务级别的权限管控,即没有配置就默认没有函数级别的权限管控,只有查询到第一函数管控属性,才查询客户端针对目标函数的第二函数管控属性,即有配置第一函数管控属性才确认服务端针对目标函数有做权限管控,进而才需要对客户端的API调用请求进行函数级别的权限校验,从而无需所有的函数都打标签,只需要针对需要权限管控的函数配置第一函数管控属性即可,从而减少资源和性能上的浪费,提升系统性能;若查询到第二函数管控属性,才基于第一函数管控属性与第二函数管控属性,对API调用请求进行函数级别的权限校验得到第一权限校验结果,从而减少资源和性能上的浪费,提升系统性能。综上,本发明实施例可以实现函数级别的权限管控,从而提高系统的运行效率。
基于上述任一实施例,例如,以给服务下面某个接口发送消息为例,基于SELinux“提前打标签+bool变量控制”的机制,可以控制进程A给进程B的整体消息发送,即要么所有的消息都能发送,要么所有的消息都不能发送。然而,SELinux基于白名单机制进行权限管控,只有被列入白名单的客户端对象才有权限访问,即只有满足配置要求才有权限访问,基于此,虽然SELinux可以实现在不修改dbus配置文件的情况下对客户端调用服务的管控,但是所有的终端都需要打标签以进行白名单机制的权限管控,而有些终端并没有权限管控需求,从而导致额外引入标签,进而造成资源和性能上的浪费,导致系统性能下降。例如,给进程B发送消息需要授权,只有进程A可以给进程B发送消息,那么给进程A打上授权的“blksec_clt_send_t”标签即可,由于SELinux的引入,整个系统都要打标签,但整个系统实际上并没有其它方面的管控需求,虽然可以打默认权限都放开的标签,但是这些额外引入的标签也是一种资源和性能上的浪费。基于此,图2为本发明提供的基于函数级别的权限管控方法的流程示意图之二,如图2所示,上述步骤130中,对所述API调用请求进行服务级别的权限管控,包括:
步骤131,查询所述服务端针对所述目标服务的第一权限管控属性。
若针对该目标服务存在权限管控,则针对目标服务配置有第一权限管控属性,从而可查询到第一权限管控属性;若针对该目标服务不存在权限管控,则针对目标服务不配置第一权限管控属性,从而查询不到第一权限管控属性。
在一实施例中,第一权限管控属性配置在目标服务对应的文件上,即配置在目标服务对应的进程文件上,即第一权限管控属性为文件上的扩展属性,从而实现动态配置第一权限管控属性,即实现动态打标签,相比静态标签可以针对目标服务动态打标签。
在一实施例中,基于客户端发送的第一Socket(套接字),查询服务端针对目标服务的第一权限管控属性。其中,第一Socket与客户端自身的第二Socket之间存在引用,第一Socket存储有第一权限管控属性,从而基于客户端发送的第一Socket,可以查询第一权限管控属性。
步骤132,若未查询到所述第一权限管控属性,将所述API调用请求路由至所述目标服务。
具体地,若未查询到第一权限管控属性,表示服务端针对目标服务没有做权限管控,因此可以直接将API调用请求路由至目标服务,以供目标服务响应该API调用请求。
步骤133,若查询到所述第一权限管控属性,查询所述客户端针对所述目标服务的第二权限管控属性。
具体地,若查询到第一权限管控属性,表示服务端针对目标服务需要做权限管控,因此对客户端的API调用请求进行服务级别的权限校验,以确定是否将API调用请求路由至目标服务。
若客户端没有权限访问目标服务,则客户端针对目标服务不会配置有第二权限管控属性,从而若查询不到第二权限管控属性,拒绝将API调用请求路由至目标服务;若客户端有权限访问目标服务,则客户端针对目标服务会配置有第二权限管控属性,从而若查询到第二权限管控属性,基于第一权限管控属性与第二权限管控属性,对API调用请求进行权限校验,以确定客户端是否有权限访问目标服务。
在一实施例中,第二权限管控属性配置在客户端中对应的进程文件上,即第二权限管控属性为文件上的扩展属性,从而实现动态配置第二权限管控属性,即实现动态打标签,相比静态标签可以针对目标服务动态打标签。
步骤134,若查询到所述第二权限管控属性,基于所述第一权限管控属性与所述第二权限管控属性,对所述API调用请求进行权限校验得到第二权限校验结果。
应理解,若查询到第二权限管控属性,表示从客户端中获取得到该第二权限管控属性。
具体地,基于内核态对API调用请求进行权限校验,即权限校验本身要陷入内核态,由内核态返回权限校验结果。应理解,基于MAC机制来实现跨进程通信的权限管控,使对客户端应用调用服务的权限校验在内核态完成,解决了用户态配置文件被修改这种可能,避免了通过特殊权限账户绕过安全管控机制等潜在问题,提高权限管控的安全性。
步骤135,若所述第二权限校验结果为有权限,将所述API调用请求路由至所述目标服务。
若权限校验结果为有权限,则可以将API调用请求路由至目标服务,以供目标服务响应该API调用请求;若权限校验结果为无权限,则拒绝将API调用请求路由至目标服务,即拒绝响应该API调用请求。
应理解,通过上述方式,在原有白名单机制的基础上引入了黑名单机制思想,即默认没有权限管控,配置了才有权限管控,能有效解决SELinux基于bool变量实现“动态”权限管控存在的资源浪费问题。
本发明实施例提供的基于函数级别的权限管控方法,查询服务端针对目标服务的第一权限管控属性,若未查询到第一权限管控属性,将API调用请求路由至目标服务,从而在没有配置第一权限管控属性的情况下,确认服务端针对目标服务没有做权限管控,可以直接将API调用请求路由至目标服务,即没有配置就默认没有权限管控,只有查询到第一权限管控属性,才对客户端的API调用请求进行权限校验,即有配置第一权限管控属性才确认服务端针对目标服务有做权限管控,进而才需要对客户端的API调用请求进行权限校验,从而无需所有的终端和服务都打标签,只需要针对需要权限管控的服务配置第一权限管控属性即可,从而减少资源和性能上的浪费,提升系统性能;若查询到第二权限管控属性,才基于第一权限管控属性与第二权限管控属性,对API调用请求进行服务级别的权限校验得到第二权限校验结果,从而减少资源和性能上的浪费,提升系统性能。
基于上述任一实施例,该方法中,上述步骤133中,查询所述客户端针对所述目标服务的第二权限管控属性,包括:
基于所述客户端发送的套接字第一Socket,查询所述客户端针对所述目标服务的第二权限管控属性;
其中,所述第一Socket与所述客户端自身的第二Socket之间存在引用,所述第一Socket存储有所述第一权限管控属性,所述第二Socket存储有所述第二权限管控属性,以使所述服务端基于所述第一Socket可查询所述第二权限管控属性。
具体地,进程内部通常会基于Socket通信,为了能对socket进行权限管控,Socket存储的第一权限管控属性或第二权限管控属性可以直接继承进程的第一权限管控属性或第二权限管控属性。即第一权限管控属性或第二权限管控属性直接保存到Socket的安全成员变量中。
在一具体实施例中,打开进程文件创建inode时,将第一权限管控属性或第二权限管控属性保存到inode的安全成员变量中;启动进程时将inode的第一权限管控属性或第二权限管控属性保存到进程上下文;进程内部创建Socket,将进程上下文的第一权限管控属性或第二权限管控属性保存到Socket中。以上可以通过安全钩子函数处理。其中,由于进程有进程上下文,很多管控基于进程,为了方便索引将inode的第一权限管控属性或第二权限管控属性保存到进程上下文。
考虑到上述仅仅完成了将进程的第一权限管控属性或第二权限管控属性继承到Socekt上来,但是Socket之间的通信是相互通信,而且管控本身也需要主体和客体两个对象,因此Socket双方刚好就是主体与客体的关系。基于此,为提高Socket的通信性能,将第一Socket与客户端自身的第二Socket之间设置引用,从而提高第一权限管控属性或第二权限管控属性的查询效率,进而提高权限管控的效率和性能。
需要说明的是,为了使权限管控的双方(即客户端及服务端)的权限管控属性马上能从自己的Socket数据结构中查找到,且除了知道自己的权限管控属性,还需要知道对方的权限管控属性,因此将第一Socket与客户端自身的第二Socket之间设置引用,提高权限管控属性的查询效率,进而提高权限管控的效率和性能。
其中,服务端通过客户端发送的第一Socket与客户端进行Socket通信。
在一具体实施例中,客户端主动与服务端进行Socket连接,即用户态触发调用connect,服务端用户态触发调用accept接收连接;客户端连接时根据fd(FileDescriptor,文件描述符)将之前的Socket(cltsock)搜索出来,对于安全而言从cltsock上得到第二权限管控属性,且客户端需要创建一个全新的第一Socket(newsk),这个是为了和服务端完成点对点通信,一个客户端可以和服务端创建多个点对点,因此也就会创建多个newsk;newsk最终要被发送给服务端,连接成功后最终的通信就发生在cltsock->sk和newsk之间,因此,第一Socket与客户端自身的第二Socket之间存在引用,例如,通过peer引用,sk->peer=newsk,newsk->peer=sk;sk(第二Socket)和newsk(第一Socket)之间能相互访问,也造就了它们直接能相互通信,同样通信之前的权限校验信息也保存到了sk和newsk里面。基于此,完成相互引用后,无论是客户端还是服务端都可以完成权限校验了。为便于理解引用,如下所示:
sk->blksec_id=客户端进程的blksec_id(第二权限管控属性);
newsk->blksec_id=服务端进程的blksec_id(第一权限管控属性);
sk->peer_blksec_id=newsk->blksec_id;
newsk->peer_blksec_id=sk->blksec_id。
此外,需要说明的是,通过客户端的fd在客户端进程能找到第二Socket,服务端进程通过新创建的fd最终能找到第一Socket,所以用户态基于fd就能完成相互通信了,也可以完成相互权限管控了。
应理解,第一Socket和第二Socket相互指向对方,从而互相可以快速获取对方的权限管控属性,进而提高权限管控属性的查询效率,进而提高权限管控的效率和性能。
应理解,由于第一权限管控属性和第二权限管控属性是两个进程的权限管控属性,所以校验Socket通信之间的权限实际上就是校验两个进程之间能否进行Socket通信。
本发明实施例提供的基于函数级别的权限管控方法,基于客户端发送的第一Socket,查询客户端针对目标服务的第二权限管控属性,且第一Socket与客户端自身的第二Socket之间存在引用,从而可以快速查询对方的第二权限管控属性,进而提高第二权限管控属性的查询效率,进而提高权限管控的效率和性能。
基于上述任一实施例,该方法中,所述第一权限管控属性是基于如下方式生成:
获取配置在所述目标服务对应的文件上的扩展属性;
基于所述扩展属性,确定查找哈希表的第一关键字;
若基于所述第一关键字在所述哈希表中查找得到所述第一关键字,将所述第一关键字在所述哈希表中的位置确定为所述第一权限管控属性;
若基于所述第一关键字在所述哈希表中未查找得到所述第一关键字,将所述第一关键字插入所述哈希表,并将所述第一关键字在所述哈希表中的插入位置确定为所述第一权限管控属性。
考虑到现有技术中,SELinux是静态打标签,即其必须提前设置好应用标签,无法做到动态打标签,即其无法灵活解决动态设置权限管控的问题。例如,给进程B发送消息的客户端有多少个是无法提前知道的,由于SELinux必须提前静态打好标签,只能提前定义好标签数量,如定义128个;而动态控制则需要基于bool变量来实现,由于标签资源有限,只能根据系统已经存在的应用静态规划这些标签,如应用1打标签1,应用2打标签2,应用128打标签128,运行过程中再通过修改bool变量的值来控制他们给进程B发送消息的权限。然而,应用远远不止128个,存在标签数量不够用的问题,这128个应用也不一定都要调用给进程B发送消息的服务,这样的白名单静态规划标签机制会造成巨大的资源浪费。基于此,获取配置在目标服务对应的文件上的扩展属性,以实现动态打标签,即动态根据实际需求在文件上配置扩展属性,即实现动态给应用打标签的功能,灵活解决标签数量不够,难以有效规划的问题。相应的,内核也需要动态新增扩展属性,即内核需要支持根据需求动态新增扩展属性并解析这些属性的机制,且新增的权限只能交给特定的安全服务进程。
具体地,获取配置在目标服务对应的进程文件上的扩展属性。在一具体实施例中,进程文件加载时,即启动该目标服务(进程)时,文件系统支持读写扩展属性;打开进程时调用系统函数,以调用与之对应的安全钩子函数,即执行进程会调用到内核的do_filp_open函数,最终调用到安全打开钩子函数,只需要基于内核的LSM(Linux Security Module,Linux安全模块)机制注册自己的安全钩子即可;安全钩子函数读取扩展属性;如果存在此扩展属性,表示需要进行权限管控,读出扩展属性的值。
示例性的,如扩展属性为“system_u:object_r:blksec_srv_1_t:s0”,将该扩展属性作为查找哈希表的第一关键字。
进一步地,将第一权限管控属性保存到inode的安全成员变量中,由于扩展属性的解析发生在进程文件首次加载时,这个时刻也就是该文件的inode节点创建的时刻,因此解析后的扩展属性值保存到inode节点对应的数据结构中,由于保存到了inode节点对应的数据结构中,因此只需要解析一次,保证了性能。换言之,文件无论打开多少次都会只创建一个唯一的inode,扩展属性也只需要解析一次,因此权限管控属性从扩展属性中解析后在inode中安全成员变量中保存一份。
进一步地,由于目标服务是进程,还会进一步在内核初始化进程时保存第一权限管控属性到进程上下文的安全成员变量中,这样当该进程作为主体进行socket通信时就可以取出该第一权限管控属性。
进一步地,安全钩子函数只是进程被打开时整个打开流程中的一个钩子函数,安全钩子函数调用完成后需要返回到调用它的函数。无论什么情况都返回OK,因为扩展属性不是必须的,设置了才管控是此安全模块的基本原则。
需要说明的是,第二权限管控属性的生成方式与第一权限管控属性的生成方式基本相同,此处不再赘述。
本发明实施例提供的基于函数级别的权限管控方法,获取配置在目标服务对应的文件上的扩展属性,以实现动态打标签,即动态根据实际需求在文件上配置扩展属性,即实现动态给应用打标签的功能,灵活解决标签数量不够,难以有效规划的问题;基于扩展属性,确定查找哈希表的第一关键字,若基于第一关键字在哈希表中查找得到第一关键字,将第一关键字在哈希表中的位置确定为第一权限管控属性,若基于第一关键字在哈希表中未查找得到所述第一关键字,将第一关键字插入哈希表,并将第一关键字在哈希表中的插入位置确定为第一权限管控属性,从而通过哈希表将扩展属性转换为整数值的第一权限管控属性,提高第一权限管控属性的查询效率,进而提高权限管控的效率和性能。
基于上述任一实施例,该方法中,所述基于所述扩展属性,确定查找哈希表的第一关键字,包括:
将所述扩展属性依据类型进行拆分,得到多个属性;
分别将所述多个属性作为查找哈希表的第二关键字;
基于各所述第二关键字查找所述哈希表,确定各所述第二关键字在所述哈希表中的目标位置;
基于各所述目标位置的整数值,确定所述第一关键字。
示例性的,扩展属性为“system_u:object_r:blksec_srv_1_t:s0”,将该扩展属性依据类型user、role、type、class进行拆分,得到多个属性system_u、object_r、blksec_srv_1_t、s0;将多个属性system_u、object_r、blksec_srv_1_t、s0分别作为第二关键字key,在哈希表中查找它们的位置,各第二关键字在哈希表中的目标位置就是它们对应的整数值;将各目标位置的整数值封装成一个安全上下文,该安全上下文包括各目标位置的整数值,将该安全上下文作为第一关键字。
本发明实施例提供的基于函数级别的权限管控方法,通过上述方式,只需在哈希表中维护按照类型划分的多个属性,从而通过多个属性可以组合得到更多的第一关键字,相比直接在哈希表中维护所有的第一关键字,本发明实施例可以减少哈希表的配置数,进而降低权限管控的成本。
基于上述任一实施例,该方法中,上述步骤120包括:
基于所述目标函数确定文件名;
查询所述文件名对应的目标文件;
若查询到所述目标文件,查询所述目标文件是否配置有所述第一函数管控属性;
若未查询到所述目标文件,则未查询到所述第一函数管控属性。
相应地,所述第一函数管控属性是基于如下方式配置:
确定待配置所述第一函数管控属性的目标函数,基于所述目标函数确定文件名;
创建所述文件名对应的目标文件;
为所述目标文件配置所述第一函数管控属性,以使所述第一函数管控属性为所述目标文件的扩展属性。
具体地,基于目标函数的函数名确定文件名,以供基于目标函数可以查询该文件名对应的目标文件。
在一具体实施例中,该文件名由进程名+服务名+接口名+函数名组成,例如,文件名为Net_Net_NetCard_getMAC.blksec。基于此预先设定的规则,基于目标函数可以确定文件名。其中,文件名加上服务名和接口名是为了防止函数名相同时出现冲突。
应理解,进行函数级别的权限管控都需要基于目标函数的函数名生成一个目标文件,发送API调用请求时会根据函数名找到这个对应的文件。函数级别的第一函数管控属性支持动态设置,也可以提前配置好,即将扩展属性设置到这个函数名对应的文件中。
示例性的,在服务端中,设置调用getMAC函数的函数管控属性;在某个可写的目录(如/etc/blksec)下面创建如下文件Net_Net_NetCard_getMAC.blksec;给Net_Net_NetCard_getMAC.blksec的文件设置函数管控属性,如函数管控属性为blksec_service_1_t。在客户端中,设置调用getMAC函数的函数管控属性;在某个可写的目录(如/etc/blksec)下面创建如下文件Net_Net_NetCard_getMAC.blksec;给Net_Net_NetCard_getMAC.blksec的文件设置函数管控属性,如函数管控属性为blksec_client_1_t。从服务端和客户端的设置可以看到,它们的流程基本一致,文件名的差别仅仅是进程名的差别。其中,服务端的函数对应的文件名打上服务端类型的标签,如blksec_service_1_t,客户端打上与之对应的标签blksec_client_1_t,由于函数的管控可以有很多,因此这样的标签可以批量申请,它们通常都是成对的,不同的客户端进程,对于同一个函数它们都打相同的标签,如都打blksec_client_1_t标签。
考虑到现有技术中,SELinux是静态打标签,即其必须提前设置好应用标签,无法做到动态打标签,即其无法灵活解决动态设置权限管控的问题。基于此,确定待配置第一函数管控属性的目标函数,基于目标函数确定文件名,并创建文件名对应的目标文件,以为目标文件配置第一函数管控属性,以实现动态打标签,即动态根据实际需求创建文件并在文件上配置扩展属性,即实现动态给函数打标签的功能,灵活解决标签数量不够,难以有效规划的问题。
需要说明的是,第二函数管控属性的配置方式与第一函数管控属性的配置方式基本相同,此处不再赘述。
本发明实施例提供的基于函数级别的权限管控方法,通过上述方式,给需要管控的函数创建一个对应的文件,然后给该文件打标签,判断能否给该函数发送消息时取出客户端进程的标签,然后取出函数名对应的文件的标签,判断这两个标签之间的权限,从而做到函数级别的动态权限管控,且实现动态打标签,即动态根据实际需求创建文件并在文件上配置扩展属性,即实现动态给函数打标签的功能,灵活解决标签数量不够,难以有效规划的问题。
基于上述任一实施例,本发明还提供一种应用于客户端的基于函数级别的权限管控方法,该应用于客户端的基于函数级别的权限管控方法包括:
发送API调用请求至服务端,以供所述服务端对所述API调用请求进行权限校验。
其中,所述服务端是基于如下方式对所述API调用请求进行权限校验:基于所述API调用请求确定所访问的目标函数;查询所述服务端针对所述目标函数的第一函数管控属性;若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务。
相应地,所述服务端若查询到所述第二函数管控属性,所述发送API调用请求至服务端,之后还包括:
发送所述客户端的第二函数管控属性至所述服务端。
此处,服务端对API调用请求进行权限校验的步骤可以参考上述各实施例,此处不再一一赘述。应理解,客户端也可以作为服务端,执行服务端的步骤。
本发明实施例提供的基于函数级别的权限管控方法,发送API调用请求至服务端,以供服务端基于API调用请求确定所访问的目标函数,查询服务端针对目标函数的第一函数管控属性,若未查询到第一函数管控属性,对API调用请求进行服务级别的权限管控,从而在没有配置第一函数管控属性的情况下,确认服务端针对目标函数没有做权限管控,可以直接进行服务级别的权限管控,即没有配置就默认没有函数级别的权限管控,只有查询到第一函数管控属性,才查询客户端针对目标函数的第二函数管控属性,即有配置第一函数管控属性才确认服务端针对目标函数有做权限管控,进而才需要对客户端的API调用请求进行函数级别的权限校验,从而无需所有的函数都打标签,只需要针对需要权限管控的函数配置第一函数管控属性即可,从而减少资源和性能上的浪费,提升系统性能;若查询到第二函数管控属性,才基于第一函数管控属性与第二函数管控属性,对API调用请求进行函数级别的权限校验得到第一权限校验结果,从而减少资源和性能上的浪费,提升系统性能。综上,本发明实施例可以实现函数级别的权限管控,从而提高系统的运行效率。
下面对本发明提供的基于函数级别的权限管控装置进行描述,下文描述的基于函数级别的权限管控装置与上文描述的基于函数级别的权限管控方法可相互对应参照。
图3为本发明提供的基于函数级别的权限管控装置的结构示意图,如图3所示,该部署于服务端的基于函数级别的权限管控装置,包括:
请求接收模块310,用于接收客户端发送的API调用请求,基于所述API调用请求确定所访问的目标函数;
第一查询模块320,用于查询所述服务端针对所述目标函数的第一函数管控属性;
权限管控模块330,用于若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;
第二查询模块340,用于若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;
权限校验模块350,用于若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;
请求路由模块360,用于若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务。
本发明实施例提供的基于函数级别的权限管控装置,接收客户端发送的API调用请求,基于API调用请求确定所访问的目标函数,查询服务端针对目标函数的第一函数管控属性,若未查询到第一函数管控属性,对API调用请求进行服务级别的权限管控,从而在没有配置第一函数管控属性的情况下,确认服务端针对目标函数没有做权限管控,可以直接进行服务级别的权限管控,即没有配置就默认没有函数级别的权限管控,只有查询到第一函数管控属性,才查询客户端针对目标函数的第二函数管控属性,即有配置第一函数管控属性才确认服务端针对目标函数有做权限管控,进而才需要对客户端的API调用请求进行函数级别的权限校验,从而无需所有的函数都打标签,只需要针对需要权限管控的函数配置第一函数管控属性即可,从而减少资源和性能上的浪费,提升系统性能;若查询到第二函数管控属性,才基于第一函数管控属性与第二函数管控属性,对API调用请求进行函数级别的权限校验得到第一权限校验结果,从而减少资源和性能上的浪费,提升系统性能。综上,本发明实施例可以实现函数级别的权限管控,从而提高系统的运行效率。
该部署于客户端的基于函数级别的权限管控装置,包括:
请求发送模块,用于发送API调用请求至服务端,以供所述服务端对所述API调用请求进行权限校验;
其中,所述服务端是基于如下方式对所述API调用请求进行权限校验:
基于所述API调用请求确定所访问的目标函数;
查询所述服务端针对所述目标函数的第一函数管控属性;
若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;
若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;
若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;
若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务;
所述服务端若查询到所述第二函数管控属性,所述装置还包括:
属性发送模块,用于发送所述客户端的第二函数管控属性至所述服务端。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行应用于服务端的基于函数级别的权限管控方法,该方法包括:接收客户端发送的API调用请求,基于所述API调用请求确定所访问的目标函数;查询所述服务端针对所述目标函数的第一函数管控属性;若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务。或者,执行应用于客户端的基于函数级别的权限管控方法,该方法包括:发送API调用请求至服务端,以供所述服务端对所述API调用请求进行权限校验;其中,所述服务端是基于如下方式对所述API调用请求进行权限校验:基于所述API调用请求确定所访问的目标函数;查询所述服务端针对所述目标函数的第一函数管控属性;若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务;所述服务端若查询到所述第二函数管控属性,所述发送API调用请求至服务端,之后还包括:发送所述客户端的第二函数管控属性至所述服务端。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的应用于服务端的基于函数级别的权限管控方法,该方法包括:接收客户端发送的API调用请求,基于所述API调用请求确定所访问的目标函数;查询所述服务端针对所述目标函数的第一函数管控属性;若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务。或者,计算机能够执行上述各方法所提供的应用于客户端的基于函数级别的权限管控方法,该方法包括:发送API调用请求至服务端,以供所述服务端对所述API调用请求进行权限校验;其中,所述服务端是基于如下方式对所述API调用请求进行权限校验:基于所述API调用请求确定所访问的目标函数;查询所述服务端针对所述目标函数的第一函数管控属性;若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务;所述服务端若查询到所述第二函数管控属性,所述发送API调用请求至服务端,之后还包括:发送所述客户端的第二函数管控属性至所述服务端。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的应用于服务端的基于函数级别的权限管控方法,该方法包括:接收客户端发送的API调用请求,基于所述API调用请求确定所访问的目标函数;查询所述服务端针对所述目标函数的第一函数管控属性;若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务。或者,该计算机程序被处理器执行时实现以执行上述各方法提供的应用于客户端的基于函数级别的权限管控方法,该方法包括:发送API调用请求至服务端,以供所述服务端对所述API调用请求进行权限校验;其中,所述服务端是基于如下方式对所述API调用请求进行权限校验:基于所述API调用请求确定所访问的目标函数;查询所述服务端针对所述目标函数的第一函数管控属性;若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务;所述服务端若查询到所述第二函数管控属性,所述发送API调用请求至服务端,之后还包括:发送所述客户端的第二函数管控属性至所述服务端。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (11)
1.一种基于函数级别的权限管控方法,其特征在于,应用于服务端,所述方法包括:
接收客户端发送的API调用请求,基于所述API调用请求确定所访问的目标函数;
查询所述服务端针对所述目标函数的第一函数管控属性;
若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;
若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;
若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;
若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务。
2.根据权利要求1所述的基于函数级别的权限管控方法,其特征在于,所述对所述API调用请求进行服务级别的权限管控,包括:
查询所述服务端针对所述目标服务的第一权限管控属性;
若未查询到所述第一权限管控属性,将所述API调用请求路由至所述目标服务;
若查询到所述第一权限管控属性,查询所述客户端针对所述目标服务的第二权限管控属性;
若查询到所述第二权限管控属性,基于所述第一权限管控属性与所述第二权限管控属性,对所述API调用请求进行权限校验得到第二权限校验结果;
若所述第二权限校验结果为有权限,将所述API调用请求路由至所述目标服务。
3.根据权利要求2所述的基于函数级别的权限管控方法,其特征在于,所述查询所述客户端针对所述目标服务的第二权限管控属性,包括:
基于所述客户端发送的套接字第一Socket,查询所述客户端针对所述目标服务的第二权限管控属性;
其中,所述第一Socket与所述客户端自身的第二Socket之间存在引用,所述第一Socket存储有所述第一权限管控属性,所述第二Socket存储有所述第二权限管控属性,以使所述服务端基于所述第一Socket可查询所述第二权限管控属性。
4.根据权利要求2所述的基于函数级别的权限管控方法,其特征在于,所述第一权限管控属性是基于如下方式生成:
获取配置在所述目标服务对应的文件上的扩展属性;
基于所述扩展属性,确定查找哈希表的第一关键字;
若基于所述第一关键字在所述哈希表中查找得到所述第一关键字,将所述第一关键字在所述哈希表中的位置确定为所述第一权限管控属性;
若基于所述第一关键字在所述哈希表中未查找得到所述第一关键字,将所述第一关键字插入所述哈希表,并将所述第一关键字在所述哈希表中的插入位置确定为所述第一权限管控属性。
5.根据权利要求1至4中任一项所述的基于函数级别的权限管控方法,其特征在于,所述查询所述服务端针对所述目标函数的第一函数管控属性,包括:
基于所述目标函数确定文件名;
查询所述文件名对应的目标文件;
若查询到所述目标文件,查询所述目标文件是否配置有所述第一函数管控属性;
若未查询到所述目标文件,则未查询到所述第一函数管控属性;
所述第一函数管控属性是基于如下方式配置:
确定待配置所述第一函数管控属性的目标函数,基于所述目标函数确定文件名;
创建所述文件名对应的目标文件;
为所述目标文件配置所述第一函数管控属性,以使所述第一函数管控属性为所述目标文件的扩展属性。
6.一种基于函数级别的权限管控方法,其特征在于,应用于客户端,所述方法包括:
发送API调用请求至服务端,以供所述服务端对所述API调用请求进行权限校验;
其中,所述服务端是基于如下方式对所述API调用请求进行权限校验:
基于所述API调用请求确定所访问的目标函数;
查询所述服务端针对所述目标函数的第一函数管控属性;
若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;
若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;
若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;
若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务;
所述服务端若查询到所述第二函数管控属性,所述发送API调用请求至服务端,之后还包括:
发送所述客户端的第二函数管控属性至所述服务端。
7.一种基于函数级别的权限管控装置,其特征在于,部署于服务端,所述装置包括:
请求接收模块,用于接收客户端发送的API调用请求,基于所述API调用请求确定所访问的目标函数;
第一查询模块,用于查询所述服务端针对所述目标函数的第一函数管控属性;
权限管控模块,用于若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;
第二查询模块,用于若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;
权限校验模块,用于若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;
请求路由模块,用于若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务。
8.一种基于函数级别的权限管控装置,其特征在于,部署于客户端,所述装置包括:
请求发送模块,用于发送API调用请求至服务端,以供所述服务端对所述API调用请求进行权限校验;
其中,所述服务端是基于如下方式对所述API调用请求进行权限校验:
基于所述API调用请求确定所访问的目标函数;
查询所述服务端针对所述目标函数的第一函数管控属性;
若未查询到所述第一函数管控属性,对所述API调用请求进行服务级别的权限管控;
若查询到所述第一函数管控属性,查询所述客户端针对所述目标函数的第二函数管控属性;
若查询到所述第二函数管控属性,基于所述第一函数管控属性与所述第二函数管控属性,对所述API调用请求进行函数级别的权限校验得到第一权限校验结果;
若所述第一权限校验结果为有权限,将所述API调用请求路由至所述API调用请求所访问的目标服务;
所述服务端若查询到所述第二函数管控属性,所述装置还包括:
属性发送模块,用于发送所述客户端的第二函数管控属性至所述服务端。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述基于函数级别的权限管控方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述基于函数级别的权限管控方法。
11.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述基于函数级别的权限管控方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410573902.8A CN118133266A (zh) | 2024-05-10 | 2024-05-10 | 基于函数级别的权限管控方法、装置、设备、介质和产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410573902.8A CN118133266A (zh) | 2024-05-10 | 2024-05-10 | 基于函数级别的权限管控方法、装置、设备、介质和产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118133266A true CN118133266A (zh) | 2024-06-04 |
Family
ID=91242150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410573902.8A Pending CN118133266A (zh) | 2024-05-10 | 2024-05-10 | 基于函数级别的权限管控方法、装置、设备、介质和产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118133266A (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001052024A2 (en) * | 2000-01-14 | 2001-07-19 | Saba Software, Inc. | Method and apparatus for an improved security system mechanism in a business applications management system platform |
US20020178271A1 (en) * | 2000-11-20 | 2002-11-28 | Graham Todd D. | Dynamic file access control and management |
US20030014521A1 (en) * | 2001-06-28 | 2003-01-16 | Jeremy Elson | Open platform architecture for shared resource access management |
CN110674427A (zh) * | 2019-09-20 | 2020-01-10 | 北京达佳互联信息技术有限公司 | 响应网页访问请求的方法、装置、设备及存储介质 |
CN113449327A (zh) * | 2021-08-31 | 2021-09-28 | 统信软件技术有限公司 | 一种文件访问控制系统、方法及计算设备 |
WO2022160124A1 (zh) * | 2021-01-27 | 2022-08-04 | 华为技术有限公司 | 一种服务授权管理方法及装置 |
WO2023125480A1 (zh) * | 2021-12-27 | 2023-07-06 | 华为技术有限公司 | 访问对象的鉴权方法、装置及系统 |
CN116566704A (zh) * | 2023-05-24 | 2023-08-08 | 斑马网络技术有限公司 | 安全访问控制方法、系统、车控设备、车辆及介质 |
CN117494178A (zh) * | 2023-04-04 | 2024-02-02 | 马上消费金融股份有限公司 | 函数访问方法、设备及存储介质 |
CN117749432A (zh) * | 2023-12-01 | 2024-03-22 | 阳光人寿保险股份有限公司 | 权限校验方法、装置及电子设备 |
-
2024
- 2024-05-10 CN CN202410573902.8A patent/CN118133266A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001052024A2 (en) * | 2000-01-14 | 2001-07-19 | Saba Software, Inc. | Method and apparatus for an improved security system mechanism in a business applications management system platform |
US20020178271A1 (en) * | 2000-11-20 | 2002-11-28 | Graham Todd D. | Dynamic file access control and management |
US20030014521A1 (en) * | 2001-06-28 | 2003-01-16 | Jeremy Elson | Open platform architecture for shared resource access management |
CN110674427A (zh) * | 2019-09-20 | 2020-01-10 | 北京达佳互联信息技术有限公司 | 响应网页访问请求的方法、装置、设备及存储介质 |
WO2022160124A1 (zh) * | 2021-01-27 | 2022-08-04 | 华为技术有限公司 | 一种服务授权管理方法及装置 |
CN113449327A (zh) * | 2021-08-31 | 2021-09-28 | 统信软件技术有限公司 | 一种文件访问控制系统、方法及计算设备 |
WO2023125480A1 (zh) * | 2021-12-27 | 2023-07-06 | 华为技术有限公司 | 访问对象的鉴权方法、装置及系统 |
CN117494178A (zh) * | 2023-04-04 | 2024-02-02 | 马上消费金融股份有限公司 | 函数访问方法、设备及存储介质 |
CN116566704A (zh) * | 2023-05-24 | 2023-08-08 | 斑马网络技术有限公司 | 安全访问控制方法、系统、车控设备、车辆及介质 |
CN117749432A (zh) * | 2023-12-01 | 2024-03-22 | 阳光人寿保险股份有限公司 | 权限校验方法、装置及电子设备 |
Non-Patent Citations (2)
Title |
---|
周静;陈琛;: "基于异构网的一种数据安全模型设计", 计算机工程与科学, no. 12, 15 December 2019 (2019-12-15) * |
王九林;夏潇;王一帆;: "密码服务平台的设计与实现", 北京电子科技学院学报, no. 04, 15 December 2015 (2015-12-15) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10949528B1 (en) | System and method for secure, policy-based access control for mobile computing devices | |
EP3494682B1 (en) | Security-on-demand architecture | |
US9059974B2 (en) | Secure mobile app connection bus | |
US7568236B2 (en) | Methods and systems of managing concurrent access to multiple resources | |
EP2122476B1 (en) | Bidirectional dynamic offloading of tasks between a host and a mobile device | |
US8271608B2 (en) | System and method for a mobile cross-platform software system | |
US20180204010A1 (en) | Systems and Methods for Assessing the Compliance of a Computer Across a Network | |
US7739382B2 (en) | Dynamic extension of network-accessible services | |
KR101122787B1 (ko) | 보안관련 프로그래밍 인터페이스 | |
CN109688186B (zh) | 数据交互方法、装置、设备及可读存储介质 | |
JP5704517B2 (ja) | 機密情報漏洩防止システム、機密情報漏洩防止方法及び機密情報漏洩防止プログラム | |
CN112953745B (zh) | 服务调用方法、系统、计算机设备和存储介质 | |
CN109923547B (zh) | 程序行为监控设备、分布式对象生成管理设备、存储介质、以及程序行为监视系统 | |
CN112632573B (zh) | 智能合约执行方法、装置、系统、存储介质及电子设备 | |
CN112751866B (zh) | 一种网络数据传输方法及系统 | |
US11227032B1 (en) | Dynamic posture assessment to mitigate reverse engineering | |
US10242174B2 (en) | Secure information flow | |
CN107301053B (zh) | 图片配置方法、装置和电子终端 | |
CN118133266A (zh) | 基于函数级别的权限管控方法、装置、设备、介质和产品 | |
CN113839865B (zh) | 一种跨域调用服务的管理方法及系统 | |
US9652608B2 (en) | System and method for securing inter-component communications in an operating system | |
CN110505189B (zh) | 终端安全代理突破的识别方法、识别设备及存储介质 | |
WO2016177051A1 (zh) | 安全认证的方法及装置 | |
CN107247901B (zh) | Linux函数劫持方法及装置 | |
US11470048B1 (en) | Virtual private network environments for serverless code executions |
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 |