掌桥专利:专业的专利平台
掌桥专利
首页

一种针对网络请求的访问控制方法及系统

文献发布时间:2024-04-18 19:58:53


一种针对网络请求的访问控制方法及系统

技术领域

本发明属于软件工程技术领域,具体涉及一种针对网络请求的访问控制方法及系统。

背景技术

申请号202311241074.X《一种数据可控使用方法》提供了一种隐私计算的新范式,即数据使用方的存储/计算节点中的存储逻辑分区被划分成数据提供方控制的安全域,保证隐私数据只能在安全域中进行处理,不能流出安全域。这保证了数据提供方的隐私数据虽然对数据使用方可见,但防止了数据使用方以各种方式将隐私数据拷贝出安全域从而进行二次贩卖。

但是上述方法并不能实现分布式集群下网络请求访问过程中的数据可控,难以避免设备通过网络传输或泄露安全域内容的现象。

发明内容

针对现有技术中的缺陷,本发明提供一种针对网络请求的访问控制方法及系统,避免了通过网络传输或泄露安全域内容的现象,对网络部分提供了额外的保护。

第一方面,一种针对网络请求的访问控制方法,包括:

创建链表;链表包含所有允许使用Socket的已授权进程;

当LSM框架的钩子函数监测到创建Socket数据包的进程、且进程读取过预设安全域的内容时,判断进程是否存在于链表中;

如果存在,允许进程创建Socket数据包;

如果不存在,拒绝进程创建Socket数据包;

当LSM框架的钩子函数监测到发送Socket数据包的进程时,判断进程的标志位是否被置位,如果是,允许进程发送Socket数据包;如果不是,拒绝进程发送Socket数据包。

进一步地,链表包含第一链表和第二链表;创建链表具体包括:

当已授权进程为非解释型语言文件时,配置第一链表中对应的条目为可执行文件的哈希值;配置第二链表中对应的条目为空;

当已授权进程为解释型语言文件时,配置第一链表中对应的条目为解释型语言解释器的哈希值;配置第二链表中对应的条目为解释型语言解释器中运行参数的哈希值。

进一步地,判断进程是否存在于链表中具体包括:

获取进程的可执行文件;

计算可执行文件的哈希值;

如果可执行文件的哈希值不存在于第一链表中,则进程不存在于链表中;

如果可执行文件的哈希值存在于第一链表中、且第二链表中对应的条目为空时,则进程存在于链表中;

如果可执行文件的哈希值存在于第一链表中、且第二链表中对应的条目不为空时,获取进程对应的解释型语言解释器的运行参数,计算运行参数的哈希值;如果运行参数的哈希值存在于第二链表中,则进程存在于链表中;如果运行参数的哈希值不存在于第二链表中,则进程不存在于链表中。

进一步地,链表的维护方法包括:

当接收到进程的添加请求或删除请求时,接收进程的身份信息;身份信息包括可执行文件的哈希值,或者是解释型语言解释器的哈希值以及运行参数的哈希值;

当身份信息验证通过时,在链表中添加或删除进程,根据添加结果或删除结果配置进程的状态位。

进一步地,当进程存在于链表中,置位进程的标志位。

第二方面,一种针对网络请求的访问控制系统,包括:

链表管理单元:用于创建链表;链表包含所有允许使用Socket的已授权进程;

控制单元:用于当LSM框架的钩子函数监测到创建Socket数据包的进程、且进程读取过预设安全域的内容时,判断进程是否存在于所述链表中;如果存在,允许进程创建Socket数据包;如果不存在,拒绝进程创建Socket数据包;控制单元还用于:当LSM框架的钩子函数监测到发送Socket数据包的进程时,判断进程的标志位是否被置位,如果是,允许进程发送Socket数据包;如果不是,拒绝进程发送Socket数据包。

进一步地,链表包含第一链表和第二链表;链表管理单元具体用于:

当已授权进程为非解释型语言文件时,配置第一链表中对应的条目为可执行文件的哈希值;配置第二链表中对应的条目为空;

当已授权进程为解释型语言文件时,配置第一链表中对应的条目为解释型语言解释器的哈希值;配置第二链表中对应的条目为解释型语言解释器中运行参数的哈希值。

进一步地,控制单元具体用于:

获取进程的可执行文件;

计算可执行文件的哈希值;

如果可执行文件的哈希值不存在于第一链表中,则进程不存在于链表中;

如果可执行文件的哈希值存在于第一链表中、且第二链表中对应的条目为空时,则进程存在于链表中;

如果可执行文件的哈希值存在于第一链表中、且第二链表中对应的条目不为空时,获取进程对应的解释型语言解释器的运行参数,计算运行参数的哈希值;如果运行参数的哈希值存在于第二链表中,则进程存在于链表中;如果运行参数的哈希值不存在于第二链表中,则进程不存在于链表中。

进一步地,链表管理单元还用于:

当接收到进程的添加请求或删除请求时,接收进程的身份信息;身份信息包括可执行文件的哈希值,或者是解释型语言解释器的哈希值以及运行参数的哈希值;

当身份信息验证通过时,在链表中添加或删除进程,根据添加结果或删除结果配置进程的状态位。

进一步地,控制单元还用于:

当进程存在于链表中,置位进程的标志位。

由上述技术方案可知,本发明提供的针对网络请求的访问控制方法及系统,对读取过安全域的进程进行验证,当进程被授权后才允许进程的网络行为,这样没有获得授权的进程不能使用网络向外发送隐私数据,避免了通过网络传输或泄露安全域内容的现象,对网络部分提供了额外的保护,满足系统数据可控的要求。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。

图1为实施例提供的访问控制方法的流程图。

图2为实施例提供的链表的示意图。

图3为实施例提供的进程验证方法的流程图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

进程是操作系统提供的抽象概念,通过虚拟地址使得程序在运行时看起来好像独占CPU、内存以及I/O设备。Linux系统的网络通信在用户态表现为:通过Socket的一系列系统调用进行主机间通信。而本申请提供的访问控制方法在进行相应的系统调用时,判断当前进程是否可以使用Socket传输数据。

实施例:

一种针对网络请求的访问控制方法,参见图1,包括:

创建链表;链表包含所有允许使用Socket的已授权进程;

当LSM框架的钩子函数监测到创建Socket数据包的进程、且进程读取过预设安全域的内容时,判断进程是否存在于链表中;

如果存在,允许进程创建Socket数据包;

如果不存在,拒绝进程创建Socket数据包。

在本实施例中,该访问控制方法首先需要在内核中建立链表,链表包含所有允许使用Socket的已授权进程,即链表包含所有允许执行网络行为的进程。该访问控制方法可以在LSM框架上实现。LSM框架网络部分的钩子函数可以用来创建、发送和接收Socket数据包。该方法在创建和数据包时,需要判断进程是否授权允许使用Socket。LSM框架的钩子函数当拦截到创建Socket数据包的进程(包括TCP、UDP等等)时,判断该进程是否读取过预设安全域的内容。安全域中存储的内容主要是隐私数据,隐私数据不能以常规方式拷贝或泄漏至安全域外。如果创建Socket数据包的进程没有读取过预设安全域的内容,那么进程的一切网络行为都是被允许的。如果创建Socket数据包的进程读取过安全域的内容,需要判断该进程是否被授权使用Socket。此时判断进程是否存在于链表中;如果存在,说明进程被授权使用Socket,允许执行进程的网络行为,创建Socket数据包;如果不存在,说明进程没有被授权使用Socket,拒绝执行进程的网络行为,不能创建Socket数据包。

在本实施例中,LSM框架的钩子函数监测到发送Socket数据包的进程时,判断进程的标志位是否被置位,如果是,说明进程被授权使用Socket,允许执行进程的网络行为,发送Socket数据包;如果不是,说明进程没有被授权使用Socket,拒绝执行进程的网络行为,不能发送Socket数据包,Socket数据包将会被删除。

该访问控制方法,对读取过安全域的进程进行验证,当进程被授权后才允许进程的网络行为,这样没有获得授权的进程不能使用网络向外发送隐私数据,避免了通过网络传输或泄露安全域内容的现象,对网络部分提供了额外的保护,满足系统数据可控的要求。

进一步地,在一些实施例中,链表包含第一链表和第二链表;创建链表具体包括:

当已授权进程为非解释型语言文件时,配置第一链表中对应的条目为可执行文件的哈希值;配置第二链表中对应的条目为空;

当已授权进程为解释型语言文件时,配置第一链表中对应的条目为解释型语言解释器的哈希值;配置第二链表中对应的条目为解释型语言解释器中运行参数的哈希值。

在本实施例中,链表的示意图参见图2,Linux系统中的进程都是通过加载可执行文件(即ELF文件)产生的,因此链表主要存储经过DVServer授权的可执行文件的SHA256哈希值。如果进程的ELF文件存在于链表中,则允许执行该进程的网络行为,否则拒绝执行该进程的网络行为。进程可能由解释型语言(例如Pyhton、Shell等)、或编译型语言(C++和Java等)实现。由解释型语言实现的进程的ELF文件为解释型语言解释器的脚本。所以该方法的链表为两级结构,包括第一链表和第二链表。对于由非解释型语言实现的进程而言,将可执行文件的哈希值存入第一链表中,第二链表中对应的条目为空,这样非解释型语言实现的进程在第二链表中并未存储数据。对于由解释型语言实现的进程而言,将解释型语言解释器的哈希值存入第一链表中,将解释型语言解释器中运行参数的哈希值存入第二链表中,这样解释型语言实现的进程在第二链表中存储有数据。这样对于由解释型语言实现的进程而言,需要验证解释型语言解释器的哈希值和解释型语言解释器中运行参数的哈希值。对于非解释型语言实现的进程而言,需要验证可执行文件的哈希值即可。

进一步地,在一些实施例中,判断进程是否存在于链表中具体包括:

获取进程的可执行文件;

计算可执行文件的哈希值;

如果可执行文件的哈希值不存在于第一链表中,则进程不存在于链表中;

如果可执行文件的哈希值存在于第一链表中、且第二链表中对应的条目为空时,则进程存在于链表中;

如果可执行文件的哈希值存在于第一链表中、且第二链表中对应的条目不为空时,获取进程对应的解释型语言解释器的运行参数,计算运行参数的哈希值;如果运行参数的哈希值存在于第二链表中,则进程存在于链表中;如果运行参数的哈希值不存在于第二链表中,则进程不存在于链表中。

在本实施例中,参见图3,图3中用“链表”表示第一链表,用“次级链表”表示第二链表。该方法在判断进程是否存在于链表中时,首先,从task_struct结构体中获取进程的可执行文件,然后对可执行文件求哈希值。如果可执行文件的哈希值不存在于第一链表中,说明进程不存在于链表中。如果可执行文件的哈希值存在于第一链表中,判断第二链表中对应的条目是否为空,如果为空,说明进程由非解释型语言实现;如果不为空,说明进程由解释型语言实现。对于由非解释型语言实现的进程,只要可执行文件的哈希值存在于第一链表中,那么该进程存在于链表中。对于由解释型语言实现的进程,还需要判断运行参数的哈希值是否存在于第二链表中;如果存在,那么该进程存在于链表中。如果不存在,那么该进程不存在于链表中。其中对于pyhton而言,运行参数为pyhton运行的所有参数组成的字符串,例如可以为"Pyhton test.py"这个字符串。

进一步地,在一些实施例中,链表的维护方法包括:

