CN115051986B - 一种Redis集群进行鉴权的方法和装置 - Google Patents
一种Redis集群进行鉴权的方法和装置 Download PDFInfo
- Publication number
- CN115051986B CN115051986B CN202210580520.9A CN202210580520A CN115051986B CN 115051986 B CN115051986 B CN 115051986B CN 202210580520 A CN202210580520 A CN 202210580520A CN 115051986 B CN115051986 B CN 115051986B
- Authority
- CN
- China
- Prior art keywords
- white list
- whitelist
- sub
- file
- domain name
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 152
- 230000008569 process Effects 0.000 claims abstract description 56
- 238000012545 processing Methods 0.000 claims abstract description 29
- 238000004458 analytical method Methods 0.000 claims description 29
- 238000012986 modification Methods 0.000 claims description 20
- 230000004048 modification Effects 0.000 claims description 20
- 239000000872 buffer Substances 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 17
- 230000015654 memory Effects 0.000 claims description 14
- 238000012217 deletion Methods 0.000 claims description 13
- 230000037430 deletion Effects 0.000 claims description 13
- 230000001960 triggered effect Effects 0.000 claims description 10
- 230000002159 abnormal effect Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000012423 maintenance Methods 0.000 abstract description 9
- 230000008859 change Effects 0.000 abstract description 6
- 238000011144 upstream manufacturing Methods 0.000 abstract description 6
- 238000012795 verification Methods 0.000 abstract description 6
- 238000003491 array Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000009131 signaling function Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000030279 gene silencing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0884—Network architectures or network communication protocols for network security for authentication of entities by delegation of authentication, e.g. a proxy authenticates an entity to be authenticated on behalf of this entity vis-à-vis an authentication entity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
Abstract
本发明的目的是提供一种Redis集群进行鉴权的方法和代理中间件。所述方法包括:代理中间件在主进程中生成白名单子进程来解析白名单;代理中间件在该子进程中基于解析后的白名单,执行相应的白名单处理操作。本申请实施例具有以下优点:通过生成白名单子进程来对白名单进行解析和处理,通过在Redis集群中的代理中间件引入IP白名单和域名白名单鉴权功能,从而能够对用户的IP以及读取写权限进行鉴权验证,增强了Redis集群数据的安全性;并且,根据本申请实施例的代理中间件通过感知客户端设备的上游实例变化而进行白名单的更新,无需运维人员的参与,提升了效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种Redis集群进行鉴权的方法和装置。
背景技术
Redis(REmote DIctionary Server)是当前流行的键-值存储系统,支持string,hash,set,zset,list等数据结构。开源的twemproxy作为Redis的代理中间件,用户连接访问twemproxy,由twemproxy统一对其读写请求进行转发。
基于现有技术的方案,基于twemproxy代理中间件和redis搭建的集群,用户可以直接通过twemproxy就直接获取到Redis实例中的数据,在该层缺乏有效通用的白名单鉴权方案,会存在线下误连线上或者未授权用户非法访问的风险,从而导致Redis内的数据泄露或者被篡改。有些基于现有技术的方案在部署twemproxy的机器上通过类似linux内置的iptables进行访问权限控制,然而该方式会加重Redis集群运维复杂度。
发明内容
本发明的目的是提供一种Redis集群进行鉴权的方法和装置。
根据本申请的实施例,提供了一种Redis集群进行鉴权的方法,其中,所述方法包括:
代理中间件在主进程中生成白名单子进程来解析白名单;
代理中间件在该子进程中基于解析后的白名单,执行相应的白名单处理操作。
根据本申请的实施例,提供了一种用于Redis集群进行鉴权的装置,其中,所述装置包含于代理中间件,所述装置包括:
用于在主进程中生成白名单子进程来解析白名单的单元;
用于在该子进程中基于解析后的白名单,执行相应的白名单处理操作的单元。
根据本申请的实施例,提供了一种用于Redis集群进行鉴权的系统,所述系统包括多个Redis节点、客户端设备以及如本申请实施例的代理中间件
根据本申请的实施例,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现本申请实施例的方法。
根据本申请的实施例,提供了一种计算机可读的存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现本申请实施例的方法。
与现有技术相比,本申请实施例具有以下优点:根据本申请实施例的代理中间件通过生成白名单子进程来对白名单进行解析和处理,通过在Redis集群中的代理中间件引入IP白名单和域名白名单鉴权功能,从而能够对用户的IP以及读取写权限进行鉴权验证,增强了Redis集群数据的安全性;并且,根据本申请实施例的代理中间件通过感知客户端设备的上游实例变化而进行白名单的更新,无需运维人员的参与,提升了效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出了根据本申请实施例的Redis集群进行鉴权的方法流程图;
图2示出了根据本申请实施例的用于Redis集群进行鉴权的装置的结构示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本申请,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本申请。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本申请,也应包含在本申请保护范围以内,并以引用方式包含于此。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本申请的示例性实施例的目的。但是本申请可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
下面结合附图对本发明作进一步详细描述。
图1示出了根据本申请实施例的Redis集群进行鉴权的方法流程图。所述方法包括步骤S1、步骤S2。
参照图1,在步骤S1中,代理中间件在主进程中生成白名单子进程来解析白名单。
根据一个实施例,所述代理中间件为Twemproxy。通过在Twemproxy层上实现的白名单功能,从而能够对用户的IP以及读取写权限进行鉴权验证,例如,仅允许在白名单内范围的IP授权。
具体地,代理中间件在主进程中维持其主要的请求转发操作,并在主进程中单独派生出一个白名单子进程,用来解析白名单。
其中,所述白名单包括IP白名单和/或域名白名单。所述域名白名单通过解析域名来反解得到实际对应的后段IP白名单列表。
例如,分别创建两个白名单文件,一个是IP白名单文件,其包含IP格式的白名单列表,对应的权限可设置为rw/r/w,分别表示读写/只读/只写的权限。另一个是域名白名单文件,该文件中每行配置的是名字服务名称,每个名字服务由命令行工具解析成为对应的IP列表。
优选地,代理中间件采用双存储器(buffer)来存储白名单,详见后文步骤S3的相关描述。
根据一个实施例,代理中间件在所述白名单子进程中执行初始化操作。
其中,所述初始化操作包括但不限于以下至少任一项:
1)调整白名单子进程的优先级,使其优先级低于主进程的优先级;例如,将白名单子进程的优先级设置为最低优先级,使得主进程的所有进程的优先级均高于白名单子进程的优先级。
2)对白名单子进程的信号处理函数进行重载;由于白名单子进程中的信号处理函数和主进程不一致,需要重新编写白名单子进程对应的一系列信号函数。
3)关闭与白名单不相关的文件描述符;由于子进程的创建默认继承父进程的所有文件描述符,而大部分文件描述符不会在白名单进程中所用到,需要及时关闭从而释放相应的资源。
4)Coredump保护机制;用于控制生成coredump文件的频率,coredump文件频率达到一定频次后进入到静默状态。该部分的操作将在后文实施例中进行描述,此处不在赘述。
其中,针对不同类型的白名单,相应的解析的方式包括:
1)如果只有IP白名单,则只对IP白名单文件进行解析。并且,每轮触发白名单解析的时候,判断文件的最后修改时间是否有变化,如果无变化,则不对此文件进行解析;
2)如果只有域名白名单,则只对域名白名单文件进行解析。并且,每轮触发白名单解析的时候,判断文件的最后修改时间是否有变化,如果无变化,则进一步判断是否达到强制解析域名白名单的时间间隔阈值,如果是,则解析域名白名单,否则不对此文件进行解析;
3)如果IP白名单和域名白名单均存在,则进一步判定两个白名单文件的最后修改时间;
i)如果IP白名单文件的最后修改时间有变化,则优先解析IP白名单,再解析域名白名单;
ii)如果IP白名单文件和域名白名单文件的最后修改时间均未变化,则进一步判断是否达到强制解析域名白名单的时间间隔阈值,如果是,则优先解析域名白名单;
iii)如果IP白名单文件的最后修改时间未变化,而域名白名单文件的最后修改时间有变化,则优先解析域名白名单,再强制解析IP白名单。
继续参照图1进行说明,在步骤S2中,代理中间件在该子进程中基于解析后的白名单,执行相应的白名单处理操作。
根据一个实施例,所述白名单处理操作包括白名单的更新操作,白名单子进程同时监测IP白名单和域名白名单对应的两个文件,如果文件有修改,则会相应地更新文件。对于域名白名单,会内部维系一个循环计数器(timer),达到预定的时间间隔阈值则强制解析域名白名单里的内容(即使文件并没有修改)。
上述白名单的更新方式,使得中间件通过感知客户端设备的上游实例变化而进行白名单的更新,无需运维人员的参与。
对于每轮白名单更新,代理中间件都会和上一次结果进行比较,按照一定策略进行结果归并处理,具体的操作在下面实施例的步骤S201和S202中进行说明。
根据一个实施例,所述白名单处理操作包括比较和归并,所述步骤S2包括步骤S201和步骤S202。
在步骤S201中,比较上一次解析白名单和本次解析白名单的数量和校验和。
具体地,每完整地解析一次IP白名单和/或域名白名单,则计算相应地校验和。接着,比较上一次解析白名单和本次解析白名单的数量和校验和。
在步骤S202中,如果白名单中的IP数量发生变化,或者IP数量未变但校验和不一致,则更新白名单并基于两次解析结果执行归并操作。
其中,将两次解析的结果在内存中进行归并操作,并存储在同一内存地址当中。并且,在归并操作的过程中,将重复的IP进行过滤,相同的IP直保留一次。
例如,对于白名单的双buffer而言,实际两块有序的递增数组,想要归并后仍然维持有序递增,可以从后向前防止较大袁术,如果数组1的前M个元素设置完成后,并且数组2有剩余,则直接把数组2的元素拷贝到数组1当中即可,整个归并的时间复杂度是O(M+N)。
优选地,由于归并后的结果可能有重复的元素,通过数据去重的操作来去除重复的元素。例如通过“快慢双指针”法,通过O(N)时间复杂度和O(1)空间复杂度来完成数据去重的效果。
具体地,如果本次解析与上一次解析的IP数量相同,则进一步比较两次解析相应的校验和;如果两者的校验和一致,则表示本次解析的所有IP列表和上一次保持一致;如果两者的校验和不一致(表示两次解析的结果有差别),则将两次解析的结果执行归并操作,并相应地更新校验和。
根据一个实施例,所述步骤S2还包括步骤S203。
在步骤S203中,如果本次解析的白名单中的IP数量减少,并且该数量减少的情况持续了预定数量个周期,则执行白名单删除操作。
具体地,如果执行归并操作后的结果仍然是上一次解析结果的子集,则说明本次解析的白名单中IP数量减少了。此时触发延迟删除保护机制,通过计数器记录接下来每轮解析白名单并发生IP数量减少的次数。如果IP减少的情况持续了N个周期,则执行白名单删除操作。如果归并操作后的结果不是上一次解析结果的子集,则表示发生了有效归并,相应地将该计时器清零。
通过步骤S203的操作,在数量减少的情况持续了预定数量个周期才执行白名单删除操作,通过延迟删除的方式来防止Client层实例额误删除。
根据一个实施例,所述方法包括步骤S3。
在步骤S3中,代理中间件创建两个缓存区(buffer)来存储白名单,使得主进程的读取操作和子进程的解析操作分别使用各自的缓存区。
根据一个示例,采用如下所示的数据结构:
在该数据结构中,引入双缓存器(buffer)的设计,使用两个buffer来存储白名单,分别为对应于主进程的whitelist_buf1和对应于白名单子进程的whitelist_buf2,使得主进程的核心转发逻辑处理和白名单子进程的白名单解析不会发生冲突,且无需加锁。当主进程读取whitelist_buf1的内容时,白名单子进程进行解析使用的是whitelist_buf2。并且,通过whitelist_tag来对两个buffer进行区分,whitelist_tag是一个int32的数字,它的值为0或1,为0的时候指向whitelist_buf1,为1的时候指向whitelist_buf2。另外,whitelist_cnt表示本块buffer当中白名单的数量,whitelist_checksum表示本块buffer中白名单的校验和。每个白名单实际存储用的是一个perm_t,即对应IP的数字格式(例如:127.0.0.1可以转成2130706433),以及其对应的权限,权限的r/w/rw实际是通过位控制实现。
根据一个实施例,所述方法包括S4和步骤S5。
在步骤S4中,启动白名单进程后,监测产生coredump文件的次数。其中,在解析域名白名单时若出现非预期的SIGSEGV段错误到时白名单进程异常退出,则会产生coredump文件。
在步骤S5中,如果在预定时间内产生coredump文件的次数超过预定阈值,则进入静默状态。
例如,在白名单子进程其启动时,代理中间件维系一个计数器来记录产生coredump文件的次数。如果在预定时间范围内计数器记录的数量超过预定阈值,则进入静默状态,以停止解析白名单,从而避免反复因为相同原因而多次产生coredump导致机器磁盘IO打满。
根据一个实施例,所述方法包括S6。
在步骤S6中,如果白名单子进程异常退出,则在主进程中生成新的白名单子进程。
优选地,根据本实施例的方法包括步骤S7和步骤S8。
在步骤S7中,监测白名单子进程异常退出的次数。
在步骤S8中,如果在预定时间内异常退出的次数超过预定阈值,则进入静默期。
其中,主进程在静默期内不再生成新的子进程,直至过了静默期。
根据一个实施例,所述方法包括步骤S9。
在步骤S9中,制定适用于紧急情况的命令。
其中,所述命令包括但不限于:
1)查询Redis集群的白名单状态;该白名单状态包括各种用于指示白名单是否开启的信息;
2)开启所有Redis集群的白名单;
3)关闭所有Redis集群的白名单。
通过制定上述命令,使得在紧急情况下能够基于这些命令通过一键操作来开启或关闭白名单功能。
优选地,为上述命令添加特定属性“X”,使得只有对应白名单IP带有X属性的情况下,才允许执行白名单查询、开启关闭等相关命令,从而仅允许一部分人(如维护人员)能进行以上操作。
根据本申请实施例的方法,根据本申请实施例的代理中间件通过生成白名单子进程来对白名单进行解析和处理,通过在Redis集群中的代理中间件引入IP白名单和域名白名单鉴权功能,从而能够对用户的IP以及读取写权限进行鉴权验证,增强了Redis集群数据的安全性;并且,根据本申请实施例的代理中间件通过感知客户端设备的上游实例变化而进行白名单的更新,无需运维人员的参与,提升了效率。
图2示出了根据本申请实施例的用于Redis集群进行鉴权的装置的结构示意图。所述装置包含于代理中间件。
所述装置包括:用于在主进程中生成白名单子进程来解析白名单的单元(以下简称“解析单元1”)和用于在该子进程中基于解析后的白名单,执行相应的白名单处理操作的单元(以下简称“处理单元2”)。
参照图2,解析单元1在主进程中生成白名单子进程来解析白名单。
根据一个实施例,所述代理中间件为Twemproxy。通过在Twemproxy层上实现的白名单功能,从而能够对用户的IP以及读取写权限进行鉴权验证,例如,仅允许在白名单内范围的IP授权。
具体地,代理中间件在主进程中维持其主要的请求转发操作,并在主进程中单独派生出一个白名单子进程,用来解析白名单。
其中,所述白名单包括IP白名单和/或域名白名单。所述域名白名单通过解析域名来反解得到实际对应的后段IP白名单列表。
例如,分别创建两个白名单文件,一个是IP白名单文件,其包含IP格式的白名单列表,对应的权限可设置为rw/r/w,分别表示读写/只读/只写的权限。另一个是域名白名单文件,该文件中每行配置的是名字服务名称,每个名字服务由命令行工具解析成为对应的IP列表。
优选地,代理中间件采用双存储器(buffer)来存储白名单,详见后文的相关描述。
根据一个实施例,代理中间件在所述白名单子进程中执行初始化操作。
其中,所述初始化操作包括但不限于以下至少任一项:
1)调整白名单子进程的优先级,使其优先级低于主进程的优先级;例如,将白名单子进程的优先级设置为最低优先级,使得主进程的所有进程的优先级均高于白名单子进程的优先级。
2)对白名单子进程的信号处理函数进行重载;由于白名单子进程中的信号处理函数和主进程不一致,需要重新编写白名单子进程对应的一系列信号函数。
3)关闭与白名单不相关的文件描述符;由于子进程的创建默认继承父进程的所有文件描述符,而大部分文件描述符不会在白名单进程中所用到,需要及时关闭从而释放相应的资源。
4)Coredump保护机制;用于控制生成coredump文件的频率,coredump文件频率达到一定频次后进入到静默状态。该部分的操作将在后文实施例中进行描述,此处不在赘述。
其中,针对不同类型的白名单,相应的解析的方式包括:
1)如果只有IP白名单,则只对IP白名单文件进行解析。并且,每轮触发白名单解析的时候,判断文件的最后修改时间是否有变化,如果无变化,则不对此文件进行解析;
2)如果只有域名白名单,则只对域名白名单文件进行解析。并且,每轮触发白名单解析的时候,判断文件的最后修改时间是否有变化,如果无变化,则进一步判断是否达到强制解析域名白名单的时间间隔阈值,如果是,则解析域名白名单,否则不对此文件进行解析;
3)如果IP白名单和域名白名单均存在,则进一步判定两个白名单文件的最后修改时间;
i)如果IP白名单文件的最后修改时间有变化,则优先解析IP白名单,再解析域名白名单;
ii)如果IP白名单文件和域名白名单文件的最后修改时间均未变化,则进一步判断是否达到强制解析域名白名单的时间间隔阈值,如果是,则优先解析域名白名单;
iii)如果IP白名单文件的最后修改时间未变化,而域名白名单文件的最后修改时间有变化,则优先解析域名白名单,再强制解析IP白名单。
继续参照图2进行说明,处理单元2在该子进程中基于解析后的白名单,执行相应的白名单处理操作。
根据一个实施例,所述白名单处理操作包括白名单的更新操作,白名单子进程同时监测IP白名单和域名白名单对应的两个文件,如果文件有修改,则会相应地更新文件。对于域名白名单,会内部维系一个循环计数器(timer),达到预定的时间间隔阈值则强制解析域名白名单里的内容(即使文件并没有修改)。
上述白名单的更新方式,使得中间件通过感知客户端设备的上游实例变化而进行白名单的更新,无需运维人员的参与。
对于每轮白名单更新,代理中间件都会和上一次结果进行比较,按照一定策略进行结果归并处理,具体的操作在后文的实施例中进行说明。
根据一个实施例,所述白名单处理操作包括比较和归并,所述处理单元2比较上一次解析白名单和本次解析白名单的数量和校验和。具体地,每完整地解析一次IP白名单和/或域名白名单,则计算相应地校验和。接着,比较上一次解析白名单和本次解析白名单的数量和校验和。
接着,如果白名单中的IP数量发生变化,或者IP数量未变但校验和不一致,则处理单元2更新白名单并基于两次解析结果执行归并操作。
其中,将两次解析的结果在内存中进行归并操作,并存储在同一内存地址当中。并且,在归并操作的过程中,将重复的IP进行过滤,相同的IP直保留一次。
例如,对于白名单的双buffer而言,实际两块有序的递增数组,想要归并后仍然维持有序递增,可以从后向前防止较大袁术,如果数组1的前M个元素设置完成后,并且数组2有剩余,则直接把数组2的元素拷贝到数组1当中即可,整个归并的时间复杂度是O(M+N)。
优选地,由于归并后的结果可能有重复的元素,通过数据去重的操作来去除重复的元素。例如通过“快慢双指针”法,通过O(N)时间复杂度和O(1)空间复杂度来完成数据去重的效果。
具体地,如果本次解析与上一次解析的IP数量相同,则进一步比较两次解析相应的校验和;如果两者的校验和一致,则表示本次解析的所有IP列表和上一次保持一致;如果两者的校验和不一致(表示两次解析的结果有差别),则将两次解析的结果执行归并操作,并相应地更新校验和。
根据一个实施例,如果本次解析的白名单中的IP数量减少,并且该数量减少的情况持续了预定数量个周期,则处理单元2执行白名单删除操作。
具体地,如果执行归并操作后的结果仍然是上一次解析结果的子集,则说明本次解析的白名单中IP数量减少了。此时触发延迟删除保护机制,通过计数器记录接下来每轮解析白名单并发生IP数量减少的次数。如果IP减少的情况持续了N个周期,则处理单元2执行白名单删除操作。如果归并操作后的结果不是上一次解析结果的子集,则表示发生了有效归并,处理单元2相应地将该计时器清零。
通过该操作,在数量减少的情况持续了预定数量个周期才执行白名单删除操作,通过延迟删除的方式来防止Client层实例额误删除。
根据一个实施例,所述装置包括缓存创建单元。
缓存创建单元创建两个缓存区来存储白名单,使得主进程的读取操作和子进程的解析操作分别使用各自的缓存区。
根据一个实施例,所述装置包括监测单元和静默执行单元。
启动白名单进程后,监测单元监测产生coredump文件的次数。其中,在解析域名白名单时若出现非预期的SIGSEGV段错误到时白名单进程异常退出,则会产生coredump文件。
如果在预定时间内产生coredump文件的次数超过预定阈值,则静默执行单元进入静默状态。
例如,在白名单子进程其启动时,代理中间件维系一个计数器来记录产生coredump文件的次数。如果在预定时间范围内计数器记录的数量超过预定阈值,则进入静默状态,以停止解析白名单,从而避免反复因为相同原因而多次产生coredump导致机器磁盘IO打满。
根据一个实施例,所述装置包括异常生成单元。
如果白名单子进程异常退出,则异常生成单元在主进程中生成新的白名单子进程。
优选地,根据本实施例的包括异常监测单元和异常静默单元。
异常监测单元监测白名单子进程异常退出的次数。
如果在预定时间内异常退出的次数超过预定阈值,则异常静默单元进入静默期。
其中,主进程在静默期内不再生成新的子进程,直至过了静默期。
根据一个实施例,所述装置包括命令指定单元。
异常静默单元制定适用于紧急情况的命令。
其中,所述命令包括但不限于:
1)查询Redis集群的白名单状态;该白名单状态包括各种用于指示白名单是否开启的信息;
2)开启所有Redis集群的白名单;
3)关闭所有Redis集群的白名单。
通过制定上述命令,使得在紧急情况下能够基于这些命令通过一键操作来开启或关闭白名单功能。
优选地,为上述命令添加特定属性“X”,使得只有对应白名单IP带有X属性的情况下,才允许执行白名单查询、开启关闭等相关命令,从而仅允许一部分人(如维护人员)能进行以上操作。
根据本申请实施例的方案,根据本申请实施例的代理中间件通过生成白名单子进程来对白名单进行解析和处理,通过在Redis集群中的代理中间件引入IP白名单和域名白名单鉴权功能,从而能够对用户的IP以及读取写权限进行鉴权验证,增强了Redis集群数据的安全性;并且,根据本申请实施例的代理中间件通过感知客户端设备的上游实例变化而进行白名单的更新,无需运维人员的参与,提升了效率。
本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个功能或步骤的电路。
另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (10)
1.一种Redis集群进行鉴权的方法,其中,所述方法包括:
代理中间件在主进程中生成白名单子进程来解析白名单;
代理中间件在该子进程中基于解析后的白名单,执行相应的白名单处理操作;
其中,所述白名单包括IP白名单和/或MNS白名单,所述解析白名单的方式包括:
对于IP白名单,每轮触发白名单解析的时候,判断文件的最后修改时间是否有变化,如果无变化,则不对此文件进行解析;对于域名白名单,每轮触发白名单解析的时候,判断文件的最后修改时间是否有变化,如果无变化,则进一步判断是否达到强制解析域名白名单的时间间隔阈值,如果是,则解析域名白名单,否则不对此文件进行解析;
其中,所述基于解析后的白名单,执行相应的白名单处理操作的步骤包括:
比较上一次解析白名单和本次解析白名单的数量和校验和;
如果白名单中的IP数量发生变化,或者IP数量未变但校验和不一致,则更新白名单并基于两次解析结果执行归并操作;
如果本次解析的白名单中的IP数量减少,并且该数量减少的情况持续了预定数量个周期,则执行白名单删除操作。
2.根据权利要求1所述的方法,其中,所述方法包括:
代理中间件创建两个缓存区(buffer)来存储白名单,使得主进程的读取操作和子进程的解析操作分别使用各自的缓存区。
3.根据权利要求1或2所述的方法,其中,所述方法包括:
启动白名单进程后,监测产生coredump文件的次数;
如果在预定时间内产生coredump文件的次数超过预定阈值,则进入静默状态。
4.根据权利要求1或2所述的方法,其中,所述方法包括:
如果白名单子进程异常退出,则在主进程中成新的白名单子进程;
其中,所述方法还包括:
监测白名单子进程异常退出的次数;
如果在预定时间内异常退出的次数超过预定阈值,则进入静默期,其中,主进程在静默期内不再生成新的子进程。
5.根据权利要求1或2所述的方法,其中,所述方法包括:
制定适用于紧急情况的命令,其中,所述命令包括:
查询Redis集群的白名单状态;
开启所有Redis集群的白名单;
关闭所有Redis集群的白名单。
6.根据权利要求1或2所述的方法,其中,所述方法包括:
在所述白名单子进程中执行初始化操作:
其中,所述初始化操作包括以下至少任一项:
调整白名单子进程的优先级,使其优先级低于主进程的优先级;
对白名单子进程的信号处理函数进行重载。
7.一种用于Redis集群进行鉴权的装置,其中,所述装置包含于代理中间件,所述装置包括:
用于在主进程中生成白名单子进程来解析白名单的单元;
用于在该子进程中基于解析后的白名单,执行相应的白名单处理操作的单元;
其中,所述白名单包括IP白名单和/或MNS白名单,所述用于在主进程中生成白名单子进程来解析白名单的单元用于:
对于IP白名单,每轮触发白名单解析的时候,判断文件的最后修改时间是否有变化,如果无变化,则不对此文件进行解析;对于域名白名单,每轮触发白名单解析的时候,判断文件的最后修改时间是否有变化,如果无变化,则进一步判断是否达到强制解析域名白名单的时间间隔阈值,如果是,则解析域名白名单,否则不对此文件进行解析;
其中,所述用于在该子进程中基于解析后的白名单,执行相应的白名单处理操作的单元用于:
比较上一次解析白名单和本次解析白名单的数量和校验和;
如果白名单中的IP数量发生变化,或者IP数量未变但校验和不一致,则更新白名单并基于两次解析结果执行归并操作;
如果本次解析的白名单中的IP数量减少,并且该数量减少的情况持续了预定数量个周期,则执行白名单删除操作。
8.一种用于Redis集群进行鉴权的系统,所述系统包括多个Redis节点、客户端设备以及包含如权利要求7所述的装置的代理中间件。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6中任一所述的方法。
10.一种计算机可读的存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210580520.9A CN115051986B (zh) | 2022-05-25 | 2022-05-25 | 一种Redis集群进行鉴权的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210580520.9A CN115051986B (zh) | 2022-05-25 | 2022-05-25 | 一种Redis集群进行鉴权的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115051986A CN115051986A (zh) | 2022-09-13 |
CN115051986B true CN115051986B (zh) | 2024-02-20 |
Family
ID=83159314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210580520.9A Active CN115051986B (zh) | 2022-05-25 | 2022-05-25 | 一种Redis集群进行鉴权的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115051986B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7640589B1 (en) * | 2009-06-19 | 2009-12-29 | Kaspersky Lab, Zao | Detection and minimization of false positives in anti-malware processing |
CN103237035A (zh) * | 2013-04-28 | 2013-08-07 | 哈尔滨工业大学 | 可控分布式代理平台 |
US8544060B1 (en) * | 2012-01-27 | 2013-09-24 | Symantec Corporation | Method and system for detecting and protecting against potential data loss from unknown applications |
KR101700413B1 (ko) * | 2015-09-24 | 2017-02-13 | 주식회사 오앤파트너스 | 프로그램의 무결성 검사방법 및 그 시스템 |
CN106487846A (zh) * | 2015-08-28 | 2017-03-08 | 中国电信股份有限公司 | 缓存系统的白名单更新方法、采集分析装置及缓存系统 |
EP3289512A1 (en) * | 2015-06-04 | 2018-03-07 | Accenture Global Services Limited | Process categorization for computer security |
WO2018183793A1 (en) * | 2017-03-30 | 2018-10-04 | Fireeye, Inc. | Attribute-controlled malware detection |
CN111783042A (zh) * | 2020-06-30 | 2020-10-16 | 北京金山云网络技术有限公司 | 数据库的访问控制方法、装置、数据库主系统和电子设备 |
CN112688983A (zh) * | 2019-10-18 | 2021-04-20 | 顺丰科技有限公司 | 代理权限管理装置、终端设备及存储介质 |
CN113010911A (zh) * | 2021-02-07 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 一种数据访问控制方法、装置及计算机可读存储介质 |
WO2021174357A1 (en) * | 2020-03-03 | 2021-09-10 | Kivera Corporation | System and method for securing cloud based services |
CN114138894A (zh) * | 2021-10-21 | 2022-03-04 | 度小满科技(北京)有限公司 | 一种分布式事务数据同步方法、装置、设备及可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9916095B2 (en) * | 2015-03-27 | 2018-03-13 | Kove Ip, Llc | Fork-safe memory allocation from memory-mapped files with anonymous memory behavior |
US20180183818A1 (en) * | 2016-12-23 | 2018-06-28 | CIX Software Inc. | Real-time application state monitoring, white list profile instantiation, behavioral detection and automatic cyber attack defense (bushido) |
-
2022
- 2022-05-25 CN CN202210580520.9A patent/CN115051986B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7640589B1 (en) * | 2009-06-19 | 2009-12-29 | Kaspersky Lab, Zao | Detection and minimization of false positives in anti-malware processing |
US8544060B1 (en) * | 2012-01-27 | 2013-09-24 | Symantec Corporation | Method and system for detecting and protecting against potential data loss from unknown applications |
CN103237035A (zh) * | 2013-04-28 | 2013-08-07 | 哈尔滨工业大学 | 可控分布式代理平台 |
EP3289512A1 (en) * | 2015-06-04 | 2018-03-07 | Accenture Global Services Limited | Process categorization for computer security |
CN106487846A (zh) * | 2015-08-28 | 2017-03-08 | 中国电信股份有限公司 | 缓存系统的白名单更新方法、采集分析装置及缓存系统 |
KR101700413B1 (ko) * | 2015-09-24 | 2017-02-13 | 주식회사 오앤파트너스 | 프로그램의 무결성 검사방법 및 그 시스템 |
WO2018183793A1 (en) * | 2017-03-30 | 2018-10-04 | Fireeye, Inc. | Attribute-controlled malware detection |
CN112688983A (zh) * | 2019-10-18 | 2021-04-20 | 顺丰科技有限公司 | 代理权限管理装置、终端设备及存储介质 |
WO2021174357A1 (en) * | 2020-03-03 | 2021-09-10 | Kivera Corporation | System and method for securing cloud based services |
CN111783042A (zh) * | 2020-06-30 | 2020-10-16 | 北京金山云网络技术有限公司 | 数据库的访问控制方法、装置、数据库主系统和电子设备 |
CN113010911A (zh) * | 2021-02-07 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 一种数据访问控制方法、装置及计算机可读存储介质 |
CN114138894A (zh) * | 2021-10-21 | 2022-03-04 | 度小满科技(北京)有限公司 | 一种分布式事务数据同步方法、装置、设备及可读存储介质 |
Non-Patent Citations (2)
Title |
---|
一种代理服务器的分析与设计;杨春, 余毅, 杨小平;四川师范大学学报(自然科学版)(第02期);全文 * |
云计算环境下的恶意代码解决方案研究;李玮;刘昭;张海峰;;互联网天地(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115051986A (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11438159B2 (en) | Security privilege escalation exploit detection and mitigation | |
US8055633B2 (en) | Method, system and computer program product for duplicate detection | |
Tang et al. | Nodemerge: Template based efficient data reduction for big-data causality analysis | |
US10503897B1 (en) | Detecting and stopping ransomware | |
US7526516B1 (en) | System and method for file integrity monitoring using timestamps | |
US9906537B2 (en) | System, method, and computer program product for conditionally performing an action based on an attribute | |
US11086527B1 (en) | Pre-fetching data based on memory usage patterns | |
US10032031B1 (en) | Detecting unknown software vulnerabilities and system compromises | |
JP2009510563A (ja) | ソフトウェアパッケージのインストールを管理および組織するための方法およびシステム | |
US9946879B1 (en) | Establishing risk profiles for software packages | |
US10509767B2 (en) | Systems and methods for managing snapshots of a file system volume | |
WO2021121382A1 (en) | Security management of an autonomous vehicle | |
CN115051986B (zh) | 一种Redis集群进行鉴权的方法和装置 | |
US11615113B2 (en) | Net change mirroring optimization across transactions in replication environment | |
US20080295145A1 (en) | Identifying non-orthogonal roles in a role based access control system | |
US9009430B2 (en) | Restoration of data from a backup storage volume | |
CN109165509B (zh) | 软件实时可信度量的方法、设备、系统及存储介质 | |
US20120265879A1 (en) | Managing servicability of cloud computing resources | |
CN100353277C (zh) | 一种利用代理技术实现计算机病毒防治的方法 | |
CN115361384A (zh) | 分布式集群用户认证和授权方法、装置、设备及存储介质 | |
US20180365146A1 (en) | Identification of software components with event persistency across operation interruptions | |
US8560572B2 (en) | System for lightweight objects | |
CN112003824B (zh) | 攻击检测方法、装置及计算机可读存储介质 | |
US9575660B2 (en) | Flexibly storing defined presets for configuration of storage controller | |
CN114745190B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |