CN105103159A - 为方便数据变换而导入系统调用数据 - Google Patents

为方便数据变换而导入系统调用数据 Download PDF

Info

Publication number
CN105103159A
CN105103159A CN201480020417.2A CN201480020417A CN105103159A CN 105103159 A CN105103159 A CN 105103159A CN 201480020417 A CN201480020417 A CN 201480020417A CN 105103159 A CN105103159 A CN 105103159A
Authority
CN
China
Prior art keywords
data
system call
conversion
call
destination
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
Application number
CN201480020417.2A
Other languages
English (en)
Other versions
CN105103159B (zh
Inventor
R·O·耶雷尔
U·泽加尔
G·迪亚曼特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN105103159A publication Critical patent/CN105103159A/zh
Application granted granted Critical
Publication of CN105103159B publication Critical patent/CN105103159B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Abstract

本文中的技术提供被截获系统调用的“时移”,以便能够实现被截获系统调用到实际系统调用的一对多(1:n)或多对一(n:1)映射。需要在系统调用截获时出现的数据的逻辑边界(而不是物理边界)上实行的任何行动,导入(缓存)采取行动之前的数据,然后在完成时导出结果。该行动可能是相当不同的,例如检查数据、编辑数据、更改数据、限制数据、处理数据以及更新数据,等等。该技术可在数据库访问控制系统中实现。

Description

为方便数据变换而导入系统调用数据
技术领域
优选实施例总体涉及保护诸如事务处理环境的分布式计算环境中的资源。
背景技术
在计算环境中,“系统调用”是程序或进程通过其请求来自操作系统内核的服务的机制。在典型的操作系统(OS)中,如Linux(Linux是林纳斯·托瓦兹(LinusTorvalds)在美国和/或其他国家的注册商标)中,操作系统将虚拟存储器分隔为内核空间和用户空间,前者被保留用于运行操作系统内核、内核扩展、和设备驱动程序,后者是在所有用户模式的应用程序工作的地方。系统调用提供在用户空间中执行的程序或进程与在内核空间中执行的操作系统内核之间的接口。
出于安全的原因,分析和修改被程序读或写的数据可能是有益的。如果需要进行过滤或编辑(或者更一般来说,某种其它变换),则需要截获流经系统的数据并对其采取行动。当截获系统调用时,可以将这个数据发送出去用于分析,甚至可以根据预先设定的规则被修改。当需要编辑时,最简单的方法是在被截获系统调用到实际系统调用的一对一(1:1)映射内实行编辑。有几款现有的商业产品执行此功能。
然而,常常可能跨多个系统调用拆分单一事务的数据。例如,当为了对通过操作系统发送和接收的数据实行变换而截获系统调用时,不能保证被截获的数据的量包含整个逻辑包(packet)。例如,考察一个正在接收TCP包的MySQL数据库。该包分两部分被接收,首先被接收的是包头(header),然后是包体(body)。通常,包头首先被接收,并指示后续包中的字节数。现在,假设要编辑对一个数据库的查询,以将结果限制到特定的列(例如,诸如‘whereEMPLOYEE=20’的SQL语句)。要做到这一点,就要将该数据库查询修改得适合附加子句(clause)。然而,在被截获系统调用到实际系统调用的1:1的映射中,已经将包头传递到数据库,因此要改变包的大小已为时太晚。更一般来说,可能跨多个系统调用拆分单一的(例如,从数据库读的)查询。无论所需的查询或功能的性质如何,一旦将系统调用中被读或写的数据返回到用户进程(userprocess),要修改数据就为时太晚了。这种限制使现有的解决方案不能改写或编辑跨越多个系统调用的被截获数据。
发明内容
优选实施例提供一种在具有存储器的计算系统中的处理系统调用的方法,该系统调用具有关联的源和目的地,该方法包含:截获该系统调用时,应用在硬件单元中执行的功能来导入与两个或更多的实际系统调用相关联的数据,直到导入了与该系统调用相关联的完整数据集合;响应于收到对该完整数据集合实行变换的结果,通过将该结果导出至目的地而释放该系统调用。
优选地,源是该系统调用,目的地是存储器的用户空间。更优选地,源是存储器的用户空间,目的地是该系统调用。更优选地,该方法进一步包含对该完整数据集合实行变换的步骤。更优选地,该变换是以下之一:检查、分析、编辑、阻止、处理和更新。
优选地,该两个或更多的实际系统调用导致数据被读取,且在返回到请求读取的应用之前对该完整数据集合实行该变换。优选地,该两个或更多的实际系统调用导致从应用写数据,且在发起第一系统调用写之前实行该变换。
本文中的技术提供被截获系统调用的“时移”(time-shifting),以便能够实现被截获系统调用到实际系统调用的一对多(1:n)或多对一(n:1)映射。需要在系统调用截获时出现的数据的逻辑边界(而不是物理边界)上实行的任何行动,导入(spool)(缓存)采取行动之前的数据,然后在完成时导出(unspool)结果。该行动可能是相当不同的,例如检查数据、编辑数据、更改数据、限制数据、处理数据以及更新数据,等等。
本文所描述的方法假定系统调用具有相关的源和目的地。在“读”的情况下,源是原始系统调用本身,而目的地是用户空间。在“写”的情况下,源是用户空间,而目的地是原始系统调用。根据本公开,实际上对与系统调用关联的数据实施“保持”(hold)。特别地,在读的情况下,该保持导入数据,在所有数据都被读取之前不返回到用户空间。在写的情况下,该保持导入数据,直到所有将要被写入的数据都被从用户空间读出。以这样的方式保持数据,使得能够对调用被截获系统调用的用户进程透明地实行变换。此外,使用这种方法使得能够远程地进行数据的处理和实行变换,以例如避免存储器限制,从而能将不同的数据集合互相关联。
以上概述了所公开主题的一些更相关的特点。这些特点应该被解释为仅仅是说明性的。正如下面所述的那样,可以通过以不同方式应用所公开的主题或者通过修改该主题而得到许多其它有益的结果。
附图说明
为了更完整地理解本发明及其优点,现在结合附图作出以下描述,附图中:
图1示出可以在其中可实现说明性实施例的分布式数据处理环境的示例性框图;
图2是可以在其中可实现说明性实施例的数据处理系统的示例性框图;
图3示出可在其中实践本公开的非限定性实施例中的技术的、已知的本地数据库访问控制系统(LDACS)的高级操作;
图4例示一计算实体的存储器,其中可以实现本公开的导入(spooling)机制的功能;
图5例示按照本发明的处理第一类(例如“读”)系统调用的处理流程;
图6例示按照本发明的处理第二类(例如“写”)系统调用的处理流程。
具体实施方式
现在参照各附图、特别是参照图1-2,图中示出可以在其中实现本发明的示例性实施例的数据处理环境的示意图。应该明白,图1-2仅仅是示范性的,并非是要对本发明主题的各方面或实施例可以在其中实现的环境设置或暗示任何限制。在不脱离本发明的范围的情况下可以对所示出的环境作出许多修改。
现在参看各附图。图1描述了一个典型的分布式数据处理系统的图形表示,其中可以实现说明性实施方案的各个方面。分布式数据处理系统100可以包括一个计算机网络,在该网络中,可以实现说明性实施例的各方面。分布式数据处理系统100包含至少一个网络102,这是用于提供在分布式数据处理系统100中连接在一起的各种设备和计算机之间的通信链路的介质。网络102可以包括连接,如有线、无线通信链路或光纤电缆
在所示的例子中,服务器104和服务器106与存储单元102一起连接到网络108。此外,客户端110、112和114也连接到网络102。这些客户端110、112和114例如可以是个人电脑、网络计算机,等等。在所示的例子中,服务器104提供数据,例如引导文件、操作系统映像和应用程序给客户端110、112和114。在所示的例子中,客户端110、112和114是服务器104的客户端。分布式数据处理系统100可以包括其他服务器、客户端和未予示出的其它设备。
在所示的例子中,分布式数据处理系统100是互联网,网络102代表世界范围的网络连接和网关,它们利用传输控制协议/互联网协议(TCP/IP)的协议组彼此通信。在互联网的核心,是由成千上万的商业、政府、教育和其他路由数据和消息的计算机系统组成的主要节点或主机之间的高速数据通信线路的骨干。当然,分布式数据处理系统100也可以实现包括一些不同类型的网络,例如内部网、局域网(LAN)、广域网(LAN)等等。如上所述,图1旨在作为一个例子,绝非对所公开的主题的不同实施方式的结构性限制,因此,图1中所示的特定元素,不应该视为是对本发明的说明性实施例可在其中实施的环境的限制。
现在参看图2,所示的是可以在其中实现说明性实施例的各方面的示例性数据处理系统的框图。数据处理系统200是计算机的一个例子,诸如图1中的客户端110,其中可以安置实现本公开的说明性实施例的过程的计算机可用代码或指令。
现在参看图2,所示的是可以在其中实现说明性实施例的各方面的示例性数据处理系统的框图。数据处理系统200是计算机的一个例子,诸如图1中的服务器104和客户端110,其中可以安置实现本公开的说明性实施例的过程的计算机可用代码或指令。在这个说明性例子中,数据处理系统200包括通信组织202,它提供处理器单元204、存储器206、持久性存储器208、通信单元210、输入/输出(I/O)单元212和显示器214之间的通信。
处理器单元204用于执行可加载到存储器206的软件的指令。处理器单元204可以是一个或多个处理器的集合,或者可以是一个多处理器核,具体取决于特定的实现。此外,处理器单元204可以用一个或多个异构处理器系统来实现,其中在单一芯片上存在一个主处理器与一个二级处理器。作为另一个示例性例子,处理器204可以是包含多个同类型的处理器系统的对称多处理器(SMP)。
存储器206和持久性存储器208是存储设备的例子。存储设备是任何一件能够临时地和/或永久地存储信息的硬件。在这些例子中,存储器可以是例如随机存取存储器或任何其他合适的易失性或非易失性储存设备。持久性存储器208可以根据特定的实现而采取各种形式。例如,持久性存储器208可以包含一个或多个组件或设备。例如,持久性存储器208可以是硬盘、闪存、可重写光盘、可重写磁带,或上述的某种组合。持久性存储器208使用的介质也可以是可移动的。例如,可移动硬盘驱动器可用于持久性存储器208。
在这些例子中,通信单元210提供与其他数据处理系统或设备的通信。在这些例子中,通信单元210是一个网络接口卡。通信单元210可以通过使用物理和无线通信链路的一种或二者而提供通信。
输入/输出单元212允许对可以连接到数据处理系统200其他设备进行数据输入和输出。例如,输入/输出单元212可以通过键盘和鼠标为用户输入提供连接。此外,输入/输出单元212可以发送输出到打印机。显示器214提供了一种向用户显示信息的机制。
操作系统和应用程序或程序的指令位于持久性存储器208上。这些指令可以被加载到存储器206中,用于由处理器单元204执行。不同实施例的过程可以由处理器单元204用计算机实现的指令执行。计算机实现的指令可以位于存储器中,例如存储器206中。这些指令称为程序代码、计算机可用程序代码或计算机可读程序代码,它们可以被处理器单元204中的处理器读取并执行。不同的实施例中的程序代码,可以包含在不同的物理的或有形的计算机可读介质上,诸如存储器206或持久性存储器208上。
程序代码216以功能形式位于可选择为移动式的计算机可读介质218上,并可以被加载到或传输到数据处理系统200供由处理器204执行。程序代码216和计算机可读介质218构成这些例子中的计算机程序产品220。在一个例子中,计算机可读介质218可以是有形的形式,诸如插入或放置到作为持久性存储208一部分的驱动器或其他设备的光盘或磁盘,用于传输到诸如作为持久性存储208一部分的硬盘的存储设备。在有形的形式中,计算机可读介质218也可采取持久性存储器的形式,诸如连接到数据处理系统200的硬驱、U盘或闪存。计算机可读介质218的有形的形式也被称为计算机可记录介质。在某些情况下,计算机可记录介质218可能不是可移动的。
另外,程序代码216也可以从计算机可读介质218通过至通信单元210的通信链路和/或通过至输入/输出单元212的连接被传送到数据处理系统200。在示例性例子中,该通信链路和/或该连接可以是物理的或无线的。计算机可读介质也可以采取非有形的介质的形式,诸如包含程序代码的通信链路或无线传输。所示出的用于数据处理系统200的不同组件,不意味着对可以实现的不同实施例的方式提出结构性限制。不同的说明性实施例可以在包括为数据处理系统200例示的那些组件以外的组件或替代为数据处理系统200例示的那些组件的组件的数据处理系统中实现。图2所示的其他组件可能与所示的示例性例子有所不同。作为一个例子,数据处理系统200中的存储设备是可以存储数据的任何硬件设备。存储器206、持久性存储器208和计算机可读介质218是有形的形式的存储设备的例子。
在另一个例子中,可以用一个总线系统来实现通信组织202,并且总线系统可以由诸如系统总线或输入/输出总线的一个或多个总线组成。当然,总线系统可以使用提供在附接到总线系统的不同组件或设备之间传输数据的任何合适类型的架构来实现。此外,通信单元还可以包括用于发送和接收数据的一个或多个设备,诸如调制解调器或网络适配器。此外,存储器例如可以是诸如可能存在于通信组织202中的接口和内存控制器集线器(hub)中的存储器或高速缓存。
用于执行本发明的操作的计算机程序代码,可以用一种或多种编程语言的任意组合编写,编程语言包括面向对象的编程语言,诸如Java(Java和基于Java的商标和标识是甲骨文公司和/或其子公司的商标或注册商标)、Smalltalk、C++等,也包括传统的过程化编程语言,诸如“C”编程语言或类似的编程语言。程序代码可以完全地在用户的计算机上执行,部分地在用户的计算机上执行,作为独立的软件包执行,部分地在用户的计算机上并且部分地在远程计算机上执行,或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络—包括局域网(LAN)或广域网(WAN)—连接到用户的计算机,或者(例如利用因特网服务供应商而通过因特网)连接到外部计算机。
本领域的普通技术人员将明白,图1-2中的硬件,可以依具体实现而有所不同。其他内部硬件或外围设备,诸如闪存、等同的非易失性存储器或光盘驱动器等,可在图1-2所示的硬件以外使用,或者替代图1-2所示的硬件而使用。此外,在不偏离所公开的主题的范围的情况下,示例性实施例的过程也可应用于与先前所提到的非对称多处理(SMP)系统不同的多处理器数据处理系统。
正如将要看到的,本文中所描述的技术可以在诸如图1所示标准的客户机-服务器范例中进行操作,其中的客户机与在一个或多个机器构成的集合上执行的可访问因特网的基于网络的门户网站进行通信。终端用户操作能够访问门户网站和并能与门户网站互动的可连接因特网的设备(例如台式计算机、笔记本电脑、能上网的移动设备,等等)。通常情况下,每个客户机或服务器计算机都是一个如图2所示的、包含硬件和软件的数据处理系统,这些实体通过网络,诸如互联网、内联网、外联网、专用网的网络或任何其他通信介质或链接,互相交流。数据处理系统通常包括一个或多个处理器、一个操作系统、一个或多个应用程序,以及一个或多个公用程序(utilities)。数据处理系统上的应用程序提供对Web服务本地支持,包括但不限于对HTTP、SOAP、XML、WSDL、UDDI、和WSFL等等的支持。有关SOAP、WSDL、UDDI和WSFL的资料可以从万维网联盟(W3C)获得,后者负责开发和维护这些标准;关于HTTP和XML的进一步信息可以从因特网工程任务组(IETF)获得。假设熟悉这些标准。
在一个代表性但非限制性的实现中,这里的技术是在一个包含为响应HTTP和Web服务客户端用户服务或事务请求而协同工作的分布式主机组件(mainframecomponents)的事务处理系统或环境的上下文中描述的。这样的系统或环境通常包含以分布式的方式配置的多个组件。更大的多组件事务处理环境的分布式组件通常至少包含计算机、操作系统平台、应用程序、网络和相关安全引擎,其提供分布式事务处理功能—如与客户端用户的网络相互作用,以及在HTTP和Web服务的情况中的识别和认证功能。这种类型的事务处理系统或环境通常也包括一个主机组件,其至少包含计算机、操作系统平台、应用程序、网络和提供高性能的后端事务处理和大型数据库功能的相关安全引擎。
虽然并非是限制性的,本发明的技术(下面会更详细地描述)可以在已知的数据库访问控制系统(LDACS)架构中实现。LDACS也便于针对通过网络可访问的数据库进行审计和记录(logging)操作。在这个方法中,通常将进程间通信(IPC)截获(intercept)定义为确定本地和远程数据库(DB)公用接入点的访问尝试。对数据库的本地访问尝试被截获并传送到一个可用于访问尝试的网络监视的数据安全设备。因为该数据安全设备是远程的,它有时被称为“外部安全设备”(或“ESD”)。IPC截获通过一个最小足迹实现对象来执行本地访问尝试的截获,以减少资源开销。以这种方式,远程网络数据安全设备观察到通过数据库主机(DBhost)处的截获的本地访问尝试和被截获的对该数据安全装置的访问尝试的传输,以及通过网络的远程访问尝试,由此整合通过该数据安全设备对数据库资源的数据访问尝试的分析和记录。
图3示出可在其中实践本公开的技术的LDACS体系结构和操作。参考图3,环境300提供远程用户302以用于数据存储和检索操作(DB操作)的数据库(DB)主机304。用户302的通过接入网络306连接到主机304,接入网络306可以是任何合适的网络基础设施,如局域网、内联网、外联网或因特网。数据库主机304包括一个连接到数据库310的数据库服务器308,数据库310通常是一个磁盘阵列或一组大容量存储设备,如磁盘驱动器。数据库308包括一个数据库访问网关312,它以应用程序编程接口(API)的形式操作,用于用户302通过各种访问方法进行访问。
用户以用户请求314的形式发起对数据库的访问,用户请求314经过网络306,作为输入请求316发送到数据库访问网关312。数据安全装置320通过从网络306到主机304的路径上的交换机e22或其他连接设备—如抽头连接(tap)、路由器或桥接器(bridge)—而连接。数据安全装置320包括用于接收通过交换机322发送的用户请求314的数据库监控器324。数据库监控器接收并分析以抽头访问尝试318的形式输入的用户请求314,数据库监控器324根据预定的安全或访问策略分析之。数据安全设备320然后把抽头访问尝试318作为输入请求116的形式传送到访问网关(AG)312。
一般来说,数据库服务器308预计相当一部分的数据库流量(用户请求314)将通过网络306远程地到达,因此要通过数据安全设备320的检查。然而,一部分的数据库访问尝试是从主机304上执行的本地客户端330以本地访问尝试332的形式发出的。本地访问尝试332通过进程间通信(IPC)机制334到达访问网关312。这种本地访问尝试332不经过交换机322,因此可能会另行地规避数据安全装置320的检查。为了解决这个问题,一个已知的IDACS解决方案采用IPC截获(intercept)340来截获本地访问尝试332和把所截获的访问尝试342传输到本地代理350。本地代理350通过询问IPC机制334确定对应该本地访问尝试332的数据库指令352。本地代理350然后将所确定的数据库指令352发送到数据安全装置320,用于由数据库监控器324进行分析和进一步操作。以这种方式,数据安全装置320接收对数据库服务器308的所有本地和远程访问尝试,以更充分地分析、监测和防范可能是不可取的访问尝试。虽然上面描述的配置是优选的,代理350不必是本地的,而是可以被定位在与数据库主机或系统关联的其他位置或配置中。
在典型的数据库主机304中,本地客户端330可采用多种IPC机制334来发送本地访问尝试332至数据库服务器308。IPC通常是不安全的。替代的配置可以采用其他通信机制,如加密的远程方法调用。
如上所述,LCADS的描述,并非旨在是限制性的。现在所描述的技术,可以实现在其他类型的解决方案中,例如审计和合规系统、变更控制解决方案、漏洞管理解决方案、防欺诈解决方案、数据库泄漏预防解决方案等中。
更一般来说,此处所描述的技术可以在这样的任何计算环境中实现:其中一个程序或进程例如使用系统调用来请求操作系统的内核的一个服务(例如读、写或类似的服务),并且需要在与该服务相关联的数据的逻辑边界上实行某种行动。
导入系统调用数据
图4例示一个具有代表性的计算实体的系统存储结构,在其中可以实现本文所述的技术。该计算实体可以是上面参照图2所述的类型。它包括一个处理器(未予示出),和一个存储器400,存储器400被组织得包括一个虚拟存储器402,虚拟存储器又被分隔成内核空间404和用户空间406。内核支持一个操作系统内核408。进程或程序410在用户空间406中执行。系统调用诸如系统调用412,提供在用户空间406中执行的程序或进程410与在内核空间404中执行的操作系统内核408之间的接口。
按照优选实施例中,提供一种机制414,用于导入系统调用数据,例如用于诸如分析和编辑的数据变换。导入机制414提供被截获系统调用的“时移”,以便能实现被截获系统调用与实际系统调用的一对多(1:n)或多对一(n:1)映射。在这种方法中,需要在系统调用截获时出现的数据的逻辑边界(而不是物理边界)上实行的任何行动,在采取该行动前先导入(缓存)数据,完成时再导出(unspools)行动的结果。该行动可能是相当不同的,例如检查数据、编辑数据、更改数据、限制数据、处理数据、更新数据,等等,并且,该行动可以本地地或远程地执行。远程处理方法的一个示例性实施例是在以上参照图3描述的方法。
如前文所述,该方法假定系统调用414具有相关的源和目的地。在“读”的情况下,源是原始系统调用本身,而目的地是用户空间406。在“写”的情况下,源是用户空间,而目的地是原始系统调用。导入机制414在系统调用412相关联的数据上设置一个“保持”。特别地,在读的情况下,导入机制414导入该数据,在所有的数据已被读取之前不返回到用户空间。在写的情况下,导入机制414导入该数据,直到所有将要被写入的数据都被从用户空间406读取。以这种方式保持数据,使得能对调用被截获系统调用的用户进程410透明地实行变换。此外,使用这种方法,使得能够远程地进行数据的处理和实行该变换,以例如避免存储器限制,从而使不同的数据集合可以互相关联。
导入机制414通过挂钩(hooking)系统调用而操作。如下将更详细地描述的那样,该机制包括一个分析器功能(function)。当一个系统调用412被挂钩时,导入机制功能的地址被插在原始功能的地址的位置,而(该原始功能的)的那个地址则由操作系统保存。然后,当需要调用(返回到)原始系统调用时,在挂钩过程中被保存的原始系统调用的地址就被使用。为了解释的目的,一个或多个数据构造或结构,随着本公开的时移方法的执行而被缓冲机制维持和处理。这些数据结构有时被称为“缓冲区”(buffers),因此,这里所使用的“原始缓冲区”,指的是最初经过操作系统内核408的、并且通过一个或多个系统调用被发现的数据。可能有多个原始缓冲区。这个数据之所以被认为是经过,是因为在读的意义上以及从系统调用挂钩的角度来看,该数据源于内核的原始系统调用,而在写的意义上,该数据源于用户。“改变的数据缓冲区”指的是来自一个或多个原始缓冲区的、已经实行了变换的数据。“剩余计数器”指的是留在原始缓冲区中的、仍然需要被转移到无论是原始系统调用(对于读而言)还是或用户(对于写而言)的数据的量。“导入”(spooling)的意思是缓存(buffering)。因此,在导入机制的运行中,数据(原始缓冲区)被收集,连接在一起(至工作缓冲区中),实行变换,将结果存储到改变的数据缓冲区,然后,改变的数据缓冲区被抽排回(或“导出”)到原始缓冲区原本要去的地方(即,对于读而言的原始系统调用,对于写而言的用户)。
在被截获系统调用中,感兴趣的数据是与调用相关联的数据。对于一个读系统调用(例如,recv、read等)来说,该数据只有在原始系统调用被调用之后才是可用的。对一个写系统调用(例如,send、write等)来说,该数据被作为参数传入。在这两个情况下,都没有办法控制向系统调用提供的缓冲区的大小。因为这个数据以不同的方式存在,读和写系统调用必须以不同的方式进行处理,尽管一般性概念是相似的。特别地,在这两种情况下,导入/导出方法的应用都非常相似,主要差别在于发生(被截获系统调用到实际系统调用的)(1:n)映射之处。在读系统调用的情形中,整个逻辑数据包(例如数据库查询)需要(在将任何数据返回到用户之前)被收集,以便能实行任何变换。特别地,调用该系统调用的用户进程已经提供了要被填充以数据的缓冲区。因为需要在用户接收数据之前对该数据实行一个变换,被读数据被一直保持到能实行该变换。因为不能保证整个逻辑数据包将适合所提供缓冲区(也不能保证变换了的数据也适合),按照本公开,数据要被一直保存到整个原始数据包都被接收,数据被发送出去用于分析和修改(或其他变换),变换了的数据被排出(导出)回至用户。为此,如将在图5中描述的那样,通过下述方式完成,即,反复调用被截获系统调用内的原始系统调用,直到(导入机制内的)分析器功能已经检测到该包是完整的。然后,(例如由分析器)实行变换,将改变了的数据返回到被截获的系统调用。将所提供的缓冲区填充以变换了的数据,返回给用户。如果整个变换了的包在缓冲区内不能适合,则将缓冲区填充到容量,由用户进程作出的随后的系统调用将不再次调用原始系统调用,相反只是简单地以来自变换了的包中的更多数据填充所提供的缓冲区,直到该包的全部都被返回,此时再次开始该循环。
图5详细说明了在截获时被截获读系统的这个过程。该例程在步骤500通过测试一个会话(session)是否是导出的(unspooling)而开始。如果在步骤500的测试的结果是否定的,该例程将继续,在步骤502分析原始系统调用。在步骤504中,原始系统调用中的数据被保存。然后,在步骤506执行测试,以确定数据是否完整。如果在步骤506的测试的结果为否定的,该例程周期的这个部分返回到步骤502,以从原始系统调用获得额外的数据。然而,如果在步骤506的测试的结果是肯定的,这表明所有的数据是完整的,该例程继续在步骤508实行数据变换。这种变换型的性质可能是相当不同的,例如,检查、编辑、改变、限制、处理、更新,等等。对变换的性质和范围没有任何限制,这是一个已知的函数/运算。实行变换后,该例程继续在步骤510将一个剩余计数器设置到一个改变的数据缓冲区的大小。该例程然后继续在步骤512把该会话开始标记为导出的。控制然后在步骤514继续,如果在步骤500的测试的结果是肯定的,也到达这个步骤。在步骤514中,复制将在原始缓冲区安装(fit)的尽可能多的剩余的变化了的数据,并递减剩余计数器。然后在步骤516进行测试,以确定剩余计数器是否为零。如果是这样的话,在步骤518将该会话去除导出标记。该例程然后继续在步骤520返回到用户,在步骤516的测试的结果为否定的时,也到达这个步骤。这就完成了对截获读系统调用情形的处理。
在写系统调用的情况中,在调用原始系统调用之前,需要收集整个逻辑数据包,以便能够实行变换。在这种情况下,调用系统调用的用户进程已经提供了一个具有要被发送的数据的缓冲区。因为在数据被传输之前,需要对数据实行变换,所以,在能进行变换之前,需要把原始数据包全部收集在一起。如上所述,数据包是有可能分散在多个系统调用中的。也有这样的可能,即在实行变换后,新的包将不适合(fit)由用户进程提供的缓冲区。因此,直到分析器确定整个数据包已被接收,该机制收集来自用户进程的数据,并从被截获系统调用返回,如同该数据被成功传输一样。分析器然后实行变换,并将修改后的数据发送回原始系统调用(即发送原始包的最后一部分的用户进程的调用)。如果新的包在调用过程所提供的缓冲区内不适合,则调用该系统调用,必要时反复调用,而不返回到用户,直到变换了的包的最后部分已经被发送。
图6说明了在截获时写系统调用情况的详细处理流程。例程在步骤600通过保存和分析数据而开始。在步骤602,进行测试,以确定数据是否完整。如果在步骤602中的测试的结果是肯定的(数据完整),例程继续在步骤604去标记该会话为导入。例程继续在步骤606实行一个数据变换,如上所述的那样。在步骤608,将剩余计数器设置为改变了的数据缓冲区的大小。例程继续在步骤610复制将在原始缓冲区安装的尽可能多的剩余的变化了的数据,并递减剩余计数器。步骤610后,例程返回到原始系统调用。这是步骤612。然后在步骤614进行测试,以确定剩余计数器是否为零。如果不是,控制在步骤616返回到用户。但是,如果剩余的计数器为零,则控制返回到用户616。如果在步骤602的测试的结果是否定的,也到达步骤616,在这种情况下,在步骤618标记该会话标记为导入,然后返回到用户。这就完成了对截获写系统调用情形的处理。
换另一种方式来讲,在读的情况下,有一个被截获系统调用到实际系统调用的(1:n)映射,其中将一个被截获系统调用转换为多个被调度的(dispatched)调用,直到完整的数据集合被检索并且然后被返回(跨n个被截获呼叫)而不带对应的调度系统调用。在写的情况下,有一个被截获系统调用到实际系统调用的(n:1)映射,其中n-1个被截获调用没有对应的被调度的调用,第n个被截获调用包含数据集合的最后一部分,m个被调度的调用在最后的被截获调用返回之前被执行。一旦数据被导入,就可以实行变换(包括不变换)。作为一个例子,假设有一例简单的基于SQL的数据库查询“select*fromemployeewheredept=20”。如果向系统调用提交的数据被分割到含有字符串“select*fromemployee”和“wheredept=20”的两个缓冲区中,这两个字符串实际是同一查询的分部;进一步假设变换包括一个规则,即“Replace‘dept=20’with‘dept=21’whenobject=‘employee’”(当object=‘employee时,用‘dept=21’替换‘dept=20’)。另一种可能的变换可能是“在试图访问部门“20”中的对象‘employee’时放弃一个会话”(“Dropasessionwhenattemptingtoaccessobject‘employee’fromdept.‘20’”)。使用本文的方法,可以对由用户应用程序提供的数据实行这些类型的变换,而没有由传递协议(deliveryprotocol)插入的中断(breaks)或其他应用程序的限制。
因此,如已经描述的那样,导入机制是用于被截获系统调用的时移装置,具有对发送和接收的原始数据的可选的修改。正如在问题陈述中所描述的,为了在通过操作系统发送和接收的数据上实行变换的目的而截获系统调用时,不能保证截获的数据量包含整个逻辑包。例如,当截获数据库的TCP流量(traffic)时,单一的查询可能被拆分在多个读调用中。根据本公开的方法,不是执行被截获系统调用到实际系统调用的1:1映射,在读期间,被截获的数据被分析,原始系统调用按需要被重新调用,直到所有的数据都被读取;然后,就能通过操作该完整的集合而实行一个变换,然后通过重新填充原始缓冲区而返回原始调用者,可能跨多个系统调用。这使得能对调用被截获系统调用的用户进程透明地实行该变换。
此外,为了避免存储器限制,可以远程地处理数据和实行变换,从而使不同的数据集合能与彼此关联。这种方法可以用在图3中的LDACS解决方案中。因此,举例来说,这种数据关联的一个应用是保护主机数据库不受未经授权的访问。该变换被用来保护用标准的访问控制难以保护或不可能保护的数据元素。例如,通过关联数据,用户的与数据库的整个会话都可以通过从打开到关闭跟踪之而被观察。这个被授权的用户可能需要访问包含未予授权查看或修改的数据子集的表。通过变换查询,受保护的数据可以得到自动保护(例如,不用'select*fromtable',而用'select*fromtablewhere...')。然而,众所周知,关联步骤和变换步骤是复杂的,需要保持会话期间中发生的情况的历史。这过于复杂,以致不能向被截获系统调用插入直接插入码(in-line),因此,该LDACS解决方案使得能够提供单独的收集器/分析器,用于处理数据和把该信息反馈给系统调用。因为这个过程需要对用户透明,因此,本公开的技术被用来“暂停”原始系统调用,直到处理完成。
这里描述的机制的用途不止是数据库查询的编辑。这个机制可用于基于数据的内容为数据设置防火墙、选择性地审计,等等。更一般来说,这种方法可用来方便需要在与系统调用截获一起出现的数据的逻辑边界(而不是物理边界)上实行的任何变换—其中在实行该变换之前需要导入数据(并且然后要在结束时导出结果)。
本文的技术提供了许多优点。通过创建被截获系统调用到到实际系统调用的一对多(复用的)映射,可以更有效地实行变换,即使被截获数据跨越一个以上的系统调用。在1:n映射中(读情况下),实际系统调用被按需要多次重新调用,然后再返回到用户空间。特别地,该技术一直读到整个包被收集为止,然后实行该变换,然后将修改后的数据(包括修改的包头)返回到用户空间。
以上描述的缓冲机制的功能可以以内核修改的形式而实现,以独立方法的形式而实现,或以它们的某种组合的形式而实现。在任一情况下,该变换都可以被实现为由处理器执行的基于软件的功能,或者可以作为一个托管服务(包括通过SOAP/XML接口的网络服务)而提供。本文所描述的特定的硬件和软件实现细节仅用于说明性目的,而不是用来限制所描述的主题的范围。
不作为对前述内容的限制,在其中可以使用本发明方法的代表性的LDACS解决方案是Guardium(IBM、InfoSphere和Guardium是国际商业机器公司的注册商标)第8.0版。该解决方案包括一个可扩展的架构,包括收集器、聚合器和中央管理设备,以及安装在数据库服务器上的软件开发(S-Tap)代理和与内核相关联地安装的内核开发(K-Tap)代理。K-Tap收集数据,S-Tap将被收集数据传送到实行变换(和接收结果)所在的点。
本文中所描述的技术,除了读和写,还可以针对其他类型的系统调用实现。
更一般来说,在所公开的发明的上下文中的计算设备各是包含硬件和软件的数据处理系统(如图2所示),这些实体通过诸如互联网、内联网、外联网、专用网或任何其他通信介质或链接的网络互相通信。数据处理系统上的应用提供对Web和其他已知的服务和协议的本地支持,包括但不限于对HTTP、FTP、SMTP、XML、SOAP、WSDL、UDDI、和WSFL等等的支持。有关SOAP、WSDL、UDDI和WSFL的资料可以从万维网联盟(W3C)获得,后者负责开发和维护这些标准;关于HTTP、FTP、SMTP和XML的进一步信息可以从因特网工程任务组(IETF)获得。假设熟悉这些已知的标准和协议。
本文中描述的方案可能在或者协同各种服务器端架构实现,包括简单的多层体系结构、门户网站、联邦系统等等。正如所指出的,本文中的技术可以在松散耦合的服务器(包括基于“云”的)环境中实现。安全服务器本身(或其功能,诸如监控器过程)可以在云中被托管。
更一般来说,本文中所述的主题可以采取完全硬件实施例的形式、完全软件实施例的形式或者同时包含硬件单元和软件单元的形式。在一个优选的实施例中,功能以软件来实现,该软件包括但不限于固件、驻留软件、微代码等。此外,如上所述,分析引擎功能可以采取可从计算机可用的或计算机可读的介质访问的计算机程序产品的形式,其中该介质提供用于由计算机或任意指令执行系统使用或者结合计算机或任何指令系统使用的程序代码。出于该描述的目的,计算机可用的或计算机可读的介质可以是任意一种能包含、存储用于由指令执行系统、装置或设备使用或者结合指令执行系统、装置或设备使用的程序的装置。介质可以是电的、磁的、光的、电磁的、红外的或半导体的系统(或装置或设备)或者传播媒介。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前例子包括压缩盘-只读存储器(CD-ROM)、可读写压缩盘(CD-R/W)和DVD。计算机可读介质是有形的介质。
计算机程序产品可以是具有用来实现一个或多个所描述的功能的程序指令(或程序代码)的产品。这些指令或代码可以在通过网络被从远程数据处理系统下载后存储在数据处理系统中的计算机可读存储介质中。或者,这些指令或代码可以存储在服务器数据处理系统中的计算机可读存储介质中,并适于通过网络被下载到远程数据系统以用于远程系统内的计算机可读存储介质中。
在一个典型实施例中,导入机制的组件是在专用计算机中实现的,优选地在由一个或多个处理器上执行的软件中实现。该软件被维护在与一个或多个处理器相关的一个或多个数据存储库或存储器中,并且该软件可以被作为一个或多个计算机程序来实现。总的来说,在一个实施例中这个专用硬件和软件包含上文所述的导入机制。
尽管上文描述了本发明的某些实施例执行的操作特定顺序,应该理解,这样的顺序是示例性的,因为替代实施例可以以不同的顺序执行这些操作,组合某些操作,重叠某些操作,等等。在说明书中对一个给定的实施例中的引用表明所描述的实施例包括一个特定的特征、结构或特点,但是每一个实施例可能不一定非要包括该特定的特征、结构或特点。
最后,尽管已经单独地描述了给定的系统组件,本领域普通技术人员应当理解,在给定的指令、程序序列、代码部分等中有些功能可以被组合或共享。
本文所披露的技术并不局限于多组件事务处理环境,但这将是一个典型的实现。如上所述,上述功能可用于其中的服务器设置的会话管理数据可能被(不同会话中的原始用户或另一个用户)通过相同的客户端浏览器重新使用的任何系统、设备、门户、网站等等。

Claims (21)

1.一种用于在有存储器的计算系统中处理系统调用的方法,该系统调用具有关联的源和目的地,该方法包含:
截获该系统调用时,应用在硬件单元中执行的功能来导入与两个或更多的实际系统调用相关联的数据,直到导入了与该系统调用相关联的完整数据集合;
响应于收到对该完整数据集合实行变换的结果,通过将该结果导出至目的地而释放该系统调用。
2.按照权利要求1的方法,其中,源是该系统调用,目的地是存储器的用户空间。
3.按照权利要求1的方法,其中,源是存储器的用户空间,目的地是该系统调用。
4.按照前述权利要求的任何之一的方法,进一步包含对该完整数据集合实行变换。
5.按照权利要求4的方法,其中,该变换是以下之一:检查、分析、编辑、阻止、处理和更新。
6.按照权利要求4的方法,其中,该两个或更多的实际系统调用导致数据被读取,且在返回到请求读取的应用之前对该完整数据集合实行该变换。
7.按照权利要求4的方法,其中,该两个或更多的实际系统调用导致从应用写数据,且在发起第一系统调用写之前实行该变换。
8.一种用于处理系统调用的装置,该系统调用具有关联的源和目的地,该装置包含:用于存储计算机程序指令的计算机存储器,当计算机程序指令被处理器执行时执行:
截获该系统调用时,应用一个在硬件单元中执行的功能,以导入与两个或更多的实际系统调用相关联的数据,直到导入了与该系统调用相关联的完整数据集合;
响应于收到对该完整数据集合实行变换的结果,通过将该结果导出至目的地而释放该系统调用。
9.按照权利要求8的装置,其中,源是该系统调用,目的地是存储器的用户空间。
10.按照权利要求8的装置,其中,源是存储器的用户空间,目的地是该系统调用。
11.按照权利要求8至10的任何之一的装置,其中的指令进一步执行:对该完整数据集合实行变换。
12.按照权利要求11的装置,其中,该变换是以下之一:检查、分析、编辑、阻止、处理和更新。
13.按照权利要求11的装置,其中,该两个或更多的实际系统调用导致数据被读取,且在返回到请求读取的应用之前对该完整数据集合实行该变换。
14.按照权利要求11的装置,其中,该两个或更多的实际系统调用导致从应用写数据,且在发起第一系统调用写之前实行该变换。
15.一种存储在计算机存储介质上的、用于在数据处理系统中处理系统调用的计算机程序,该系统调用具有关联的源和目的地,该计算机程序包含计算机程序指令,当计算机程序指令被数据处理系统执行时执行以下步骤:
截获该系统调用时,应用一个在硬件单元中执行的功能,以导入与两个或更多的实际系统调用相关联的数据,直到导入了与该系统调用相关联的完整数据集合;
响应于收到对该完整数据集合实行变换的结果,通过将该结果导出至目的地而释放该系统调用。
16.按照权利要求15的计算机程序,其中,源是该系统调用,目的地是存储器的用户空间。
17.按照权利要求15的计算机程序,其中,源是存储器的用户空间,目的地是该系统调用。
18.按照权利要求15至17的任何之一的计算机程序,其中的指令进一步执行:对该完整数据集合实行变换。
19.按照权利要求18的方法,其中,该变换是以下之一:检查、分析、编辑、阻止、处理和更新。
20.按照权利要求18的计算机程序,其中,该两个或更多的实际系统调用导致数据被读取,且在返回到请求读取的应用之前对该完整数据集合实行该变换。
21.按照权利要求18的计算机程序,其中,该两个或更多的实际系统调用导致从应用写数据,且在发起第一系统调用写之前实行该变换。
CN201480020417.2A 2013-04-10 2014-03-11 用于处理系统调用的方法、装置和计算机存储介质 Expired - Fee Related CN105103159B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/860,000 2013-04-10
US13/860,000 US9069628B2 (en) 2013-04-10 2013-04-10 Spooling system call data to facilitate data transformation
PCT/IB2014/059621 WO2014167430A1 (en) 2013-04-10 2014-03-11 Spooling system call data to facilitate data transformation

Publications (2)

Publication Number Publication Date
CN105103159A true CN105103159A (zh) 2015-11-25
CN105103159B CN105103159B (zh) 2018-06-26

Family

ID=51687719

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480020417.2A Expired - Fee Related CN105103159B (zh) 2013-04-10 2014-03-11 用于处理系统调用的方法、装置和计算机存储介质

Country Status (4)

Country Link
US (1) US9069628B2 (zh)
CN (1) CN105103159B (zh)
DE (1) DE112014001949T5 (zh)
WO (1) WO2014167430A1 (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732211B1 (en) * 2000-09-18 2004-05-04 Ensim Corporation Intercepting I/O multiplexing operations involving cross-domain file descriptor sets
US20100030737A1 (en) * 2008-07-29 2010-02-04 Volker Gunnar Scheuber-Heinz Identity enabled data level access control
US7748027B2 (en) * 2005-05-11 2010-06-29 Bea Systems, Inc. System and method for dynamic data redaction
CN102904889A (zh) * 2012-10-12 2013-01-30 北京可信华泰信息技术有限公司 支持跨平台统一管理的强制访问控制系统及方法
CN103020257A (zh) * 2012-12-21 2013-04-03 曙光信息产业(北京)有限公司 数据操作的实现方法和装置
CN103605930A (zh) * 2013-11-27 2014-02-26 湖北民族学院 一种基于hook和过滤驱动的双重文件防泄密方法及系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2067650C (en) * 1991-07-24 1996-10-22 Eric Jonathan Bauer Method and apparatus for operating a computer-based file system
US6006214A (en) 1996-12-04 1999-12-21 International Business Machines Corporation Database management system, method, and program for providing query rewrite transformations for nested set elimination in database views
JP4129819B2 (ja) * 2003-10-06 2008-08-06 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース検索システム及びその検索方法並びにプログラム
US7437362B1 (en) 2003-11-26 2008-10-14 Guardium, Inc. System and methods for nonintrusive database security
US7506371B1 (en) 2004-01-22 2009-03-17 Guardium, Inc. System and methods for adaptive behavior based access control
US7426512B1 (en) 2004-02-17 2008-09-16 Guardium, Inc. System and methods for tracking local database access
GB0505297D0 (en) 2005-03-15 2005-04-20 Level 5 Networks Ltd Redirecting instructions
US8635660B2 (en) 2005-12-06 2014-01-21 Oracle International Corporation Dynamic constraints for query operations
US8590034B2 (en) 2006-06-21 2013-11-19 Basit Hussain Method, system and apparatus for providing stateful information redaction
CN100504792C (zh) 2006-10-06 2009-06-24 国际商业机器公司 在用户空间中进行系统调用截取的方法和系统
WO2009104720A1 (ja) * 2008-02-22 2009-08-27 日本電気株式会社 リソース利用制御システム、リソース利用制御方法及びリソース利用制御用プログラム
US20100128866A1 (en) 2008-11-26 2010-05-27 Microsoft Corporation Modification of system call behavior

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732211B1 (en) * 2000-09-18 2004-05-04 Ensim Corporation Intercepting I/O multiplexing operations involving cross-domain file descriptor sets
US7748027B2 (en) * 2005-05-11 2010-06-29 Bea Systems, Inc. System and method for dynamic data redaction
US20100030737A1 (en) * 2008-07-29 2010-02-04 Volker Gunnar Scheuber-Heinz Identity enabled data level access control
CN102904889A (zh) * 2012-10-12 2013-01-30 北京可信华泰信息技术有限公司 支持跨平台统一管理的强制访问控制系统及方法
CN103020257A (zh) * 2012-12-21 2013-04-03 曙光信息产业(北京)有限公司 数据操作的实现方法和装置
CN103605930A (zh) * 2013-11-27 2014-02-26 湖北民族学院 一种基于hook和过滤驱动的双重文件防泄密方法及系统

Also Published As

Publication number Publication date
WO2014167430A1 (en) 2014-10-16
US20140310727A1 (en) 2014-10-16
DE112014001949T5 (de) 2015-12-31
US9069628B2 (en) 2015-06-30
CN105103159B (zh) 2018-06-26

Similar Documents

Publication Publication Date Title
US20230291786A1 (en) Client-directed placement of remotely-configured service instances
US10698742B2 (en) Operation efficiency management with respect to application compile-time
US9304822B2 (en) Resource configuration for a network data processing system
JP5717879B2 (ja) クラウド環境をサポートするマルチテナント監査認識
US20160127465A1 (en) Cross-platform data synchronization
US9270703B1 (en) Enhanced control-plane security for network-accessible services
US10834059B2 (en) Secure message handling of an application across deployment locations
CN111598575A (zh) 业务流程控制方法、装置、电子设备和可读存储介质
US20220043927A1 (en) Dynamic monitoring of movement of data
US10951540B1 (en) Capture and execution of provider network tasks
US10706102B2 (en) Operation efficiency management with respect to application run-time
US10693939B2 (en) Providing modified protocol responses
US9654352B2 (en) Brokering data access requests and responses
US11709750B2 (en) Dynamically mapping software infrastructure utilization
CN105103159A (zh) 为方便数据变换而导入系统调用数据
US9262092B2 (en) Management of extent checking in a storage controller during copy services operations
Majumdar et al. Middleware architecture for sensor-based bridge infrastructure management
US20230177192A1 (en) Secure compartmented access infrastructure for sensitive databases
US11757837B2 (en) Sensitive data identification in real time for data streaming
Ho Auto Scaling Infrastructure for Fit Restaurant with Nginx and Docker
US9906619B2 (en) Method, system, and computer program product to update content on networked cache servers
CN117730321A (zh) 用于运行时微服务保护的引用策略的自动合成
St. Arnaud et al. CANARIE’s Wavelength Disk Drive Project: Experiences from Phase I and Outlook for the Future

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180626

Termination date: 20210311