当接收到进程的添加请求或删除请求时,接收进程的身份信息;身份信息包括可执行文件的哈希值,或者是解释型语言解释器的哈希值以及运行参数的哈希值;

当身份信息验证通过时,在链表中添加或删除进程,根据添加结果或删除结果配置进程的状态位。

在本实施例中,链表的维护可以在DVAgent中进行。当需要在链表中添加或删除表项(即已授权进程)时,DVAgent需要对本次添加或删除的表项(即待操作的进程)进行验证,验证通过后才在链表中添加或删除对应的表项。该方法首先接收进程的身份信息,如果进程是非解释型语言,身份信息为可执行文件的哈希值。如果进程是解释型语言,身份信息为解释型语言解释器的哈希值以及运行参数的哈希值。然后验证身份信息,当身份信息验证通过时,在链表中添加或删除进程,当添加或删除成功时,配置表项的维护状态为0,当添加或删除失败时,配置表项的维护状态为非0。该方法还支持在系统日志中查看失败原因的功能,并在删除链表中对应表项时,释放对应内存。

进一步地,在一些实施例中,当进程存在于链表中,置位进程的标志位。

在本实施例中,该方法当检测到进程存在于链表中,置位进程的标志位。例如配置进程的标志位sock为1,这样检测到进程的标志位被置位时,允许进程发送、创建Socket数据包。

一种针对网络请求的访问控制系统,包括:

链表管理单元:用于创建链表;链表包含所有允许使用Socket的已授权进程;

控制单元:用于当LSM框架的钩子函数监测到创建Socket数据包的进程、且进程读取过预设安全域的内容时,判断进程是否存在于所述链表中;如果存在,允许进程创建Socket数据包;如果不存在,拒绝进程创建Socket数据包;控制单元还用于:当LSM框架的钩子函数监测到发送Socket数据包的进程时,判断进程的标志位是否被置位,如果是,允许进程发送Socket数据包;如果不是,拒绝进程发送Socket数据包。

进一步地,在一些实施例中,链表包含第一链表和第二链表;链表管理单元具体用于:

当已授权进程为非解释型语言文件时,配置第一链表中对应的条目为可执行文件的哈希值;配置第二链表中对应的条目为空;

当已授权进程为解释型语言文件时,配置第一链表中对应的条目为解释型语言解释器的哈希值;配置第二链表中对应的条目为解释型语言解释器中运行参数的哈希值。

进一步地,在一些实施例中,控制单元具体用于:

获取进程的可执行文件;

计算可执行文件的哈希值;

如果可执行文件的哈希值不存在于第一链表中,则进程不存在于链表中;

如果可执行文件的哈希值存在于第一链表中、且第二链表中对应的条目为空时,则进程存在于链表中;

如果可执行文件的哈希值存在于第一链表中、且第二链表中对应的条目不为空时,获取进程对应的解释型语言解释器的运行参数,计算运行参数的哈希值;如果运行参数的哈希值存在于第二链表中,则进程存在于链表中;如果运行参数的哈希值不存在于第二链表中,则进程不存在于链表中。

进一步地,在一些实施例中,链表管理单元还用于:

当接收到进程的添加请求或删除请求时,接收进程的身份信息;身份信息包括可执行文件的哈希值,或者是解释型语言解释器的哈希值以及运行参数的哈希值;

当身份信息验证通过时,在链表中添加或删除进程,根据添加结果或删除结果配置进程的状态位。

进一步地,在一些实施例中,控制单元还用于:

当进程存在于链表中,置位进程的标志位。

本发明实施例所提供的系统,为简要描述,实施例部分未提及之处,可参考前述实施例中相应内容。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

相关技术
  • 一种角色权限访问控制方法及系统
  • 一种针对UDP协议流量实行动态访问控制的方法及系统
  • 一种针对综合化航电系统的分区间安全访问控制方法
技术分类

06120116510948