本发明涉及访问权限管理技术领域,特别是涉及一种基于会话的权限控制方法和系统。
背景技术:
随着科学技术的发展,越来越多的互联网用户通过远程访问的方式来获取外部网络的共享资源。想要实现远程访问,就需要用户的客户端通过远程登录的方式连接到服务器,然后由服务器调取数据库中的相应信息返回至客户端。
然而,在互联网应用中,服务器为不同的用户提供不同的服务,即不同的客户端具有不同的相应访问权限。各客户端只能在自身的访问权限范围内获取数据库中的信息。通常情况下,当用户在进行远程访问时,服务器进行系统调用权限的判断,通常情况下直接作用于文件系统的数据(文件和目录)和数据库连接,所谓的系统调用指的是进程陷入操作系统内核执行系统功能的调用,如创建文件、修改文件和执行程序。而系统权限通常指的是系统调用时的权限,典型情况下,权限通常由文件属性和进程运行的所属用户组决定。当进程执行系统调用时就会受到进程用户和文件的属性的局限。
因而,如何实现当进程执行系统调用时不局限于进程用户和文件的属性而进行权限的控制,是本领域技术人员目前需要解决的技术问题。
技术实现要素:
本发明的目的是提供一种基于会话的权限控制方法和系统,可以实现当进程执行系统调用时不局限于进程用户和文件的属性而进行权限的控制。
为解决上述技术问题,本发明提供了如下技术方案:
一种基于会话的权限控制方法,包括:
在应用程序的进程进行系统调用时,获取该系统调用所属的会话;
根据所述会话获取对应的会话权限;
根据各所述会话对应的会话权限控制当前系统调用。
优选地,所述根据所述会话获取对应的会话权限,包括:
识别所述会话所属的角色的身份信息;
根据所述角色的身份信息获取该角色的权限配置。
优选地,所述识别所述会话所属的角色的身份信息,包括:
获取所述会话发起者的ip地址;
根据所述ip地址获取所述会话所述的角色的身份信息。
优选地,所述识别所述会话所属的角色的身份信息,包括:
预先建立中间代理;
通过所述中间代理获取所述会话的请求内容;
通过所述中间代理判断所述请求内容中是否包含预设的代表该会话所述的角色的身份的认证信息;
若是,则通过所述中间代理识别所述认证信息对应的角色的身份信息。
优选地,所述识别所述会话所属的角色的身份信息,包括:
预先建立用于预设角色通讯的虚拟通讯网络隧道;
对所述会话的来源隧道进行识别,以判断所述会话所属的角色的身份信息。
一种基于会话的权限控制系统,包括:
第一获取模块,用于在应用程序的进程进行系统调用时,获取该系统调用所属的会话;
第二获取模块,用于根据所述会话获取对应的会话权限;
控制模块,用于根据各所述会话对应的会话权限控制当前系统调用。
优选地,所述第二获取模块包括:
识别单元,用于识别所述会话所属的角色的身份信息;
权限获取单元,用于根据所述角色的身份信息获取该角色的权限配置。
优选地,所述识别单元包括:
第一获取子单元,用于获取所述会话发起者的ip地址;
第二获取子单元,用于根据所述ip地址获取所述会话所述的角色的身份信息。
优选地,所述识别单元包括:
中间代理子单元,用于获取所述会话的请求内容,并判断所述请求内容中是否包含预设的代表该会话所述的角色的身份的认证信息,并在判定所述请求内容中包含认证信息时,识别所述认证信息对应的角色的身份信息。
优选地,所述识别单元包括:
隧道建立子单元,用于预先建立用于预设角色通讯的虚拟通讯网络隧道;
识别子单元,用于对所述会话的来源隧道进行识别,以判断所述会话所属的角色的身份信息。
与现有技术相比,上述技术方案具有以下优点:
本发明实施例所提供的一种基于会话的权限控制方法,包括:在应用程序的进程进行系统调用时,获取该系统调用所属的会话;根据会话获取对应的会话权限;根据各会话对应的会话权限控制当前系统调用。对于应用程序的进程对系统调用引入了会话权限的检查来对于服务器中进行系统调用时的权限进行检查校验,以控制应用程序的权限,实现了当进程执行系统调用时不局限于进程用户和文件的属性而进行权限的控制。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种具体实施方式所提供的基于会话的权限控制方法流程图;
图2为本发明一种具体实施方式所提供的基于会话的权限控制系统结构示意图。
具体实施方式
本发明的核心是提供一种基于会话的权限控制方法和系统,可以实现当进程执行系统调用时不局限于进程用户和文件的属性而进行权限的控制。
为了使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施方式的限制。
请参考图1,图1为本发明一种具体实施方式所提供的基于会话的权限控制方法流程图。
本发明的一种具体实施方式提供了一种基于会话的权限控制方法,包括:
s11:在应用程序的进程进行系统调用时,获取该系统调用所属的会话;
s12:根据会话获取对应的会话权限;
s13:根据各会话对应的会话权限控制当前系统调用。
在本实施方式中,当客户端通过预设的应用程序来访问服务器,以获取数据库中的数据时,客户端和服务器之间会建立关于系统调用的会话。不同的客户端根据自身角色的不同而具有不同的权限配置,因此,根据会话即可获取对应的会话权限。只有当系统调用的数据通过会话权限的检查时,此时才执行当前系统调用,当当前系统调用执行完成后进行系统调用返回,执行新的系统调用。
其中,会话权限即表示了该会话对应的角色的访问权限,从而在判断系统调用是否符合权限时,无需再去判断系统调用的文件属性和进行运行的所属用户的属性,极大地简化了权限的判断过程。对于应用程序的进程对系统调用引入了会话权限,来控制应用程序的权限,实现了当进程执行系统调用时不局限于进程用户和文件的属性而进行权限的控制。
需要说明的是,在本文中的整个通讯服务过程中,系统调用主要包括应用程序对磁盘文件系统进行文件读写系统调用,和应用程序对数据库程序的数据库连接读写的系统调用。在这两种情况下进行系统调用时进行权限的检查判断。
还需要说明的是,系统调用还包括数据库程序对数据库数据进行数据读写的系统调用,由于在技术上权限检查的意义不大,因此,在本实施方式中,可以不对此处的系统调用进行权限检查判断。
在本发明的一种实施方式中,根据会话获取对应的会话权限,包括:识别会话所属的角色的身份信息;根据角色的身份信息获取该角色的权限配置。
在本实施方式中,角色即指用户身份,在系统中一个身份拥有一组操作权限配置。要想知道客户端的权限,在本实施方式中就通过客户端建立的会话所属的角色的身份信息,即识别发起该该会话的客户端的身份,只有了解了该客户端的身份,服务器才能赋予该客户端对应的权限来进行系统调用。
在本发明的一种实施方式中,识别会话所属的角色的身份信息,包括:获取会话发起者的ip地址;根据ip地址获取会话的角色的身份信息。
在本实施方式中,通过读取会话的发起者的ip地址来识别发起会话的客户端的身份。如当有两个客户端访问服务器时,客户端a的ip地址为192.168.1.1,其身份为管理员,权限为“所有”;客户端b的ip地址为123.45.67.89.其身份为普通用户,权限为“部分”。则当某一客户端访问服务器并发起会话时,服务器读取发起会话的客户端的ip地址,根据其ip地址即可获取该客户端的身份信息,如读取的是客户端a的ip地址,则判定此时的客户端为管理员,相应地,即可服务该客户端对应的权限来控制当前的系统调用。由于各客户端均具有一个唯一的、不同于其他客户端的ip地址,因此,通过识别发起会话的客户端的ip地址,即可识别客户端的身份,并调取对应的权限来控制系统调用。
在本发明的另一种实施方式中,识别会话所属的角色的身份信息,包括:预先建立中间代理;通过中间代理获取会话的请求内容;通过中间代理判断请求内容中是否包含预设的代表该会话所述的角色的身份的认证信息;若是,则通过中间代理识别认证信息对应的角色的身份信息。
在本实施方式中,使用二次认证来进行角色的识别。即在二次认证中引入中间代理,使得所有到达服务器的数据先经过中间代理,中间代理对连接进行认证后再传递给服务器进行请求。
具体地,以上述实施方式中以会话发起者的ip地址来获取会话的角色的身份信息为例,通常情况下一台计算机对应一个ip地址,也就是说通过某一台计算机进行系统调用时,通过该计算机的ip地址可以识别出该计算机进行系统调用时的所有权限。但是当用户使用其他的计算机时,由于新的计算机的ip地址和原计算机ip地址不同,此时就难以识别操作者的权限,因此,在本实施方式中采用了二次认证的方法,通过中间代理来对当前计算机的请求内容进行分析,以实现对当前计算机的用户的身份进行认证,这样使得用户无论是在原先预设的计算机还是其他计算机上进行操作时,服务器均可识别出用户的身份,从而判断出其权限。
客户端向中间代理发送请求内容,中间代理返回需要认证的信号,客户端再将带认证信息的请求内容发送至中间代理,在中间代理通过认证后,再将请求内容和相关的角色信息发送至服务器,服务器将答复内容返回至客户端。在这个过程中,由中间代理来识别发起会话的客户端的身份。
在本发明的另一种实施方式中,识别会话所属的角色的身份信息,包括:预先建立用于预设角色通讯的虚拟通讯网络隧道;对会话的来源隧道进行识别,以判断会话所属的角色的身份信息。
在本实施方式中,采用隧道方式进行角色识别。在该过程中,客户端通过与服务器建立虚拟专用通讯网络隧道,通过区分来源隧道来进行角色的识别。如当客户端角色分为管理员和普通用户时,管理员客户端和服务器进行通讯的隧道为虚拟专用通讯网络隧道,而普通用户客户端和服务器进行通讯的隧道为普通网络访问,这样,当客户端和服务器建立会话时,只需识别会话的来源隧道即可判定会话所属的角色的身份信息。
请参考图2,图2为本发明一种具体实施方式所提供的基于会话的权限控制系统结构示意图。
相应地,本发明一种实施方式还提供了一种基于会话的权限控制系统,包括:第一获取模块21,用于在应用程序的进程进行系统调用时,获取该系统调用所属的会话;第二获取模块22,用于根据会话获取对应的会话权限;控制模块23,用于根据各会话对应的会话权限控制当前系统调用。
进一步地,第二获取模块包括:识别单元,用于识别会话所属的角色的身份信息;权限获取单元,用于根据角色的身份信息获取该角色的权限配置。
在本实施方式中,当客户端通过预设的应用程序来访问服务器,以获取数据库中的数据时,客户端和服务器之间会建立关于系统调用的会话。不同的客户端根据自身角色的不同而具有不同的权限配置,因此,根据会话即可获取对应的会话权限。只有当系统调用的数据通过会话权限的检查时,此时才执行当前系统调用,当当前系统调用执行完成后进行系统调用返回,执行新的系统调用。
其中,会话权限即表示了该会话对应的角色的访问权限,在本实施方式中,第一获取模块获取进行系统调用时系统调用所属的会话,即获取客户端和服务器建立的会话,通过第二获取模块获取会话对应的会话权限,即获取客户端的权限配置,从而在判断系统调用是否符合权限时,无需再去判断系统调用的文件属性和进行运行的所属用户的属性,极大地简化了权限的判断过程。对于应用程序的进程对系统调用引入了会话权限,来控制应用程序的权限,实现了当进程执行系统调用时不局限于进程用户和文件的属性而进行权限的控制。
在本发明的一种实施方式中,识别单元包括:第一获取子单元,用于获取会话发起者的ip地址;第二获取子单元,用于根据ip地址获取会话的角色的身份信息。在本实施方式中,通过会话的对端ip进行角色的识别,当该会话的发起者的ip地址和角色的配置相匹配时,该会话识别是该角色。
在本发明的另一种实施方式中,识别单元包括:中间代理子单元,用于获取会话的请求内容,并判断请求内容中是否包含预设的代表该会话所述的角色的身份的认证信息,并在判定请求内容中包含认证信息时,识别认证信息对应的角色的身份信息。
在本实施方式中,通过建立中间代理子单元来使用二次认证进行角色的识别。即在二次认证中引入中间代理,使得所有到达服务器的数据先经过中间代理,中间代理对连接进行认证后再传递给服务器进行请求。
在本发明的另一种实施方式中,识别单元包括:隧道建立子单元,用于预先建立用于预设角色通讯的虚拟通讯网络隧道;识别子单元,用于对会话的来源隧道进行识别,以判断会话所属的角色的身份信息。
在本实施方式中,采用隧道方式进行角色识别。在该过程中,客户端通过与服务器建立虚拟专用通讯网络隧道,通过区分来源隧道来进行角色的识别。如当客户端角色分为管理员和普通用户时,管理员客户端和服务器进行通讯的隧道为虚拟专用通讯网络隧道,而普通用户客户端和服务器进行通讯的隧道为普通网络访问,这样,当客户端和服务器建立会话时,只需识别会话的来源隧道即可判定会话所属的角色的身份信息。
综上所述,本发明所提供的基于会话的权限控制方法和系统,对于应用程序的进程对系统调用引入了会话权限的检查来对于服务器中进行系统调用时的权限进行检查校验,以控制应用程序的权限,实现了当进程执行系统调用时不局限于进程用户和文件的属性而进行权限的控制。
以上对本发明所提供的一种基于会话的权限控制方法和系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。