CN107203715A - 执行***调用的方法及装置 - Google Patents
执行***调用的方法及装置 Download PDFInfo
- Publication number
- CN107203715A CN107203715A CN201610159286.7A CN201610159286A CN107203715A CN 107203715 A CN107203715 A CN 107203715A CN 201610159286 A CN201610159286 A CN 201610159286A CN 107203715 A CN107203715 A CN 107203715A
- Authority
- CN
- China
- Prior art keywords
- called
- executor
- access rights
- categories
- calls
- 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
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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- 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
- G06F21/6281—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 at program execution time, where the protection is within the operating system
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
- Telephonic Communication Services (AREA)
Abstract
本申请公开了一种执行***调用的方法及装置,同时公开了另一种执行***调用的方法及装置。所述第一种执行***调用的方法包括:接收执行***调用的请求;判断所述***调用的执行者是否具有对所述***调用的访问权限;若具有,则允许所述执行者执行所述***调用。本申请提供的上述方法,在判断某一***调用能否被执行时,是以执行者是否具有相应的访问权限作为依据,即,通过对执行者的授权达到限制***调用的目的,从而实现了基于执行者身份的差异化控制,而且并没有对开放哪些***调用加以限制,因此可以灵活地满足用户空间对***调用的合理访问需求。
Description
技术领域
本申请涉及***调用技术,具体涉及一种执行***调用的方法及装置。本申请同时涉及另一种执行***调用的方法及装置。
背景技术
为了保证安全性,操作***(例如Linux)的运行空间通常可以被划分为内核空间与用户空间,它们各自运行在不同的级别中,逻辑上相互隔离。应用程序在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间函数。当用户程序需要获得***服务或者访问***核心功能时,这时就需要执行***调用(syscall)。
执行***调用时通常通过软中断机制陷入内核,即进入内核空间,然后才能执行相应的***服务例程。从逻辑上来说,***调用可被看成是内核与用户空间交互的接口:把来自用户空间的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。
在具体应用中,操作***通常提供大量的***调用,这些***调用都暴露在用户空间,一方面在大多数应用程序的整个生命周期内,很多***调用并没有被调用,另一方面,暴露在用户空间的***调用有可能存在各种安全漏洞,如果被恶意利用,则可能为整个***带来安全隐患,因此有必要对应用程序执行***调用加以限制。例如,Linux***支持一种简洁的Seccomp(securecomputing—安全计算模式)沙箱机制,提供了一种安全运行模式,在该模式下的应用程序进程只能调用4种***调用,即read、write、exit和sigreturn,否则应用程序便会被终止。
Seccomp沙箱机制虽然实现了对***调用的限制,但是由于其对所有被控制进程是一视同仁的,不能做到差异化控制;而且由于仅开放了read、write、exit、sigreturn这4个***调用,不具有可扩展性,无法满足用户空间对***调用的合理访问需求。
发明内容
本申请实施例提供一种执行***调用的方法及装置,以解决现有技术在对***调用进行限制时无法实现差异化控制、以及开放的***调用数量无法满足访问需求的问题。本申请实施例还提供另一种执行***调用的方法及装置。
本申请提供一种执行***调用的方法,包括:
接收执行***调用的请求;
判断所述***调用的执行者是否具有对所述***调用的访问权限;
若具有,则允许所述执行者执行所述***调用。
可选的,所述判断所述***调用的执行者是否具有对所述***调用的访问权限,包括:
获取所述***调用所属类别;
获取所述执行者对各类别***调用的访问权限;
根据所述获取的信息,判断所述执行者是否具有对所述***调用所属类别的访问权限;
其中,所述***调用所属类别、以及所述执行者对各类别***调用的访问权限是预先设定的。
可选的,在所述接收执行***调用的请求之前,执行下述操作:
根据预先划分的***调用类别,指定所述***调用所属类别;
设置所述执行者对各类别***调用的访问权限。
可选的,所述执行者对各类别***调用的访问权限、以及所述***调用所属类别分别采用二进制比特串描述,其长度分别与***调用的类别数一致,所述两个二进制比特串中各比特位分别与相同序号的***调用类别相对应;其中,描述所述访问权限的二进制比特串中的每个比特位的值表示所述执行者是否具有对相应类别***调用的访问权限,描述所述***调用所属类别的二进制比特串中的每个比特位的值表示所述***调用是否属于相应类别,并且表示具有对相应类别***调用的访问权限的值、与表示所述***调用属于相应类别的值一致;
所述根据所述获取的信息,判断所述执行者是否具有对所述***调用所属类别的访问权限,包括:
将描述所述访问权限的二进制比特串与描述所述***调用所属类别的二进制比特串,逐位进行位运算;
根据运算结果判定所述执行者是否具有对所述***调用所属类别的访问权限。
可选的,描述所述访问权限的二进制比特串中的1,表示所述执行者具有对相应类别***调用的访问权限,0表示不具有;描述所述***调用所属类别的二进制比特串中的1,表示所述***调用属于相应类别,0表示不属于;
所述逐位进行位运算,包括:逐位执行按位与操作;
所述根据运算结果判定所述执行者是否具有对所述***调用所属类别的访问权限,包括:若执行结果不全为0,则判定所述执行者具有对所述***调用所属类别的访问权限。
可选的,所述设置所述执行者对各类别***调用的访问权限,采用如下方式实现:将所述执行者对各类别***调用的访问权限与其身份标识信息对应存储;
所述获取所述执行者对各类别***调用的访问权限,包括:根据所述执行者的身份标识信息获取所述执行者的所述访问权限。
可选的,所述身份标识信息包括:所述执行者的信任状信息。
可选的,采用如下方式获取所述身份标识信息:从所述执行者的运行上下文信息中获取其身份标识信息。
可选的,所述设置所述执行者对各类别***调用的访问权限,包括:
在创建所述执行者时,按照预设授权方案设置所述执行者对各类别***调用的访问权限;或者,用创建者对各类别***调用的访问权限设置所述执行者的相应访问权限。
可选的,所述设置所述执行者对各类别***调用的访问权限,还包括:
在创建所述执行者之后、在运行所述执行者之前,按照预设方式降低所述执行者对各类别***调用的访问权限。
可选的,所述按照预设方式降低所述执行者对各类别***调用的访问权限,包括:
根据所述执行者的身份类别以及***配置文件中针对所述身份类别的权限配置信息,降低所述执行者对各类别***调用的访问权限;和/或,
根据所述执行者所属应用程序的配置文件中的权限申明信息,降低所述执行者对各类别***调用的访问权限。
可选的,所述设置所述执行者对各类别***调用的访问权限,还包括:
所述执行者在运行过程中,在加载运行不可信代码之前降低其对各类别***调用的访问权限。
可选的,所述设置所述执行者对各类别***调用的访问权限,还包括:
在所述不可信代码运行完毕后,恢复所述执行者对各类别***调用的访问权限。
可选的,所述设置所述执行者对各类别***调用的访问权限,还包括:
所述执行者在运行过程中,在加载运行可信代码之前提高其对各类别***调用的访问权限。
可选的,在所述执行者运行之前,在设置所述执行者对各类别***调用的访问权限时,还相应设置所述执行者对各类别***调用的访问能力;所述执行者具有访问权限的***调用类别集合是其具有访问能力的***调用类别集合的子集;
所述提高其对各类别***调用的访问权限,包括:在所述执行者对各类别***调用的访问能力之内,提高所述执行者的访问权限。
可选的,在所述接收执行***调用的请求之后,包括:
根据所述***调用的相关信息,确定其是否对应于预设的虚拟***调用;
若是,则判断所述***调用的执行者是否具有对所述虚拟***调用的访问权限,并在具有时,允许所述执行者执行所述虚拟***调用;
若否,则执行所述判断所述***调用的执行者是否具有对所述***调用的访问权限的步骤。
可选的,所述***调用的相关信息,包括:***调用名称及参数值。
可选的,所述执行者包括:可独立运行的基本单元;所述可独立运行的基本单元包括:线程或者进程。
相应的,本申请还提供一种执行***调用的装置,包括:
请求接收单元,用于接收执行***调用的请求;
权限判断单元,用于判断所述***调用的执行者是否具有对所述***调用的访问权限;
执行允许单元,用于当所述访问权限判断单元的输出为是时,允许所述执行者执行所述***调用。
可选的,所述权限判断单元,包括:
类别获取子单元,用于获取所述***调用所属类别;
访问权限获取子单元,用于获取所述执行者对各类别***调用的访问权限;
判断执行子单元,用于根据所述获取的信息,判断所述执行者是否具有对所述***调用所属类别的访问权限。
可选的,所述装置还包括:
类别指定单元,用于在所述请求接收单元工作之前,根据预先划分的***调用类别,指定所述***调用所属类别;
权限设置单元,用于设置所述执行者对各类别***调用的访问权限。
可选的,所述判断执行子单元,具体用于将描述所述访问权限的二进制比特串与描述所述***调用所属类别的二进制比特串,逐位进行位运算,并根据运算结果判定所述执行者是否具有对所述***调用所属类别的访问权限。
可选的,所述判断执行子单元,具体用于将描述所述访问权限的二进制比特串与描述所述***调用所属类别的二进制比特串,逐位执行按位与操作,并当执行结果不全为0时判定所述执行者具有对所述***调用所属类别的访问权限。
可选的,所述权限设置单元,具体用于将所述执行者对各类别***调用的访问权限与其身份标识信息对应存储;
所述访问权限获取子单元,具体用于根据所述执行者的身份标识信息获取所述执行者的所述访问权限。
可选的,所述访问权限获取子单元,具体用于从所述执行者的运行上下文信息中获取其身份标识信息,并根据所述身份标识信息获取所述执行者的所述访问权限。
可选的,所述权限设置单元包括:
权限继承子单元,用于在创建所述执行者时,按照预设授权方案设置所述执行者对各类别***调用的访问权限;或者,用创建者对各类别***调用的访问权限设置所述执行者的相应访问权限。
可选的,所述权限设置单元还包括:
运行前权限降低子单元,用于在创建所述执行者之后、在运行所述执行者之前,按照预设方式降低所述执行者对各类别***调用的访问权限。
可选的,所述运行前权限降低子单元包括:
第一降低子单元,用于根据所述执行者的身份类别以及***配置文件中针对所述身份类别的权限配置信息,降低所述执行者对各类别***调用的访问权限;和/或,
第二降低子单元,用于根据所述执行者所属应用程序的配置文件中的权限申明信息,降低所述执行者对各类别***调用的访问权限。
可选的,所述权限设置单元还包括:
运行后权限降低子单元,用于所述执行者在运行过程中,在加载运行不可信代码之前降低其对各类别***调用的访问权限。
可选的,所述权限设置单元还包括:
权限恢复单元,用于在所述不可信代码运行完毕后,恢复所述执行者对各类别***调用的访问权限。
可选的,所述权限设置单元还包括:
权限提高子单元,用于所述执行者在运行过程中,在加载运行可信代码之前提高其对各类别***调用的访问权限。
可选的,所述权限降低子单元和所述运行前权限降低子单元,还分别用于相应设置所述执行者对各类别***调用的访问能力;
所述权限提高子单元,具体用于在所述执行者对各类别***调用的访问能力之内,提高所述执行者的访问权限。
可选的,所述装置还包括:
虚拟调用确定单元,用于在所述请求接收单元接收执行***调用的请求后,根据所述***调用的相关信息,确定其是否对应于虚拟***调用,并在不对应时,触发所述权限判断单元工作;
虚拟调用权限判断单元,用于当所述虚拟调用确定单元的输出为是时,判断所述***调用的执行者是否具有对所述虚拟***调用的访问权限,并在具有时,允许所述执行者执行所述虚拟***调用。
此外,本申请还提供一种执行***调用的方法,包括:
接收执行***调用的请求;
根据所述***调用的相关信息,确定待执行的目标调用;
判断所述***调用的执行者是否具有对所述目标调用的访问权限;
若具有,则允许所述执行者执行所述目标调用。
可选的,所述根据所述***调用的相关信息,确定待执行的目标调用,包括:
当所述***调用对应于预设的虚拟***调用时,将所述虚拟***调用作为所述目标调用,否则将所述***调用作为所述目标调用。
可选的,所述***调用的相关信息包括:***调用名称及参数值。
可选的,所述判断所述***调用的执行者是否具有对所述目标调用的访问权限,包括:
获取所述目标调用所属类别;
获取所述执行者对各类别***调用的访问权限;
根据所述获取的信息,判断所述执行者是否具有对所述目标调用所属类别的访问权限;
其中,所述目标调用所属类别、以及所述执行者对各类别***调用的访问权限是预先设定的。
可选的,在所述接收执行***调用的请求之前,执行下述操作:
根据预先划分的***调用类别,指定所述目标调用所属类别;
设置所述执行者对各类别***调用的访问权限。
相应的,本申请还提供一种执行***调用的装置,包括:
请求接收单元,用于接收执行***调用的请求;
目标调用确定单元,用于根据所述***调用的相关信息,确定待执行的目标调用;
访问权限判断单元,用于判断所述***调用的执行者是否具有对所述目标调用的访问权限;
执行允许单元,用于当所述访问权限判断单元的输出为是时,允许所述执行者执行所述目标调用。
可选的,所述目标调用确定单元,具体用于当所述***调用对应于预设的虚拟***调用时,将所述虚拟***调用作为所述目标调用,否则将所述***调用作为所述目标调用。
可选的,所述访问权限判断单元,包括:
目标调用类别获取子单元,用于获取所述目标调用所属类别;
访问权限获取子单元,用于获取所述执行者对各类别***调用的访问权限;
目标调用判断执行子单元,用于根据所述获取的信息,判断所述执行者是否具有对所述目标调用所属类别的访问权限。
可选的,所述装置还包括:
目标调用类别指定单元,用于在所述请求接收单元工作之前,根据预先划分的***调用类别,指定所述目标调用所属类别;
权限设置单元,用于设置所述执行者对各类别***调用的访问权限。
与现有技术相比,本申请具有以下优点:
本申请的执行***调用的方法,接收执行***调用的请求后,判断所述***调用的执行者是否具有对所述***调用的访问权限,并在具有时允许执行者执行所述***调用。本申请提供的上述方法,在判断某一***调用能否被执行时,是以执行者是否具有相应的访问权限作为依据,即,通过对执行者的授权达到限制***调用的目的,从而实现了基于执行者身份的差异化控制,而且并没有对开放哪些***调用加以限制,因此可以灵活地满足用户空间对***调用的合理访问需求。
附图说明
图1是本申请的一种执行***调用的方法的实施例的流程图;
图2是本申请实施例提供的判断执行者是否具有对***调用的访问权限的处理流程图;
图3是本申请的一种执行***调用的装置的实施例的示意图;
图4是本申请的另一种执行***调用的方法的实施例的流程图;
图5是本申请的另一种执行***调用的装置的实施例的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。
在本申请中,分别提供了一种执行***调用的方法及装置,以及另一种执行***调用的方法及装置。在下面的实施例中逐一进行详细说明。
本申请提供的执行***调用的方法,提供了一种对执行***调用进行权限控制的沙箱机制,其核心在于:在针对接收到的***调用请求判断某一***调用能否被执行时,是以执行者是否具有相应的访问权限作为依据,即,只有被授权的执行者才能执行所述***调用,从而达到了对执行***调用加以限制的目的,实现了基于执行者身份的差异化控制,而且并没有对开放哪些***调用加以限制,因此可以灵活地满足用户空间对***调用的合理访问需求。
需要说明的是,在具体应用中,应用程序的功能可以由进程实现,在支持多线程的***中,应用程序的功能也可以由多线程并发实现,而进程或者线程在运行过程中可以根据需要执行***调用(syscall),即调用syscall。本实施例所述的执行者,通常是指能够独立运行的基本单元,是可以由操作***调度运行的独立指令流,在具体实施中,可以是进程,也可以是线程。在本文后续提供的实施例中,将以在Linux***中实施本技术方案为例进行说明,由于在Linux中进程和线程是统一的,并没有线程和进程之分,通常认为线程是共用数据空间的轻量级进程,因此在以下实施例的描述中,不加以明确的区分,主要采用线程的表述方式。
本申请提供的执行***调用的方法,在具体实施时,可以在内核的统一入口处实施,即由内核中的独立的服务提供方实施,用户空间发起的执行***调用的请求可以先提交给所述服务提供方,由服务提供方判断是否允许执行者执行所述***调用,如果允许则可以将所述***调用请求分发给相应的***调用服务例程,或者直接触发相应的***调用服务例程,从而实现相应的***调用功能。
本申请提供的执行***调用的方法,包括以下步骤:接收执行***调用的请求;判断所述***调用的执行者是否具有对所述***调用的访问权限;若具有,则允许所述执行者执行所述***调用。
实施上述方法时,可以预先设置执行者对***调用的访问权限,即:预先进行授权,明确设定执行者具有对哪些***调用的访问权限,并将这些***调用的名称或者索引号添加到所述执行者的授权集合中;那么在接收到所述执行者发起的***调用请求后,可以根据预先设定的访问权限,判断所述执行者是否具有对所述***调用的访问权限,即:判断所述执行者的授权集合中是否包含被请求的***调用的名称或者索引号,若包含则说明所述执行者具有对所述***调用的访问权限,允许其执行所述***调用。
考虑到***调用的数目通常比较多,而且大部分***调用可以根据功能或者其他特征进行聚类,因此为了方便授权管理,可以预先对***调用进行分类,将***调用划分为预设数目的类别,并以类别为基本单位为执行者设置访问权限,从而可以减少授权过程的工作量,并提高本技术方案的执行效率。在以下提供的实施例中将重点描述基于分类的优选实施方式。下面对本申请的实施例进行详细说明。
请参考图1,其为本申请的一种执行***调用的方法的实施例的流程图。在具体实施本方法之前,可以根据预先划分的***调用类别,为本实施例中的待执行***调用指定所属类别,并设置所述执行者对各类***调用的访问权限。
(一)根据预先划分的***调用类别,指定所述***调用所属类别。
可以将内核提供的***调用预先划分为预设数目的类别,具体实施时可以根据不同的标准进行分类,例如,可以根据实现的功能划分为:网络操作相关的类别、与文件操作相关的类别、与权限设置相关的类别等。所述预设数目可以根据需要进行设置,对于32位***预设数目N可以为32,对于64位***N可以为64。划分好的类别可以分别用1~N加以标识,例如可以用1标识与网络操作相关的类别,用2标识与文件操作相关的类别。
进行类别划分后,可以为每个***调用指定其所属类别(在该过程中,自然也为本实施例中的待执行***调用指定了所属类别),通常每个***调用仅属于一个类别。例如:指定***调用read()属于类别2,即属于与文件操作相关的类别。具体实施时,每个***调用通常有与其对应的索引号,因此在为每个***调用指定所属类别后,可以将***调用的名称或者索引号与其所属类别的标识对应存储。
优选地,为了便于提高进行权限检查的执行效率,本实施例提供采用二进制比特串描述***调用所属类别的优选实施方式。用于描述***调用所属类别的二进制比特串的长度与***调用的类别数N一致,每个比特位分别与相同序号的***调用类别相对应,即:第1个比特位与类别1相对应,第2个比特位与类别2相对应,......,第N个比特位与类别N相对应,每个比特位的取值则代表***调用与相应类别的关系:1表示属于该类别,0表示不属于。例如:描述某***调用所属类别的32位二进制比特串为:0100000......0,则代表该***调用属于类别2。
进一步地,可以对可供用户空间访问的每个***调用都采用上述方式进行描述,如果总共有S个***调用(索引号的取值范围为:0~S-1),则对应于S个二进制比特串。在具体实施时,可以将描述这些***调用所属分类的S个二进制比特串统一采用二维bit数组进行存储管理,记为category[N][S],其中category[0][m]~category[N-1][m]存储的长度为N的二进制比特串,即对应于索引号为m的***调用的所属类别。
在具体实施时,可以预先设定category[N][S],也可以在此基础上在***配置文件中提供配置信息,在***启动时,通过读取配置文件中的配置信息进行相应的调整,例如:配置信息的形式可以为“syscall.classify type name”,其中syscall.classify为关键字,name为syscall名称,type代表所属类别标识(1~N),在***启动时可以将读取的配置信息转化成对应的二进制比特串、并更新category[N][S]中的相应比特位的值。采用这种方式,可以基于策略规则对***调用所属分类进行调整,具有灵活性。
(二)设置所述执行者对各类别***调用的访问权限。
本实施例提供基于分类的优选实施方式,采用这种优选实施方式,可以以类别为单位在内核中对执行者授权,在执行者生命周期的至少一个阶段设置所述执行者对各类别***调用的访问权限,所述生命周期包括以下阶段:创建阶段、创建之后运行之前阶段、运行阶段等,即:可以在不同阶段按照预设方式调整执行者对各类别***调用的访问权限,从而实现对执行者访问权限的动态调节,能够为执行***调用提供更为灵活的安全保障。
在本实施例中所述执行者是指线程,即:为线程设置对各类别***调用的访问权限。总体说,在运行线程之前的权限设置过程是一个逐步降低权限的过程,以将线程对***调用的访问权限限制在安全范围中,在线程的运行过程中,则可以根据运行代码的可信程度,自行提高、降低或者恢复访问权限。
作为一种优选实施方式,为了避免线程过度提升自身权限,本实施例还引入了访问能力的概念、并通过在线程运行之前设置其访问能力来实现对其调节访问权限的限制。所述访问能力,表示线程拥有的访问***调用的能力范围。
具体实施时,线程对各类别***调用的访问权限(以下简称访问权限),以及对各类别***调用的访问能力(以下简称访问能力),可以分别用集合来描述,访问权限集合中包含线程具有访问权限的类别标识,取值范围1~N,访问能力集合中包含线程具有访问能力的类别标识,取值范围1~N。对于一个线程来说,访问权限集合是访问能力集合的子集。
例如:某线程具有对***调用类别1、2、3的访问能力,那么该线程的访问能力集合为{1、2、3},该线程的访问权限集合是{1、2、3}的子集,即可以为以下所列集合之一:{1、2、3},{1、2},{1、3},{2、3},{1},{2},{3}。
优选地,与采用二进制比特串描述***调用所属类别的优选实施方式相对应,线程的访问权限、以及访问能力也可以采用二进制比特串进行描述。所述二进制比特串的长度与***调用的类别数一致,每个比特位分别与相同序号的***调用类别相对应,即:第1个比特位与类别1相对应,第2个比特位与类别2相对应,......,第N个比特位与类别N相对应,每个比特位的取值则代表线程是否具有对相应类别***调用的访问权限:1,表示线程具有对相应类别***调用的访问权限,0表示不具有。为了便于描述,本实施例将描述线程对各类别***调用的访问权限的二进制比特串简称为访问权限比特串,将描述线程对各类别***调用的访问能力的二进制比特串简称为访问能力比特串。
在具体实施时,所述线程的访问权限,通常与线程的身份标识信息对应存储,其中所述身份标识信息可以是线程的信任状信息(credential),也可以是其他可以标识线程身份的信息。首次设置时可以将线程的访问权限与身份标识信息对应存储,后续设置时可以先根据线程的身份标识信息获取与其对应存储的访问权限,然后对访问权限进行更新,再将更新后的访问权限与身份标识信息对应存储。同理,设置线程的访问能力,也可以采用将访问能力与线程的身份标识信息对应存储的方式。
下面以在32位Linux***中为线程设置访问权限为例,从线程的创建、线程创建之后运行之前、以及线程运行过程中这三个阶段,对其访问权限的设置作进一步详细说明,其中,在前两个阶段,也可以对线程的访问能力进行设置。
1)创建线程时,线程可以继承创建者的访问权限。
在创建线程时,可以用创建者的访问权限设置所述执行者的相应访问权限。
在Linux***的init进程启动时,其访问权限(permissoin)比特串和访问能力(capability)比特串都初始化为0xffffffff,即所有bit位都是1,从而拥有对所有类别***调用的访问权限和访问能力;随后,Init进程运行负责创建应用进程的特定进程,例如:seed进程;seed进程初始化完毕后,降低其访问权限和访问能力,例如:删除对部分预设***调用类别的访问权限和访问能力,以达到seed进程的最小权限。具体实施时,可以将seed进程的访问权限比特串和访问能力比特串中的相应比特位清除为0,然后用更新后的比特串设置seed进程的访问权限和访问能力。
Seed进程接收启动应用程序A的请求后,在内核中完成应用程序A的主线程threadA的实体创建,并根据seed的访问权限设置threadA的访问权限和访问能力,即:threadA可以继承创建者的访问权限和访问能力,设置threadA的访问权限比特串=threadA的访问能力比特串=Seed的访问权限比特串,那么threadA就拥有了从Seed继承的访问权限和访问能力。
此处给出了线程继承创建者的访问权限的实施方式,在具体实施中,也可以按照预设授权方案设置所述线程对各类别***调用的访问权限和访问能力,即:将线程的访问权限和访问能力设置为预设授权方案中指定的值。
2)创建线程之后、运行线程之前,降低线程的访问权限。
由于threadA即将运行的应用代码,通常是不可信的,为了避免恶意执行***调用带来的安全性问题,在创建threadA的实体后,在运行该线程之前,即:运行应用A的代码之前,还可以按照预设方式进一步执行降权操作,以将threadA对***调用的访问权限和访问能力限制在安全范围中。所述进一步执行降权操作,包括:根据***配置文件降权,和/或根据应用的配置文件降权,下面分别进行说明。
a)根据所述执行者的身份类别以及***配置文件中针对所述身份类别的权限配置信息,降低所述执行者对各类别***调用的访问权限。
***配置文件中可以显示地设定针对各种身份类别的权限配置信息,例如,其配置格式可以为:setcap user capability,其中user即对应于各种身份类别,如:普通应用、***应用、特殊应用等,capability是对各类别***调用的访问范围。在创建threadA的实体后,可以根据应用A的预设特征,例如:签名信息或者应用名称、路径等信息,按照预设的身份转换规则,生成表征threadA的身份类别信息,然后根据***配置文件中针对所述身份类别的权限配置信息执行降权操作。
例如,threadA被创建后,具有与uid/gid设置相关的***调用类别的访问权限和访问能力,但是***配置文件中显示指定的capability中不包含该类别,则可以将threadA的访问权限比特串和访问能力比特串中,与该类别对应的比特位清除为0,然后用更新后的比特串设置threadA的访问权限和访问能力。
b)根据所述执行者所属应用的配置文件中的权限申明信息,降低所述执行者对各类别***调用的访问权限。
通常应用程序A可以在其配置文件中申明其需要的功能权限,例如:需要收发短信的功能权限,需要访问通讯录的功能权限等,因此运行threadA之前,可以根据应用程序申明的功能权限,选择实现相应功能的***调用,并确定这些***调用对应的***调用类别,即:确定应用程序A申明的功能权限所涉及的***调用类别,然后执行相应的降权操作,从threadA的访问权限比特串和访问能力比特串中,将未涉及的***调用类别对应的比特位清除为0,然后用更新后的比特串设置threadA的访问权限和访问能力。
需要说明的是,threadA作为应用程序A的主线程,当其脱离Seed后,还可以根据其功能需求创建其他功能子线程,一方面其创建的子线程可以继承threadA的访问权限和访问能力,另一方面在运行子线程之前,还可以降低子线程的访问权限和访问能力,例如:删除与创建线程相关的***调用类别的访问权限和访问能力。具体实现时,可以将所述子线程的访问权限比特串和访问能力比特串中的相应比特位清除为0、然后用更新后的比特串设置子线程的访问权限和访问能力。
3)线程运行过程中,自行调节访问权限。
此处所述线程包括应用程序A的主线程threadA,也包括threadA创建的子线程,这些线程在运行过程中,都可以根据需要自行调节各自的访问权限,下面以threadA为例,进行说明。
threadA创建完毕后开始运行相应的应用代码,在运行过程中,可能需要加载运行不可信代码,例如:第三方提供的代码,或者调用第三方提供的库中的接口等,这些代码的安全性通常未得到有效验证,因此在加载运行不可信代码之前,threadA可以自行降低访问权限,但是要保留访问能力,即:将访问权限比特串中禁止不可信代码执行的***调用类别对应的比特位清除为0,并且不修改访问能力比特串,然后用更新后的访问权限比特串设置threadA的访问权限。
在所述不可信代码运行完毕后,threadA可以恢复其对各类别***调用的访问权限。ThreadA可以将其访问权限恢复为在加载上述不可信代码之前的访问权限,如果之前降低访问权限时,未记录降权前的访问权限,那么可以在不可信代码运行完毕后,以threadA的访问能力为上限,对其访问权限进行恢复,但是不能超出访问能力的限制。
此外,threadA在运行过程中,在加载运行可信代码之前,可以自行提高访问权限。例如:为了确保可信代码实现其功能,可以根据可信代码的需求,提高threadA的访问权限,即可以增加其具有访问权限的***调用类别,以保证可信代码实现其功能。但是threadA在提高其访问权限时,也需要以其访问能力为上限,在访问能力的限制之内进行权限提升。
在具体实施时,可以为线程提供一个setcap()权限设置接口,当需要设置线程的访问权限时,可以将待设置的访问权限信息(例如:访问权限比特串)作为入口参数并调用setcap()接口,由该接口函数在内核中实现所述设置功能。如果需要设置访问能力,则可以将访问能力信息(例如:访问能力比特串)也作为入口参数传入,由setcap()函数在内核中实现相应的设置功能。
需要说明的是,上述给出的在各阶段设置线程访问权限的方式,在具体实施时,可以不全部采用,而是根据需要进行相应的选择和组合,例如:可以仅在创建时设置线程的访问权限,或者在创建时设置权限、并在线程运行过程中进行权限调节等,都是可以的。
在创建线程及线程运行等各个阶段,可以通过以上描述的时机和方式设置线程的访问权限(和访问能力),同时,在线程的运行过程中可能会执行***调用,此时,可以执行本实施例的步骤101-步骤104,根据线程的访问权限判断其是否可以执行所述***调用,从而实现对***调用的访问限制。下面对各个步骤逐一进行说明。
步骤101、接收执行***调用的请求。
线程执行某一***调用后,通常会陷入内核,此时位于内核入口处的、实施了本方法的处理程序就会接收到执行所述***调用的请求,所述请求中通常携带待执行***调用的索引号或者名称,以及执行***调用的相关参数。
步骤102、判断所述***调用的执行者是否具有对所述***调用的访问权限,若具有,则执行步骤103,否则,执行步骤104。
在具体实施时,可以包括步骤102-1至102-3,下面结合图2作进一步说明。
步骤102-1、获取所述***调用所属类别。
根据前面的描述,已经预先为每个***调用指定其所属的***调用类别,其中自然也包括步骤101接收到的待执行的***调用,此时可以根据待执行的***调用的名称或者索引号,获取其所属的***调用类别,例如:获取其所属的***调用类别的标识。
如果在预先指定***调用类别时,采取了用二进制比特串描述的优选实施方式,并且利用二维bit数组category[N][S]存储、管理***调用所属分类,那么本步骤可以通过待执行***调用的索引号scno查询数组category[N][S],从而获取待执行***调用所属的类别信息category[N][scno],将这N个比特组合就得到了该***调用所属类别的二进制比特串,简称类别比特串。如果步骤101接收到的请求中携带的是***调用名称,则可以先通过查表等操作将名称转换为索引号。
步骤102-2、获取所述执行者对各类别***调用的访问权限。
本实施例中,执行者为线程,因此本步骤可以获取已为所述线程设置的访问权限,通常可以根据线程的身份标识信息获取其访问权限。例如:可以通过内核的线程上下文得到线程的信任状信息(credential),并根据信任状获取其访问权限,例如:访问权限集合。
对于采用二进制比特串描述的优选实施方式,本步骤获取的是所述线程的访问权限比特串。
步骤102-3、根据所述获取的信息,判断所述执行者是否具有对所述***调用所属类别的访问权限,若具有,则执行步骤103,否则,执行步骤104。
本步骤根据步骤102-1获取的待执行***调用所属类别,以及步骤102-2获取的线程的访问权限,判断所述线程是否能够执行所述***调用。
如果步骤102-1获取的是所述***调用所属的***调用类别的标识、步骤102-2获取的是访问权限集合,即该集合中包含线程具有访问权限的类别标识,那么本步骤可以判断该集合中是否包含步骤102-1获取的类别标识,若包含则说明所述线程具有相应的访问权限。
优选地,如果线程的访问权限、以及***调用所属类别都是采用二进制比特串描述的,那么本步骤可以采用按位与的优选实施方式:将访问权限比特串permission和类别比特串category[N][scno]进行按位与操作,即permission&category[N][scno],在N=32时,即为一次整数位与操作,如果结果不全为0,则说明所述线程具有对待执行***调用所属类别的访问权限,可以执行步骤103,否则说明所述线程不具有相应的访问权限,可以向所述线程返回代表“调用失败”或者“无调用权限”等类似的应答结果。采用基于比特位的按位与操作方式进行权限检查,可以快速地得到检查结果,具有较高的执行效率。
需要说明的是,上面给出的优选实施方式中,访问权限比特串中的1,表示线程具有对相应类别***调用的访问权限,0表示不具有,类别比特串中的1,表示***调用属于相应类别,0表示不属于,因此在本步骤中采用按位与操作进行判断。在其他实施方式中,所述访问权限比特串与所述类别比特串中的比特位的值也可以采用不同的方式设置,只要表示具有对相应类别***调用的访问权限的值、与表示***调用属于相应类别的值一致即可,并且在本步骤中采用相应的运算及判断方式也同样可以实现本技术方案,同样可以取得较高的执行效率。
例如:对于权限比特串,可以用0表示线程具有对相应类别***调用的访问权限,用1表示不具有;相应的,对于类别比特串,可以用0表示***调用属于相应类别,1表示不属于。本步骤将访问权限比特串permission和类别比特串category[N][scno]执行按位或操作,并当执行结果不全为1时,判定所述执行者具有对所述***调用所属类别的访问权限。
步骤103、允许所述执行者执行所述***调用。
执行到本步骤,说明所述线程具有对待执行***调用的访问权限,因此可以允许线程执行所述***调用。在具体实施时,可以将访问请求分发给与所述***调用对应的处理程序(也称***调用服务例程),也可以直接触发相应的***调用服务例程,从而实现相应的***调用功能。
步骤104、拒绝所述执行者执行所述***调用。
执行到本步骤,说明所述线程不具有对待执行***调用的访问权限,因此拒绝执行所述***调用。在具体实施时,可以向所述线程返回“***调用失败”、或者“没有调用权限”等类似的应答。
至此,通过步骤101-步骤104,对本实施例提供的执行***调用的方法的实施方式作了详细描述。
需要说明的是,本实施例提供的方法虽然是针对***调用提出的,但是并不仅仅适用于***调用,也可以用于自定义的、需要陷入内核实现的接口函数,为了与前者相区分,可以将前者称为原生***调用,而将自定义的接口函数称为虚拟***调用。在需要执行虚拟***调用时,可以用预先设定的数值作为入口参数值、然后调用某预设的原生***调用,例如以本实施例中提及的setcap()作为预设的虚拟***调用为例,可以预先设定如果采用预设数值100作为入口参数param1的值、并调用某原生***调用syscallA,则其对应的是预设虚拟***调用setcap(),即陷入内核后真正执行的是setcap()调用。在这种情况下,同样也可以针对setcap()调用进行权限检查,以对线程修改自身权限加以限制。下面对具体实施方式作进一步说明。
在步骤101接收执行***调用的请求之后,可以先根据所述***调用的相关信息,确定其是否对应于预设的虚拟***调用,若是,则判断所述***调用的执行者是否具有对所述虚拟***调用的访问权限,并在具有时允许所述执行者执行所述虚拟***调用;若否,则按照上述实施例中的步骤102进行处理。其中,所述***调用的相关信息包括:***调用名称及参数值,仍采用之前给出的例子,如果***调用名称为syscallA,参数值为100,则可以确定其对应于预设的虚拟***调用setcap()。
如果采用基于分类的优选实施方式,在执行步骤101之前,可以根据预先划分的***调用类别、指定每个***调用所属类别,同时也可以指定虚拟***调用所属类别,并同样设置执行者,即本实施例中的线程,对各类别***调用的访问权限。
以虚拟***调用setcap()为例,可以先为虚拟***调用setcap()指定对应的***调用索引号s1(不能和其他syscall的索引号冲突),然后将category[N][S]表扩展为category[N][S1],其中S1>=s1,并通过***配置文件中的配置信息指定虚拟***调用setcap()所属类别,例如:“syscall.classify type setcap”,其中type代表类别标识(1~N)。那么category[0][s1]~category[N-1][s1]存储的长度为N的二进制比特串,即为虚拟***调用setcap()的类别比特串。
线程在运行过程中,可以根据需要执行***调用,在内核的统一入口处,如果根据待执行***调用的相关信息确定其对应为预设的虚拟***调用setcap(),那么在判断所述***调用的执行者是否具有对所述虚拟***调用的访问权限时,可以采用基于比特位的按位与操作方式,即将setcap()的类别比特串与所述执行者的访问权限比特串执行按位与操作,如果结果不全为零,则说明所述执行者具有对setcap()所属类别的访问权限,因此可以执行setcap(),否则不能执行。
采用上述支持虚拟***调用的实施方式,可以扩展本实施例提供的沙箱机制的应用场景。对于需要陷入内核执行的非***调用,通过将其虚拟为***调用,可以简化代码编写的工作量,而且同样可以在内核入口处检查执行者是否具有对虚拟***调用的访问权限,从而可以在对***调用提供访问控制的基础上,对虚拟***调用也提供访问控制机制,进一步保障***的安全性。
综上所述,本实施例提供的执行***调用的方法,在判断某一***调用能否被执行时,是以执行者是否具有相应的访问权限作为依据,即,通过对执行者的授权达到限制***调用的目的,从而实现了基于执行者身份的差异化控制,而且并没有对开放哪些***调用加以限制,因此可以灵活地满足用户空间对***调用的合理访问需求。
在上述的实施例中,提供了一种执行***调用的方法,与之相对应的,本申请还提供一种执行***调用的装置。请参看图3,其为本申请的一种执行***调用的装置实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种执行***调用的装置,包括:请求接收单元301,用于接收执行***调用的请求;权限判断单元302,用于判断所述***调用的执行者是否具有对所述***调用的访问权限;执行允许单元303,用于当所述访问权限判断单元的输出为是时,允许所述执行者执行所述***调用;执行拒绝单元304,用于当所述访问权限判断单元的输出为否时,拒绝所述执行者执行所述***调用。
可选的,所述权限判断单元,包括:
类别获取子单元,用于获取所述***调用所属类别;
访问权限获取子单元,用于获取所述执行者对各类别***调用的访问权限;
判断执行子单元,用于根据所述获取的信息,判断所述执行者是否具有对所述***调用所属类别的访问权限。
可选的,所述装置还包括:
类别指定单元,用于在所述请求接收单元工作之前,根据预先划分的***调用类别,指定所述***调用所属类别;
权限设置单元,用于设置所述执行者对各类别***调用的访问权限。
可选的,所述判断执行子单元,具体用于将描述所述访问权限的二进制比特串与描述所述***调用所属类别的二进制比特串,逐位进行位运算,并根据运算结果判定所述执行者是否具有对所述***调用所属类别的访问权限。
可选的,所述判断执行子单元,具体用于将描述所述访问权限的二进制比特串与描述所述***调用所属类别的二进制比特串,逐位执行按位与操作,并当执行结果不全为0时判定所述执行者具有对所述***调用所属类别的访问权限。
可选的,所述权限设置单元,具体用于将所述执行者对各类别***调用的访问权限与其身份标识信息对应存储;
所述访问权限获取子单元,具体用于根据所述执行者的身份标识信息获取所述执行者的所述访问权限。
可选的,所述访问权限获取子单元,具体用于从所述执行者的运行上下文信息中获取其身份标识信息,并根据所述身份标识信息获取所述执行者的所述访问权限。
可选的,所述权限设置单元包括:
权限继承子单元,用于在创建所述执行者时,按照预设授权方案设置所述执行者对各类别***调用的访问权限;或者,用创建者对各类别***调用的访问权限设置所述执行者的相应访问权限。
可选的,所述权限设置单元还包括:
运行前权限降低子单元,用于在创建所述执行者之后、在运行所述执行者之前,按照预设方式降低所述执行者对各类别***调用的访问权限。
可选的,所述运行前权限降低子单元包括:
第一降低子单元,用于根据所述执行者的身份类别以及***配置文件中针对所述身份类别的权限配置信息,降低所述执行者对各类别***调用的访问权限;和/或,
第二降低子单元,用于根据所述执行者所属应用程序的配置文件中的权限申明信息,降低所述执行者对各类别***调用的访问权限。
可选的,所述权限设置单元还包括:
运行后权限降低子单元,用于所述执行者在运行过程中,在加载运行不可信代码之前降低其对各类别***调用的访问权限。
可选的,所述权限设置单元还包括:
权限恢复单元,用于在所述不可信代码运行完毕后,恢复所述执行者对各类别***调用的访问权限。
可选的,所述权限设置单元还包括:
权限提高子单元,用于所述执行者在运行过程中,在加载运行可信代码之前提高其对各类别***调用的访问权限。
可选的,所述权限降低子单元和所述运行前权限降低子单元,还分别用于相应设置所述执行者对各类别***调用的访问能力;
所述权限提高子单元,具体用于在所述执行者对各类别***调用的访问能力之内,提高所述执行者的访问权限。
可选的,所述装置还包括:
虚拟调用确定单元,用于在所述请求接收单元接收执行***调用的请求后,根据所述***调用的相关信息,确定其是否对应于虚拟***调用,并在不对应时,触发所述权限判断单元工作;
虚拟调用权限判断单元,用于当所述虚拟调用确定单元的输出为是时,判断所述***调用的执行者是否具有对所述虚拟***调用的访问权限,并在具有时,允许所述执行者执行所述虚拟***调用。
此外,本申请还提供另一种执行***调用的方法。请参考图4,其为本申请提供的另一种执行***调用的方法的实施例的流程图,本实施例与上述方法实施例步骤相同的部分不再赘述,下面重点描述不同之处。本申请提供的另一种执行***调用的方法包括:
步骤401、接收执行***调用的请求。
在执行本步骤之前,可以根据预先划分的***调用类别,指定每个***调用以及预设的虚拟***调用所属类别,并设置所述执行者对各类别***调用的访问权限。
步骤402、根据所述***调用的相关信息,确定待执行的目标调用。
所述***调用的相关信息包括:***调用名称及参数值。
本步骤可以根据***调用名称及参数值,判断所述***调用是否对应于预设的虚拟***调用,若是,将所述虚拟***调用作为所述目标调用,否则将所述***调用作为所述目标调用。
步骤403、判断所述***调用的执行者是否具有对所述目标调用的访问权限,若具有,执行步骤404,否则,执行步骤405。
在执行步骤401之前,已经为每个***调用以及预设的虚拟***调用指定了所属类别,其中自然也包括所述目标调用,因此本步骤可以获取所述目标调用所属的***调用类别,并可以获取所述执行者对各类别***调用的访问权限,然后根据所述获取的信息,判断所述执行者是否具有对所述目标调用所属类别的访问权限,若具有,则执行步骤404。
步骤404、允许所述执行者执行所述目标调用。
步骤405、拒绝所述执行者执行所述目标调用。
在上述的实施例中,提供了另一种执行***调用的方法,与之相对应的,本申请还提供另一种执行***调用的装置。请参看图5,其为本申请的另一种执行***调用的装置的实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种执行***调用的装置,包括:请求接收单元501,用于接收执行***调用的请求;目标调用确定单元502,用于根据所述***调用的相关信息,确定待执行的目标调用;访问权限判断单元503,用于判断所述***调用的执行者是否具有对所述目标调用的访问权限;执行允许单元504,用于当所述访问权限判断单元的输出为是时,允许所述执行者执行所述目标调用;执行拒绝单元505,用于当所述访问权限判断单元的输出为否时,拒绝所述执行者执行所述目标调用。
可选的,所述目标调用确定单元,具体用于当所述***调用对应于预设的虚拟***调用时,将所述虚拟***调用作为所述目标调用,否则将所述***调用作为所述目标调用。
可选的,所述访问权限判断单元,包括:
目标调用类别获取子单元,用于获取所述目标调用所属类别;
访问权限获取子单元,用于获取所述执行者对各类别***调用的访问权限;
目标调用判断执行子单元,用于根据所述获取的信息,判断所述执行者是否具有对所述目标调用所属类别的访问权限。
可选的,所述装置还包括:
目标调用类别指定单元,用于在所述请求接收单元工作之前,根据预先划分的***调用类别,指定所述目标调用所属类别;
权限设置单元,用于设置所述执行者对各类别***调用的访问权限。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (42)
1.一种执行***调用的方法,其特征在于,包括:
接收执行***调用的请求;
判断所述***调用的执行者是否具有对所述***调用的访问权限;
若具有,则允许所述执行者执行所述***调用。
2.根据权利要求1所述的执行***调用的方法,其特征在于,所述判断所述***调用的执行者是否具有对所述***调用的访问权限,包括:
获取所述***调用所属类别;
获取所述执行者对各类别***调用的访问权限;
根据所述获取的信息,判断所述执行者是否具有对所述***调用所属类别的访问权限;
其中,所述***调用所属类别、以及所述执行者对各类别***调用的访问权限是预先设定的。
3.根据权利要求2所述的执行***调用的方法,其特征在于,在所述接收执行***调用的请求之前,执行下述操作:
根据预先划分的***调用类别,指定所述***调用所属类别;
设置所述执行者对各类别***调用的访问权限。
4.根据权利要求2所述的执行***调用的方法,其特征在于,所述执行者对各类别***调用的访问权限、以及所述***调用所属类别分别采用二进制比特串描述,其长度分别与***调用的类别数一致,所述两个二进制比特串中各比特位分别与相同序号的***调用类别相对应;其中,描述所述访问权限的二进制比特串中的每个比特位的值表示所述执行者是否具有对相应类别***调用的访问权限,描述所述***调用所属类别的二进制比特串中的每个比特位的值表示所述***调用是否属于相应类别,并且表示具有对相应类别***调用的访问权限的值、与表示所述***调用属于相应类别的值一致;
所述根据所述获取的信息,判断所述执行者是否具有对所述***调用所属类别的访问权限,包括:
将描述所述访问权限的二进制比特串与描述所述***调用所属类别的二进制比特串,逐位进行位运算;
根据运算结果判定所述执行者是否具有对所述***调用所属类别的访问权限。
5.根据权利要求4所述的执行***调用的方法,其特征在于,描述所述访问权限的二进制比特串中的1,表示所述执行者具有对相应类别***调用的访问权限,0表示不具有;描述所述***调用所属类别的二进制比特串中的1,表示所述***调用属于相应类别,0表示不属于;
所述逐位进行位运算,包括:逐位执行按位与操作;
所述根据运算结果判定所述执行者是否具有对所述***调用所属类别的访问权限,包括:若执行结果不全为0,则判定所述执行者具有对所述***调用所属类别的访问权限。
6.根据权利要求3所述的执行***调用的方法,其特征在于,所述设置所述执行者对各类别***调用的访问权限,采用如下方式实现:将所述执行者对各类别***调用的访问权限与其身份标识信息对应存储;
所述获取所述执行者对各类别***调用的访问权限,包括:根据所述执行者的身份标识信息获取所述执行者的所述访问权限。
7.根据权利要求6所述的执行***调用的方法,其特征在于,所述身份标识信息包括:所述执行者的信任状信息。
8.根据权利要求6所述的执行***调用的方法,其特征在于,采用如下方式获取所述身份标识信息:从所述执行者的运行上下文信息中获取其身份标识信息。
9.根据权利要求3所述的执行***调用的方法,其特征在于,所述设置所述执行者对各类别***调用的访问权限,包括:
在创建所述执行者时,按照预设授权方案设置所述执行者对各类别***调用的访问权限;或者,用创建者对各类别***调用的访问权限设置所述执行者的相应访问权限。
10.根据权利要求9所述的执行***调用的方法,其特征在于,所述设置所述执行者对各类别***调用的访问权限,还包括:
在创建所述执行者之后、在运行所述执行者之前,按照预设方式降低所述执行者对各类别***调用的访问权限。
11.根据权利要求10所述的执行***调用的方法,其特征在于,所述按照预设方式降低所述执行者对各类别***调用的访问权限,包括:
根据所述执行者的身份类别以及***配置文件中针对所述身份类别的权限配置信息,降低所述执行者对各类别***调用的访问权限;和/或,
根据所述执行者所属应用程序的配置文件中的权限申明信息,降低所述执行者对各类别***调用的访问权限。
12.根据权利要求9所述的执行***调用的方法,其特征在于,所述设置所述执行者对各类别***调用的访问权限,还包括:
所述执行者在运行过程中,在加载运行不可信代码之前降低其对各类别***调用的访问权限。
13.根据权利要求12所述的执行***调用的方法,其特征在于,所述设置所述执行者对各类别***调用的访问权限,还包括:
在所述不可信代码运行完毕后,恢复所述执行者对各类别***调用的访问权限。
14.根据权利要求10所述的执行***调用的方法,其特征在于,所述设置所述执行者对各类别***调用的访问权限,还包括:
所述执行者在运行过程中,在加载运行可信代码之前提高其对各类别***调用的访问权限。
15.根据权利要求14所述的执行***调用的方法,其特征在于,在所述执行者运行之前,在设置所述执行者对各类别***调用的访问权限时,还相应设置所述执行者对各类别***调用的访问能力;所述执行者具有访问权限的***调用类别集合是其具有访问能力的***调用类别集合的子集;
所述提高其对各类别***调用的访问权限,包括:在所述执行者对各类别***调用的访问能力之内,提高所述执行者的访问权限。
16.根据权利要求1所述的执行***调用的方法,其特征在于,在所述接收执行***调用的请求之后,包括:
根据所述***调用的相关信息,确定其是否对应于预设的虚拟***调用;
若是,则判断所述***调用的执行者是否具有对所述虚拟***调用的访问权限,并在具有时,允许所述执行者执行所述虚拟***调用;
若否,则执行所述判断所述***调用的执行者是否具有对所述***调用的访问权限的步骤。
17.根据权利要求16所述的执行***调用的方法,其特征在于,所述***调用的相关信息,包括:***调用名称及参数值。
18.根据权利要求1-17任一项所述的执行***调用的方法,其特征在于,所述执行者包括:可独立运行的基本单元;所述可独立运行的基本单元包括:线程或者进程。
19.一种执行***调用的装置,其特征在于,包括:
请求接收单元,用于接收执行***调用的请求;
权限判断单元,用于判断所述***调用的执行者是否具有对所述***调用的访问权限;
执行允许单元,用于当所述访问权限判断单元的输出为是时,允许所述执行者执行所述***调用。
20.根据权利要求19所述的执行***调用的装置,其特征在于,所述权限判断单元,包括:
类别获取子单元,用于获取所述***调用所属类别;
访问权限获取子单元,用于获取所述执行者对各类别***调用的访问权限;
判断执行子单元,用于根据所述获取的信息,判断所述执行者是否具有对所述***调用所属类别的访问权限。
21.根据权利要求20所述的执行***调用的装置,其特征在于,还包括:
类别指定单元,用于在所述请求接收单元工作之前,根据预先划分的***调用类别,指定所述***调用所属类别;
权限设置单元,用于设置所述执行者对各类别***调用的访问权限。
22.根据权利要求20所述的执行***调用的装置,其特征在于,所述判断执行子单元,具体用于将描述所述访问权限的二进制比特串与描述所述***调用所属类别的二进制比特串,逐位进行位运算,并根据运算结果判定所述执行者是否具有对所述***调用所属类别的访问权限。
23.根据权利要求22所述的执行***调用的装置,其特征在于,所述判断执行子单元,具体用于将描述所述访问权限的二进制比特串与描述所述***调用所属类别的二进制比特串,逐位执行按位与操作,并当执行结果不全为0时判定所述执行者具有对所述***调用所属类别的访问权限。
24.根据权利要求21所述的执行***调用的装置,其特征在于,所述权限设置单元,具体用于将所述执行者对各类别***调用的访问权限与其身份标识信息对应存储;
所述访问权限获取子单元,具体用于根据所述执行者的身份标识信息获取所述执行者的所述访问权限。
25.根据权利要求24所述的执行***调用的装置,其特征在于,所述访问权限获取子单元,具体用于从所述执行者的运行上下文信息中获取其身份标识信息,并根据所述身份标识信息获取所述执行者的所述访问权限。
26.根据权利要求21所述的执行***调用的装置,其特征在于,所述权限设置单元包括:
权限继承子单元,用于在创建所述执行者时,按照预设授权方案设置所述执行者对各类别***调用的访问权限;或者,用创建者对各类别***调用的访问权限设置所述执行者的相应访问权限。
27.根据权利要求26所述的执行***调用的装置,其特征在于,所述权限设置单元还包括:
运行前权限降低子单元,用于在创建所述执行者之后、在运行所述执行者之前,按照预设方式降低所述执行者对各类别***调用的访问权限。
28.根据权利要求27所述的执行***调用的装置,其特征在于,所述运行前权限降低子单元包括:
第一降低子单元,用于根据所述执行者的身份类别以及***配置文件中针对所述身份类别的权限配置信息,降低所述执行者对各类别***调用的访问权限;和/或,
第二降低子单元,用于根据所述执行者所属应用程序的配置文件中的权限申明信息,降低所述执行者对各类别***调用的访问权限。
29.根据权利要求26所述的执行***调用的装置,其特征在于,所述权限设置单元还包括:
运行后权限降低子单元,用于所述执行者在运行过程中,在加载运行不可信代码之前降低其对各类别***调用的访问权限。
30.根据权利要求29所述的执行***调用的装置,其特征在于,所述权限设置单元还包括:
权限恢复单元,用于在所述不可信代码运行完毕后,恢复所述执行者对各类别***调用的访问权限。
31.根据权利要求27所述的执行***调用的装置,其特征在于,所述权限设置单元还包括:
权限提高子单元,用于所述执行者在运行过程中,在加载运行可信代码之前提高其对各类别***调用的访问权限。
32.根据权利要求31所述的执行***调用的装置,其特征在于,所述权限降低子单元和所述运行前权限降低子单元,还分别用于相应设置所述执行者对各类别***调用的访问能力;
所述权限提高子单元,具体用于在所述执行者对各类别***调用的访问能力之内,提高所述执行者的访问权限。
33.根据权利要求19所述的执行***调用的装置,其特征在于,所述装置还包括:
虚拟调用确定单元,用于在所述请求接收单元接收执行***调用的请求后,根据所述***调用的相关信息,确定其是否对应于虚拟***调用,并在不对应时,触发所述权限判断单元工作;
虚拟调用权限判断单元,用于当所述虚拟调用确定单元的输出为是时,判断所述***调用的执行者是否具有对所述虚拟***调用的访问权限,并在具有时,允许所述执行者执行所述虚拟***调用。
34.一种执行***调用的方法,其特征在于,包括:
接收执行***调用的请求;
根据所述***调用的相关信息,确定待执行的目标调用;
判断所述***调用的执行者是否具有对所述目标调用的访问权限;
若具有,则允许所述执行者执行所述目标调用。
35.根据权利要求34所述的执行***调用的方法,其特征在于,所述根据所述***调用的相关信息,确定待执行的目标调用,包括:
当所述***调用对应于预设的虚拟***调用时,将所述虚拟***调用作为所述目标调用,否则将所述***调用作为所述目标调用。
36.根据权利要求34所述的执行***调用的方法,其特征在于,所述***调用的相关信息包括:***调用名称及参数值。
37.根据权利要求34所述的执行***调用的方法,其特征在于,所述判断所述***调用的执行者是否具有对所述目标调用的访问权限,包括:
获取所述目标调用所属类别;
获取所述执行者对各类别***调用的访问权限;
根据所述获取的信息,判断所述执行者是否具有对所述目标调用所属类别的访问权限;
其中,所述目标调用所属类别、以及所述执行者对各类别***调用的访问权限是预先设定的。
38.根据权利要求37所述的执行***调用的方法,其特征在于,在所述接收执行***调用的请求之前,执行下述操作:
根据预先划分的***调用类别,指定所述目标调用所属类别;
设置所述执行者对各类别***调用的访问权限。
39.一种执行***调用的装置,其特征在于,包括:
请求接收单元,用于接收执行***调用的请求;
目标调用确定单元,用于根据所述***调用的相关信息,确定待执行的目标调用;
访问权限判断单元,用于判断所述***调用的执行者是否具有对所述目标调用的访问权限;
执行允许单元,用于当所述访问权限判断单元的输出为是时,允许所述执行者执行所述目标调用。
40.根据权利要求39所述的执行***调用的装置,其特征在于,所述目标调用确定单元,具体用于当所述***调用对应于预设的虚拟***调用时,将所述虚拟***调用作为所述目标调用,否则将所述***调用作为所述目标调用。
41.根据权利要求39所述的执行***调用的装置,其特征在于,所述访问权限判断单元,包括:
目标调用类别获取子单元,用于获取所述目标调用所属类别;
访问权限获取子单元,用于获取所述执行者对各类别***调用的访问权限;
目标调用判断执行子单元,用于根据所述获取的信息,判断所述执行者是否具有对所述目标调用所属类别的访问权限。
42.根据权利要求41所述的执行***调用的装置,其特征在于,还包括:
目标调用类别指定单元,用于在所述请求接收单元工作之前,根据预先划分的***调用类别,指定所述目标调用所属类别;
权限设置单元,用于设置所述执行者对各类别***调用的访问权限。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610159286.7A CN107203715B (zh) | 2016-03-18 | 2016-03-18 | 执行***调用的方法及装置 |
PCT/CN2017/075853 WO2017157202A1 (zh) | 2016-03-18 | 2017-03-07 | 执行***调用的方法及装置 |
US16/132,039 US11093647B2 (en) | 2016-03-18 | 2018-09-14 | Method and device for executing system scheduling |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610159286.7A CN107203715B (zh) | 2016-03-18 | 2016-03-18 | 执行***调用的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107203715A true CN107203715A (zh) | 2017-09-26 |
CN107203715B CN107203715B (zh) | 2021-03-19 |
Family
ID=59850877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610159286.7A Active CN107203715B (zh) | 2016-03-18 | 2016-03-18 | 执行***调用的方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11093647B2 (zh) |
CN (1) | CN107203715B (zh) |
WO (1) | WO2017157202A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229189A (zh) * | 2017-12-29 | 2018-06-29 | 北京元心科技有限公司 | 内核文件的自主访问控制方法及装置 |
CN109918895A (zh) * | 2019-03-07 | 2019-06-21 | 上海掌门科技有限公司 | 用于输出数据的方法、电子设备和计算机可读介质 |
CN112015494A (zh) * | 2020-08-27 | 2020-12-01 | 中国平安财产保险股份有限公司 | 第三方api工具调用方法、***及装置 |
CN112966257A (zh) * | 2021-05-18 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种应用程序的授权方法及装置 |
CN113127208A (zh) * | 2021-05-06 | 2021-07-16 | 杭州天宽科技有限公司 | 一种基于线程限制用户访问服务的方法 |
CN113285933A (zh) * | 2021-05-13 | 2021-08-20 | 京东数字科技控股股份有限公司 | 用户访问控制方法、装置、电子设备与存储介质 |
CN114579254A (zh) * | 2022-03-02 | 2022-06-03 | 科东(广州)软件科技有限公司 | 一种微内核虚拟化操作***的***调用方法及装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019053592A (ja) * | 2017-09-15 | 2019-04-04 | 株式会社東芝 | プログラマブル集積回路、計算システム及びビット列生成装置 |
EP3582103A1 (en) * | 2018-06-14 | 2019-12-18 | QlikTech International AB | Methods and systems for application program interface management |
EP3945439A1 (de) * | 2020-07-27 | 2022-02-02 | Siemens Aktiengesellschaft | Erweiterte integritätsüberwachung eines containerabbildes |
US20240020378A1 (en) * | 2022-07-18 | 2024-01-18 | Benoit Hudzia | Secure just-in-time acceleration framework and method thereof |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090089463A1 (en) * | 2004-11-30 | 2009-04-02 | Nec Corporation | Information Processing Device, Device Access Control Method, and Device Access Control Program |
CN102930205A (zh) * | 2012-10-10 | 2013-02-13 | 北京奇虎科技有限公司 | 一种监测单元及方法 |
CN104112089A (zh) * | 2014-07-17 | 2014-10-22 | 中国人民解放军国防科学技术大学 | 基于多策略融合的强制访问控制方法 |
CN104252380A (zh) * | 2013-06-28 | 2014-12-31 | 百度在线网络技术(北京)有限公司 | Linux***下***调用的控制方法及装置 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7360213B1 (en) | 1994-01-26 | 2008-04-15 | Emc Corporation | Method for promotion and demotion between system calls and fast kernel calls |
US6260057B1 (en) | 1995-03-01 | 2001-07-10 | Sun Microsystems, Inc. | Apparatus and method for high performance implementation of system calls |
US6735666B1 (en) | 2000-02-22 | 2004-05-11 | Wind River Systems, Inc. | Method of providing direct user task access to operating system data structures |
US20030005168A1 (en) | 2001-06-29 | 2003-01-02 | Leerssen Scott Alan | System and method for auditing system call events with system call wrappers |
TWI229817B (en) | 2003-01-07 | 2005-03-21 | Wistron Corp | Kernel-mode operating system of application program and method thereof |
US8132002B2 (en) | 2006-08-17 | 2012-03-06 | Shi-Wu Lo | Fast system call method |
CN100504792C (zh) * | 2006-10-06 | 2009-06-24 | 国际商业机器公司 | 在用户空间中进行***调用截取的方法和*** |
GB0816556D0 (en) * | 2008-09-10 | 2008-10-15 | Univ Napier | Improvements in or relating to digital forensics |
CN101739361A (zh) * | 2008-11-12 | 2010-06-16 | 联想(北京)有限公司 | 访问控制方法、访问控制装置及终端设备 |
CN101493873A (zh) * | 2009-03-04 | 2009-07-29 | 浪潮电子信息产业股份有限公司 | 基于内核层技术实现对win平台文件读写操作访问控制方法 |
US8286192B2 (en) | 2009-12-04 | 2012-10-09 | Red Hat, Inc. | Kernel subsystem for handling performance counters and events |
US20110213971A1 (en) * | 2010-03-01 | 2011-09-01 | Nokia Corporation | Method and apparatus for providing rights management at file system level |
US9378387B2 (en) * | 2010-03-24 | 2016-06-28 | Oracle International Corporation | Multi-level security cluster |
US8555377B2 (en) * | 2010-04-29 | 2013-10-08 | High Cloud Security | Secure virtual machine |
US8893306B2 (en) * | 2010-08-31 | 2014-11-18 | International Business Machines Corporation | Resource management and security system |
US8656465B1 (en) * | 2011-05-09 | 2014-02-18 | Google Inc. | Userspace permissions service |
US20150128262A1 (en) * | 2011-10-28 | 2015-05-07 | Andrew F. Glew | Taint vector locations and granularity |
US9558034B2 (en) * | 2011-07-19 | 2017-01-31 | Elwha Llc | Entitlement vector for managing resource allocation |
US9256552B2 (en) * | 2011-11-21 | 2016-02-09 | Cisco Technology, Inc. | Selective access to executable memory |
US9047463B2 (en) * | 2012-06-29 | 2015-06-02 | Sri International | Method and system for protecting data flow at a mobile device |
US9063721B2 (en) * | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9680772B2 (en) * | 2013-09-09 | 2017-06-13 | Vmware, Inc. | System and method for managing configuration of virtual switches in a virtual machine network |
US9355262B2 (en) * | 2013-12-27 | 2016-05-31 | Intel Corporation | Modifying memory permissions in a secure processing environment |
US9507935B2 (en) * | 2014-01-16 | 2016-11-29 | Fireeye, Inc. | Exploit detection system with threat-aware microvisor |
JP5711840B1 (ja) * | 2014-06-06 | 2015-05-07 | 豊田通商株式会社 | リレーショナルデータベースを内在するカーネルプログラム、方法及び装置 |
US20160048688A1 (en) * | 2014-08-14 | 2016-02-18 | Google Inc. | Restricting System Calls using Protected Storage |
US9710659B2 (en) * | 2014-08-28 | 2017-07-18 | Virtru Corporation | Methods and systems for enforcing, by a kernel driver, a usage restriction associated with encrypted data |
US9747438B2 (en) * | 2015-11-02 | 2017-08-29 | Red Hat, Inc. | Enabling resource access for secure application containers |
-
2016
- 2016-03-18 CN CN201610159286.7A patent/CN107203715B/zh active Active
-
2017
- 2017-03-07 WO PCT/CN2017/075853 patent/WO2017157202A1/zh active Application Filing
-
2018
- 2018-09-14 US US16/132,039 patent/US11093647B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090089463A1 (en) * | 2004-11-30 | 2009-04-02 | Nec Corporation | Information Processing Device, Device Access Control Method, and Device Access Control Program |
CN102930205A (zh) * | 2012-10-10 | 2013-02-13 | 北京奇虎科技有限公司 | 一种监测单元及方法 |
CN104252380A (zh) * | 2013-06-28 | 2014-12-31 | 百度在线网络技术(北京)有限公司 | Linux***下***调用的控制方法及装置 |
CN104112089A (zh) * | 2014-07-17 | 2014-10-22 | 中国人民解放军国防科学技术大学 | 基于多策略融合的强制访问控制方法 |
Non-Patent Citations (1)
Title |
---|
王涛: ""可动态载入的模块化安全Linux内核"", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229189A (zh) * | 2017-12-29 | 2018-06-29 | 北京元心科技有限公司 | 内核文件的自主访问控制方法及装置 |
CN109918895A (zh) * | 2019-03-07 | 2019-06-21 | 上海掌门科技有限公司 | 用于输出数据的方法、电子设备和计算机可读介质 |
CN109918895B (zh) * | 2019-03-07 | 2023-07-14 | 上海掌门科技有限公司 | 用于输出数据的方法、电子设备和计算机可读介质 |
CN112015494A (zh) * | 2020-08-27 | 2020-12-01 | 中国平安财产保险股份有限公司 | 第三方api工具调用方法、***及装置 |
CN113127208A (zh) * | 2021-05-06 | 2021-07-16 | 杭州天宽科技有限公司 | 一种基于线程限制用户访问服务的方法 |
CN113127208B (zh) * | 2021-05-06 | 2023-08-04 | 杭州天宽科技有限公司 | 一种基于线程限制用户访问服务的方法 |
CN113285933A (zh) * | 2021-05-13 | 2021-08-20 | 京东数字科技控股股份有限公司 | 用户访问控制方法、装置、电子设备与存储介质 |
CN112966257A (zh) * | 2021-05-18 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种应用程序的授权方法及装置 |
CN114579254A (zh) * | 2022-03-02 | 2022-06-03 | 科东(广州)软件科技有限公司 | 一种微内核虚拟化操作***的***调用方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2017157202A1 (zh) | 2017-09-21 |
CN107203715B (zh) | 2021-03-19 |
US20190180055A1 (en) | 2019-06-13 |
US11093647B2 (en) | 2021-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107203715A (zh) | 执行***调用的方法及装置 | |
TWI249111B (en) | Row-level security in a relational database management system | |
CN101493785B (zh) | 根据客户软件的特许级支持向虚拟机监视器转移 | |
CN110310205B (zh) | 一种区块链数据监控方法、装置、设备和介质 | |
US8122484B2 (en) | Access control policy conversion | |
US7676831B2 (en) | Role-based access control management for multiple heterogeneous application components | |
US20200387821A1 (en) | Authentication based on a change in a state of a qubit | |
CN107622211A (zh) | 一种大数据集群权限访问控制方法及装置 | |
JP2021535475A (ja) | アクセスコントロールポリシーの配置方法、装置、システム及び記憶媒体 | |
DE102020127800A1 (de) | Ein-chip-system und verfahren zu dessen betrieb | |
US11275850B1 (en) | Multi-faceted security framework for unstructured storage objects | |
US20070198522A1 (en) | Virtual roles | |
CN111259350A (zh) | 一种访问控制方法、装置及计算机可读存储介质 | |
CN108092945A (zh) | 访问权限的确定方法和装置、终端 | |
JP2004158007A (ja) | コンピュータアクセス権限 | |
JP5118638B2 (ja) | ユーザアカウント内のアプリケーション特有データの隔離 | |
CN107871077A (zh) | 用于***服务的权能管理方法、权能管理方法及装置 | |
US10726053B2 (en) | System for lightweight objects | |
CN116702126A (zh) | 应用访问控制方法和装置、计算设备和可读存储介质 | |
US9009731B2 (en) | Conversion of lightweight object to a heavyweight object | |
CN116244733A (zh) | 基于零信任模型的数据处理方法、装置及电子设备 | |
CN112231733A (zh) | 对象代理特征数据库的mac防护增强*** | |
US9754121B2 (en) | System and methods for live masking file system access control entries | |
CN113536254A (zh) | 资源权限配置方法、装置、计算机设备和存储介质 | |
CN112789596A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20201127 Address after: Room 603, 6 / F, Roche Plaza, 788 Cheung Sha Wan Road, Kowloon, China Applicant after: Zebra smart travel network (Hong Kong) Limited Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Applicant before: Alibaba Group Holding Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |