基于Linux操作系统的软件权限控制系统及方法转让专利
申请号 : CN202111615380.6
文献号 : CN114003941B
文献日 : 2022-04-05
发明人 : 徐建 , 徐叶 , 马桂才 , 杨诏钧 , 魏立峰 , 韩光 , 姬一文
申请人 : 麒麟软件有限公司
摘要 :
权利要求 :
1.基于Linux操作系统的软件权限控制系统,包括用户空间及内核空间,其特征在于:所述用户空间包括可视化授权程序模块及可视化安全策略管理工具,其中,可视化授权程序模块用于向用户提供可视化的动态授权界面,并将用户的授权选择结果写入内核空间;
可视化安全策略管理工具用于显示当前操作系统安装的所有软件包及其权限,并向内核空间下发软件授权策略规则;
所述内核空间包括安全子系统hooks函数模块、安全文件系统模块、内核策略管理模块及安全域转换模块,其中,
安全子系统hooks函数模块与用户空间的可视化授权程序模块连接,用于在程序运行过程中遇到权限申请时,通过内核调用核外可视化授权程序模块引导用户选择授权策略;
并用于基于应用程序中每个软件包的唯一身份标识及用户设置的策略规则对每个软件包进行权限审核及安全域转换;
安全域转换模块与安全子系统hooks函数模块连接,用于提供安全域转换接口;
安全文件系统模块与内核策略管理模块及用户空间的可视化授权程序模块连接,用于从可视化授权程序模块中接收用户的授权选择结果,并将其写入内核策略管理模块中;
内核策略管理模块同时与用户空间的可视化安全策略管理工具连接,用于从可视化安全策略管理工具中接收软件授权策略规则;
安全文件系统模块同时与安全子系统hooks函数模块连接,用于在安全子系统hooks函数模块通过内核调用核外可视化授权程序模块引导用户选择授权策略时,通过安全文件系统模块向用户传递数据。
2.如权利要求1所述的基于Linux操作系统的软件权限控制系统,其特征在于:软件包的唯一身份标识包括主体安全标签及客体安全标签,其中,主体安全标签仅包括主体软件标识,或同时包括主体软件标识及主体解释器标识;
客体安全标签包括客体软件标识、客体解释器标识、设备类型标识及特殊文件标识;或包括客体软件标识、设备类型标识及特殊文件标识;
其中,主体软件标识及客体软件标识为对软件进行权限控制的唯一标识;主体解释器标识及客体解释器标识用于在一般性安全域转换规则无法适用的场景下提供正确的安全域转换规则。
3.如权利要求2所述的基于Linux操作系统的软件权限控制系统,其特征在于:安全域转换模块提供三种安全域转换规则:一般性安全域转换规则,用于在进程的主体安全标签中没有包含解释器标识情况下适用;
通用解释器安全域转换规则,用于在进程的主体安全标签中包含通用解释器标识情况下适用;
特殊解释器安全域转换规则,用于在进程的主体安全标签中包含特殊解释器标识情况下适用。
4.如权利要求2所述的基于Linux操作系统的软件权限控制系统,其特征在于:软件包的权限包括:
执行权限,确定用户是否有权限运行相应软件;
联网权限,确定相应软件在运行过程中是否有连接互联网的权限;
设备访问权限,确定相应软件在运行过程中是否有访问某种设备的权限;
文件操作权限,确定相应软件在运行过程中是否有操作某个特殊文件或者目录的权限。
5.如权利要求1所述的基于Linux操作系统的软件权限控制系统,其特征在于:安全文件系统模块同时与用户空间的可视化安全策略管理工具连接,供可视化安全策略管理工具通过安全文件系统模块获取或设置内核空间安全子系统的各功能状态。
6.如权利要求1所述的基于Linux操作系统的软件权限控制系统,其特征在于:安全子系统hooks函数模块同时与内核空间的应用软件内核进程连接,用于在应用软件内核进程需要进行权限审核时,提供钩子函数对应用软件进行权限审核,允许或拒绝应用软件内核进程获取相关的权限。
7.如权利要求6所述的基于Linux操作系统的软件权限控制系统,其特征在于:应用软件内核进程与应用软件用户空间连接,用于供应用软件用户空间程序在实现包括但不限于进程启动、网络连接、文件访问及设备访问功能时提供系统调用的接口。
8.一种软件权限控制方法,其特征在于,包括如下步骤:步骤S1:程序启动,内核策略管理模块接收可视化安全策略管理工具下发的软件授权策略规则;
步骤S2:应用程序启动过程中,安全子系统hooks函数模块中的安全域初始化相关钩子函数读取可执行文件客体安全标签,并根据安全域转换规则完成客体安全标签向主体安全标签转换的动作;
步骤S3:在应用程序的内核空间判断某程序需要询问权限时,安全子系统hooks函数模块通过内核调用核外可视化授权程序模块引导用户选择授权策略,安全文件系统模块将可视化授权程序模块获取的用户对于运行中的软件包所设置的策略规则下发给内核策略管理模块;
步骤S4:内核策略管理模块将软件授权策略规则、每个软件包的唯一身份标识以及与唯一身份标识对应的用户设置的策略规则存储在访问向量缓存中;
步骤S5:安全子系统hooks函数模块调取内核策略管理模块接口进行相关权限审核,调用安全域转换模块接口实现安全域转换;
所述步骤S2中,主体安全标签仅包括主体软件标识,或同时包括主体软件标识及主体解释器标识;
客体安全标签包括客体软件标识、客体解释器标识、设备类型标识及特殊文件标识;或包括客体软件标识、设备类型标识及特殊文件标识;
其中,主体软件标识及客体软件标识为对软件进行权限控制的唯一标识;主体解释器标识及客体解释器标识用于在一般性安全域转换规则无法适用的场景下提供正确的安全域转换规则;
安全域转换规则通过下述三种转换规则完成客体安全标签向主体安全标签转换的动作:
一般性安全域转换规则,用于在进程的主体安全标签中没有包含解释器标识情况下适用;
通用解释器安全域转换规则,用于在进程的主体安全标签中包含通用解释器标识情况下适用;
特殊解释器安全域转换规则,用于在进程的主体安全标签中包含特殊解释器标识情况下适用。
说明书 :
基于Linux操作系统的软件权限控制系统及方法
技术领域
背景技术
户的需求,因为在这种安全权限系统的保护下,一旦root权限被非法获取,相当于获取了系
统的一切权限和隐私数据。因此越来越多的桌面操作系统会给用户提供基于MAC和RBAC的
安全权限控制系统,比如selinux,但是由于其本身设计的初衷是面向专业的安全部门和技
术人员的,并不是普通用户,其策略配置复杂,技术门槛高,维护成本高,对普通用户不友好
等特点,限制了selinux在普通用户中的推广和使用。
Mandatory Access Control),同时也是一种基于角色的访问控制系统(RBAC:Role‑Based
Access Control)。它通过制定用户,角色,类型三者相关的策略,可以对程序行为进行非常
精确的权限控制。selinux主要由内核空间的安全策略管理器,安全文件系统,访问向量缓
存,hooks函数,以及用户空间的客体管理器,安全工具等模块组成。selinux不允许默认的
安全策略,它通过使用安全工具对系统中的每一个程序及其相关文件制定安全策略,没有
相关安全标签的文件是不允许被执行或访问的。它制定的所有策略被安全工具编译成二进
制策略文件,在系统启动时被加载进内核的安全策略管理器中。软件运行过程中在内核中
触发hooks函数,在hooks函数中审核软件权限,从而实现了对软件的权限控制。
fsserver_t afs_logfile_t:file { append create getattr ioctl link lock map
open read rename setattr unlink write }。仅在这一条策略中对afs_logfile_t文件类
型的操作权限就使用了十三种之多。这些操作权限对于普通用户来说很难直观地理解(比
如ioctl lock map link unlink等),而是需要精通Linux操作系统的技术人员才能完全理
解其内涵,才能设计出合适的权限控制策略。
略规则极其繁复。例如在selinux的strict策略下,策略规则总数约为10万条,这么庞大的
规则配置总量,甚至连专业的linux服务器运维人员也很难完全掌握。令普通用户望而却
步。图1详细列举了一个实际使用的selinux的strict策略规则摘要,主要数据列举如下:
418种权限,1024种分类,4229种类型,113867条allow规则,17951条Dontaudit规则,9584种
类型转换规则。而且修改这些规则中的任何一条,都需要对相关联的很多条规则进行重新
验证测试,确保权限控制没有问题,维护工作量十分巨大。
默认策略中的程序,就需要自己制定新程序的策略,并使用命令行策略配置工具将其写入
策略列表中,整个过程需要用户自己操作,没有自动化的工具。
数字,加之角色和类型的数量及其庞大,导致需要建立庞大的hash表,查找效率低。
找相关规则,进行权限审核,查找效率很低。
规则总数在9000条左右,查找效率低。
发明内容
略;并用于基于应用程序中每个软件包的唯一身份标识及用户设置的策略规则对每个软件
包进行权限审核及安全域转换;
中;
全文件系统模块向用户传递数据。
安全域转换规则。
状态。
或拒绝应用软件内核进程获取相关的权限。
接口。
安全标签转换的动作;
将可视化授权程序模块获取的用户对于运行中的软件包所设置的策略规则下发给内核策
略管理模块;
法。
附图说明
具体实施方式
安全策略管理工具,以提供一套简便、易用、高效的基于MAC和RBAC的权限控制方法及系统。
包进行策略规则制定,大大简化了策略规则。
统和程序的丰富性和复杂性,通过客体标签中的解释器标识控制某些特殊场景下的安全域
转换。
程序中添加钩子函数,可以实现新安装软件包的软件标识(SID)的自动分配和自动生成客
体标签。通过可视化授权程序,以弹出软件动态授权界面的方式,引导用户进行新安装软件
的权限状态设置。整个系统用户体验十分简便易用。
文件访问或设备访问等时,通过系统调用访问内核空间资源,进而在内核空间中,在获取某
种权限时,调用安全子系统hooks函数模块的钩子函数进行权限审核。用户空间包括可视化
授权程序模块及可视化安全策略管理工具,内核空间包括安全子系统hooks函数模块、安全
文件系统模块、内核策略管理模块及安全域转换模块,各模块的作用及相互之间的配合关
系详述如下。
单的界面开关选择动作,即可完成对软件包的授权或取消授权动作。可视化安全策略管理
工具通过核内外通信机制向内核策略管理模块下发软件授权策略规则。
访问权限、屏幕截图权限等等细化的功能权限。
和基础库文件的操作权限。对用户隐私目录的操作权限等定制化的功能权限。
件的某个权限。采用sqlite3存储软件标识及其授权策略规则,采用netlink通信机制,向内
核策略管理模块下发软件授权策略规则。
用安全子系统的某个权限审核钩子函数时,发现该权限设置为询问模式,则调用用户空间
的可视化授权程序模块,提示用户进行授权选择,用户选择的结果通过安全文件系统模块
写入内核策略管理模块的访问向量缓存中,从而更新该软件的授权状态。
给内核策略管理模块。
安全策略管理工具在系统启动时主动下发软件策略,下发的策略可以是允许、阻止、询问。
可视化授权程序模块是在询问模式下,当软件运行时需要申请某权限时,由内核空间通过
可视化授权程序模块弹框提示用户需要申请某种权限,供用户选择是否授权,是被动的。
为安全子系统hooks函数模块提供审核软件授权的接口。在操作系统启动过程中,用户空间
的可视化安全策略管理工具下发用户设置的软件授权策略规则,内核策略管理模块接收数
据后,将其存储在访问向量缓存中。软件进程在运行过程中,触发安全子系统的hooks函数,
在权限审核的hooks函数中,会查询访问向量缓存,以确定该进程是否具有该项权限。
解释器标识也是在这个阶段写入的。后续用户使用过程中安装的软件包,是通过软件包管
理程序,在安装软件包的过程中,调用可视化安全策略管理工具提供的接口,分配唯一身份
标识,并写入文件的客体安全标签中。
安全域转换时,调用安全域转换模块接口实现安全域转换。
行相关权限审核,允许或拒绝应用软件内核进程获取相关的权限。
权策略。
详细介绍见下文安全域转换模块的相关描述。
文件不是可执行文件,不具备成为主体进程的可能。纯客体文件存在的目的就是被主体访
问。
一个设备节点上打上一个设备类型标识,比如我们给一个摄像有设备节点文件打上摄像头
类型标识,那么一个软件只有获取摄影头访问权限,它才能访问这个设备节点文件。所以内
核策略管理模块,写的策略是图片查看器(对应的SID)可以查看图片这种特殊文件标识。当
图片查看器进程真正去访问一个带图片特殊文件标识的文件时,在内核的安全子系统
hooks函数模块的跟文件访问权限检查的钩子函数中,就会查询你这个SID是否具备图片查
看权限。
三种不同的安全域转换规则:
进程组id,父进程id,父进程的进程组id,进程组的父进程id,等一系列id的继承关系,形成
了一系列普遍适用的一般性安全域转换规则。
的客体可执行文件的安全标签中的软件标识,作为安全域转换后的主体软件标识。
殊解释器类型,它们的安全域转换规则可能不尽相同。举例说明,虚拟机类进程主体可以归
结为一类特殊解释器标识类型,此类进程在虚拟机加载中运行的软件程序时,安全域需要
转换为该软件程序的软件标识,以便实现对该软件程序的权限控制。特殊的地方在于虚拟
机加载的程序文件路径通常是虚拟化的,并不代表其在主机系统中的真实的绝对路径(例
如在Linux操作系统虚拟化运行windows程序时,客体可执行文件的路径通常是C:/program
files/xxx/xxx.exe,并不代表其在Linux操作系统中的真实绝对路径),所以需要通过具体
分析虚拟机路径跟主机路径的映射关系,还原出软件程序在主机中的绝对路径,从而获取
到可执行文件的客体标签,实现安全域的转换。在本发明中通过解析该进程的环境变量,从
cwd,cmdline,或者一些虚拟机专用的环境变量(例如XX_BOTTLE)中提取信息,还原可执行
文件的真实绝对路径。
传递。用户空间的可视化安全策略管理工具通过安全文件系统模块,可以获取内核空间安
全子系统的各功能状态,可以设置内核空间安全子系统各功能的状态。可视化授权程序模
块通过安全文件系统模块,可以将某个软件授权策略规则写入内核策略管理模块的访问向
量缓存中。
的权限申请的详细数据通过安全文件系统模块传递给可视化授权程序模块,包括授权的软
件包名称,SID,申请何种权限等信息。
USB存储设备类型,6以上预留。
为配置文件目录,8为系统库目录,9为系统日志目录,10为系统引导目录,11以上预留。
户目录操作权限,文档目录操作权限,图片目录操作权限,音频目录操作权限,下载目录操
作权限,桌面目录操作权限,配置文件目录操作权限,系统库目录操作权限,系统日志目录
操作权限,系统引导目录操作权限。
软件标识作为该进程的主体安全标签中的软件标识;
标签中的软件标识。
签中的软件标识。
软件标识作为主体安全标签中的软件标识。其中一种将虚拟机可执行文件路径转换为主机
系统真实绝对路径的方法如下:解析该进程的环境变量字段,查找cwd和cmdline两个环境
变量,其中cmdline的值是虚拟机中的虚拟化的可执行文件路径(例如C:/Program Files/
xxx/xxx.exe),cwd的值是主机系统中可执行文件的运行目录(/home/xxx/vm/xxx/xxx/),
使用cmdline的后缀xxx.exe,和cwd的全部或者部分路径,可以完整的还原出该可执行文件
在主机系统中的绝对路径。从而获取该可执行文件的客体标签的软件标识。
地理解其内涵,并且很方便地设置某个软件的权限策略规则。
则,能够作为绝大多数情况下的软件默认安全域转换规则。只有在默认安全域转换规则失
效的情况下我们会设置特殊解释器标识,设计特殊的安全域转换规则。目前特殊解释器安
全域转换规则中已经包含了虚拟机等特殊场景,因此只有在现有的特殊解释器安全域转换
规则都无效的情况下,才最终需要考虑重新设计转换规则。这大大减小了用户需要自己设
置安全域转换规则的可能性,从而简化了安全域转换规则的策略设置。
规则作为默认转换规则,在极少数情况下,程序需要设计特殊的安全域转换规则。这样的方
案,大幅地减少了安全域转换规则,节省了策略规则查找时间,减少了性能开销。
改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。