CN115361384A - 分布式集群用户认证和授权方法、装置、设备及存储介质 - Google Patents
分布式集群用户认证和授权方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115361384A CN115361384A CN202210974686.9A CN202210974686A CN115361384A CN 115361384 A CN115361384 A CN 115361384A CN 202210974686 A CN202210974686 A CN 202210974686A CN 115361384 A CN115361384 A CN 115361384A
- Authority
- CN
- China
- Prior art keywords
- white list
- external user
- name service
- memory buffer
- merging
- 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.)
- Pending
Links
Images
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/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种分布式集群用户认证和授权方法、装置、设备及存储介质。认证和授权方法包括步骤:建立或获取外部用户I P白名单和/或用户名字服务白名单;对I P白名单和用户名字服务白名单进行解析、归并获得包括访问分布式集群的外部用户的I P信息和权限信息的白名单记录,并将白名单记录存储在第一内存缓冲区地址中;通过白名单协程监测外部用户I P白名单和/或外部用户名字服务白名单外部用户I P白名单和/或外部用户名字服务白名单并在第一内存缓冲区地址中更新白名单记录;通过主协程获取白名单记录并存储在第二内存缓冲区地址中;接收作为客户端的外部用户的访问请求,并根据主协程在第二内存缓冲区地址读取获得的白名单记录进行用户认证和授权。本申请的技术方案可降低运维的复杂程度。
Description
技术领域
本申请涉及计算机技术领域,具体地涉及一种分布式集群用户认证和授权方法、装置、设备及存储介质。
背景技术
计算机技术领域中,容器是一个独立的运行环境,能对应用程序及其关联性进行隔离,本质上是一组受到资源限制、彼此之间相互隔离的进程。Kubernetes等分布式集群是业界用来管理容器的集群。Kubernetes内部分为master节点(控制节点)以及node节点(一般节点)。Master是管理者角色,node是被管理者角色(被调度)。Node可以是一台物理机,亦或是一台虚拟机。一个Node上可以允许多个pod,pod是kubernetes调度管理的最小单元。而一个pod可以包括多个容器。Scheduler是kubernetes的调度器,可以调度部署pod。用户对分布式集群进行访问时,涉及对用户的认证和授权等操作。
现有技术中kubernete等分布式集群的主流用户认证方式包括:SSL(SecureSocket Layer,安全套接层)安全证书、用户token(令牌)类验证、用户名+密码方式、bootstrap token(启动引导令牌)。
a)SSL安全证书:其认证安全性最高,但灵活性较差,一但有新的I P需要授权访问,则需要先更新证书,增加了一线集群维护人员的运维复杂度,而且证书其自身也涉及时效性问题,而证书的更新机制如因人为失误或者工具平台BUG类导致更新异常,则往往会出现用户认证的大面积拒绝访问事件。
b)用户Token类验证:这种方式kubernetes等分布式集群采用静态token,存在泄露风险。
c)用户名+密码:安全等级较差,存在用户名/密码泄露风险。
d)Bootstrap token:一般作为针对kubernetes中kubelet组件的认证方式。任何拥有了启动引导令牌的主体都可以为该令牌生成一个合法的签名。但如果多个客户端使用相同的令牌,某个被攻击的客户端可以对其它一样签名开启了TLS(安全传输层协议)的客户端发起中间人攻击。
可见,分布式集群用户认证和授权过程中,如何在保证安全的情况下降低运维的复杂程度是待解决的问题。
发明内容
有鉴于此,本申请提供一种分布式集群用户认证和授权方法、装置、设备及存储介质,在kubernetes等分布式集群中的集群管理接口(如kube-apiserver组件)上引入IP白名单+名字服务名单功能,对用户的IP、用户角色、集群等以及读写权限进行ACL(AccessControl List,访问控制列表)访问鉴权控制,加固kubernetes等分布式集群的安全性,规避非法访问,避免令牌泄露、证书更新运维复杂等问题。同时IP白名单+名字服务白名单支持热加载,能实时感知客户端的上游的实例变化,并能联动白名单完成更新,过程无需人工运维介入,降低用户认证、授权和鉴权白名单的运维难度。
本申请中白名单专指是在kubernetes等分布式集群中的集群管理接口(如kube-apiserver组件)上的单独实现的白名单,集群只允许具有白名单内范围的IP的外部用户获授权访问,包括读、写等权限。名字服务(Name Service),类似于域名服务(DNS),可以通过名字服务解析,获取到实际后端映射的IP列表或IP记录。本申请的具体实施例和附图中也涉及一种具体的名字服务MNS。
为此,本申请实施例提供如下技术方案:
根据本申请一方面,提供一种分布式集群用户认证和授权方法,用于外部用户访问分布式集群,包括步骤:
建立或获取外部用户IP白名单和/或用户名字服务白名单,所述外部用户IP白名单和/或所述外部用户名字服务白名单均包括用于确定访问分布式集群的外部用户的IP信息和权限信息的信息;对所述IP白名单和所述用户名字服务白名单进行解析、归并获得包括访问分布式集群的外部用户的IP信息和权限信息的白名单记录,并将所述白名单记录存储在第一内存缓冲区地址中;通过白名单协程轮询监测所述外部用户IP白名单和/或所述外部用户名字服务白名单的变化并在所述第一内存缓冲区地址中更新所述白名单记录;通过主协程从所述第一内存缓冲区地址获取所述白名单记录并存储在第二内存缓冲区地址中;接收作为客户端的外部用户的访问请求,并根据主协程在第二内存缓冲区地址读取获得的白名单记录进行用户认证和授权以处理访问请求;所述白名单协程、所述主协程均可读取所述第一内存缓冲区地址、所述第二内存缓冲区地址中白名单记录。
进一步的,所述建立或获取外部用户IP白名单和/或外部用户名字服务白名单外部用户IP白名单和/或外部用户名字服务白名单,包括:记录所述外部用户IP白名单的最后修改时间和/或所述外部用户名字服务白名单的最后修改时间。
进一步的,所述对所述外部用户IP白名单和/或所述外部用户名字服务白名单进行解析,包括:若只存在所述外部用户IP白名单且所述外部用户IP白名单的最后修改时间变化,则只对所述外部用户IP白名单进行解析,若所述外部用户IP白名单的最后修改时间不变,则不对所述外部用户IP白名单进行解析;若存在所述外部用户IP白名单和所述外部用户名字服务白名单,则采用如下策略进行解析:a)若所述外部用户IP白名单的最后修改时间有变化,则先对所述外部用户IP白名单进行解析,再对所述外部用户名字服务白名单进行解析;b)若所述外部用户IP白名单和所述外部用户名字服务白名单的最后修改时间均无变化,判断是否达到强制解析所述外部用户名字服务白名单的时间间隔阈值,若达到强制解析所述外部用户名字服务白名单的时间间隔阈值,则先对所述外部用户名字服务白名单进行解析,再对所述外部用户IP白名单进行解析;c)若所述外部用户IP白名单的最后修改时间无变化、所述外部用户名字服务白名单的最后修改时间有变化,则先对所述外部用户名字服务白名单进行解析,再对所述外部用户IP白名单进行解析。
进一步的,所述对所述外部用户IP白名单和/或所述外部用户名字服务白名单进行解析、归并获得包括访问分布式集群的外部用户的IP信息和权限信息的白名单记录,包括:对所述外部用户IP白名单和/或所述外部用户名字服务白名单进行解析获得的重复IP进行去重,相同的IP仅保留一次;对解析、归并获得的包括访问分布式集群的外部用户的IP信息和权限信息的白名单记录进行校验和操作得到第一校验和并记录所述白名单记录的所述第一校验和;记录所述白名单记录的记录条数。
进一步的,所述通过白名单协程轮询监测所述外部用户IP白名单和/或所述外部用户名字服务白名单的变化并在所述第一内存缓冲区地址中更新所述白名单记录,包括:通过所述白名单协程轮询解析所述外部用户IP白名单和/或所述外部用户名字服务白名单、归并并计算本次解析、归并获得的所述白名单记录的第一校验和、本次解析、归并获得的所述白名单记录的记录条数,并采用如下策略更新所述第一内存缓冲区地址中的所述白名单记录:A)若本次解析、归并获得的所述白名单记录的记录条数与上一次解析、归并获得的白名单记录的记录条数相同,且本次解析、归并获得的所述白名单记录的第一校验和与上一次解析、归并获得的白名单记录的第一校验和相同,则不更新所述第一内存缓冲区地址中的白名单记录;B)若本次解析、归并获得的所述白名单记录的记录条数与上一次解析、归并获得的白名单记录的记录条数相同,且本次解析、归并获得的所述白名单记录的第一校验和与上一次解析、归并获得的白名单记录的第一校验和不相同,则更新所述第一内存缓冲区地址中的白名单记录;C)若本次解析、归并获得的所述白名单记录的记录条数与上一次解析、归并获得的白名单记录的记录条数增加,则更新所述第一内存缓冲区地址中的白名单记录并将延迟删除计数器数值置零;D)若本次解析、归并获得的所述白名单记录的记录条数与上一次解析、归并获得的白名单记录的记录条数减少且本次解析、归并获得的白名单记录是上一次解析、归并获得的白名单记录的子集,则暂不更新所述第一内存缓冲区地址中的白名单记录并将所述延迟删除计数器数值增加预定数值,当所述延迟删除计数器数值增加到设定阈值时更新所述第一内存缓冲区地址中的白名单记录并将所述延迟删除计数器数值置零。
进一步的,分布式集群外部用户认证和授权方法还包括:若所述白名单协程异常,则恢复机制启动重新恢复拉起执行所述白名单协程,若白名单协程异常在设定周期内大于设定阈值,则暂停白名单协程并发出警告信息;若轮询解析过程中,外部用户名字服务白名单解析异常,则中止解析进入保护模式且不在所述第一内存缓冲区地址中更新所述白名单记录,进入下一轮解析且解析全部正常后,解除保护模式;给选定的白名单记录设定查询、开启、关闭属性,若接收到运维人员的查询命令,则发送所述选定的被设定查询属性的白名单记录的白名单功能工作状态,若接收到运维人员的开启命令,所述选定的被设定开启属性的白名单记录的白名单功能相应开启,若接收到运维人员的关闭命令,所述选定的被设定关闭属性的白名单记录的白名单功能相应关闭。
进一步的,所述外部用户IP白名单包括IP、用户名、集群名、组件名称、权限的信息,所述用户名字服务白名单包括名字服务名称、用户名、集群名、组件名称、权限的信息,所述用户名字服务白名单包括的名字服务名称信息可解析成IP信息。
根据本申请另一方面,提供了一种分布式集群外部用户认证和授权装置,包括:
白名单设置模块,用于建立或获取外部用户IP白名单和/或外部用户名字服务白名单外部用户IP白名单和/或外部用户名字服务白名单,所述外部用户IP白名单和/或所述外部用户名字服务白名单均包括用于确定访问分布式集群的外部用户的IP信息和权限信息的信息;
白名单解析模块,用于对所述外部用户IP白名单和所述用户名字服务白名单进行解析、归并获得包括访问分布式集群的外部用户的IP信息和权限信息的白名单记录,并将所述白名单记录存储在第一内存缓冲区地址中;
白名单更新模块,用于通过白名单协程监测所述外部用户IP白名单和/或所述外部用户名字服务白名单并在所述第一内存缓冲区地址中更新所述白名单记录;
认证授权模块,用于通过主协程从所述第一内存缓冲区地址获取所述白名单记录并存储在第二内存缓冲区地址中;接收作为客户端的外部用户的访问请求,并根据主协程在第二内存缓冲区地址读取获得的白名单记录进行用户认证和授权以处理访问请求;所述白名单协程、所述主协程均可读取所述第一内存缓冲区地址、所述第二内存缓冲区地址中白名单记录。
根据本申请另一方面,提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行上述任意一项分布式集群用户认证和授权方法。
根据本申请另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有多条指令,所述指令适于由处理器加载以执行上述任意一项分布式集群用户认证和授权方法。
根据本申请的技术方案的分布式集群用户认证和授权方法、装置、设备及存储介质,由于采用IP白名单结合名字服务白名单的方式,白名单的存储采用双缓冲区的设计,能较简便的完成白名单的读取和更新,在保证安全性的前提下降低运维的复杂程度。相比现有技术,本申请的技术方案在提高了分布式集群外部用户认证和授权的安全性和运维友好度。当然,实施本申请的任意一项产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图中的部件不是成比例绘制的,而只是为了示出本申请的原理。为了便于示出和描述本申请的一些部分,附图中对应部分可能被放大,即,使其相对于在依据本申请实际制造的示例性装置中的其它部件变得更大。在附图中,相同的或类似的技术特征或部件将采用相同或类似的附图标记来表示。
图1示出了根据本申请的一个实施例的一种分布式集群用户认证和授权方法的整体架构示意图;
图2示出了根据本申请的一个实施例的一种分布式集群用户认证和授权方法的步骤示意图;
图3示出了根据本申请的一个实施例的一种分布式集群用户认证和授权方法的白名单记录的存放格式示意图;
图4示出了根据本申请的一个实施例的一种分布式集群用户认证和授权方法的部分步骤子步骤示意图;
图5示出了根据本申请的一个实施例的一种分布式集群用户认证和授权方法的部分步骤子步骤示意图;
图6示出了根据本申请的一个实施例的一种分布式集群用户认证和授权方法的部分步骤子步骤示意图;
图7示出了根据本申请的一个实施例的一种分布式集群用户权限管理装置的示意图;
图8示出了根据本申请的一个实施例的一种分布式集群用户权限管理电子设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
根据本申请一方面,提供一种分布式集群用户认证和授权方法,在一个实施例中,参见图1-2,图1为一种分布式集群用户认证和授权方法的整体架构示意图,该实施例中方法用于外部用户访问分布式集群时的认证和授权,包括如下步骤(参见图2):
S1:建立或获取外部用户IP白名单和/或用户名字服务白名单,外部用户IP白名单和外部用户名字服务白名单均包括用于确定访问分布式集群的外部用户的IP信息和权限信息的信息;
S2:对IP白名单和用户名字服务白名单进行解析、归并获得包括访问分布式集群的外部用户的IP信息和权限信息的白名单记录,并将白名单记录存储在第一内存缓冲区地址中;
S3:通过白名单协程轮询监测外部用户IP白名单和/或外部用户名字服务白名单的变化并在第一内存缓冲区地址中更新白名单记录;
S4:通过主协程从第一内存缓冲区获取白名单记录并存储在第二内存缓冲区地址中;接收作为客户端的外部用户的访问请求,并根据主协程在第二内存缓冲区地址读取获得的白名单记录进行用户认证和授权以处理访问请求;白名单协程、主协程均可读取第一内存缓冲区地址、第二内存缓冲区地址中白名单记录。
需要说明的是,本申请中的外部用户是指普通用户,以区别于服务用户(serviceaccount)。在kubernetes等分布式集群中,用户分为普通的User用户(普通用户)以及Service Account(服务用户),普通用户为外部访问集群的用户,Service Account是集群内部访问的用户。
上述实施例中,参见图1并结合图2,主流程利用主协程获取的白名单处理、转发外部用户访问请求,进行外部用户认证和授权,白名单协程(子协程)进行白名单的设置、解析、更新。白名单协程(子协程)相对于其它协程来说优先级较低,在白名单协程(子协程)启动之时,一般调整白名单协程(子协程)的优先级为最低优先级。双缓冲区(双buffer)的设计思路,使得白名单协程(子协程)的更新操作和主协程读取白名单不在同一内存地址上操作,从而达到无锁,避免影响主协程请求转发的性能。对应双缓冲区(双buffer)的设计,一个实施例中可以具体采用如下数据结构设计:
对于上述数据结构代码中,PermObj是结构体名称;perm是权限字段通过位控制,比如0x1代表读,0x1<<1代表写,perm是0x1&&0x1<<1就具备读写权限;whitelistbuffer是结构体名称;buffer就是白名单内存buffer地址;buffercnt就是白名单计数器;checksum是对这块白名单内容做的校验和;apiserverwhitelist是双buffer(双缓冲区)定义的结构体。上述数据结构当中,引入了双缓冲区(buffer)设计,即APIServerWhitelist数据结构包括缓冲区WhitelistMapBuffer1以及缓区WhitelistMapBuffer2。引入的目的是为了实现主协程的核心转发逻辑处理不和子协程的白名单解析产生冲突,无需加锁。当主协程读取内存缓冲区WhitelistMapBuffer1的内容时候,实际子协程解析用的是内存缓冲区WhitelistMapBuffer2。何时需要切换缓冲区buffer,可用whitelistTag进行区别,而whitelistTag底层实际对应的是一个int32数字,要么为0,要么为1,为0的时候指向buffer1,为1的时候指向buffer2。而对于Linux系统等选定的系统而言,int32的并发读写不会产生冲突,即不存在更新到半截被另外一个协程读取到的情况。另外,whitelistCnt代表的是本块buffer(缓冲区)当中白名单的数量,whitelistChecksum则代表本块buffer中白名单的校验和。而每个白名单实际存储用的是一个perm_int,即对应IP的数字格式(例如127.0.0.1可以转成2130706433),以及其对应的权限,权限的r/w/rw实际是通过位控制实现。白名单协程(子协程)会同时监测IP白名单和名字服务(MNS)白名单两个文件,如果文件有修改,则会自动更新。对于名字服务(MNS)白名单,内部还可维系一个循环TIMER(计时器),到点则强制解析名字服务(MNS)白名单的内容(即使文件并没有修改)。对于每轮白名单更新,都会和上一次结果进行比较,按照一定策略进行更新和结果归并处理。由于采用IP白名单结合名字服务白名单的方式,白名单的存储也采用双缓冲区的设计,能较简便的完成白名单的读取和自动更新,在保证安全性的前提下降低运维的复杂程度。
在一些实施例中,记录外部用户IP白名单的最后修改时间和/或外部用户名字服务白名单的最后修改时间。记录白名单的最后修改时间可为后续解析、归并策略提供便利。
在一些实施例中,参见图4,进行白名单解析时,采用如下步骤:
S21:若只存在外部用户IP白名单且外部用户IP白名单的最后修改时间变化,则只对外部用户IP白名单进行解析,若外部用户IP白名单的最后修改时间不变,则不对外部用户IP白名单进行解析;
S22:若存在外部用户IP白名单和外部用户名字服务白名单,则采用如下策略进行解析:
a)若外部用户IP白名单的最后修改时间有变化,则先对外部用户IP白名单进行解析,再对外部用户名字服务白名单进行解析;
b)若外部用户IP白名单和外部用户名字服务白名单的最后修改时间均无变化,判断是否达到强制解析外部用户名字服务白名单的时间间隔阈值,若达到强制解析外部用户名字服务白名单的时间间隔阈值,则先对外部用户名字服务白名单进行解析,再对外部用户IP白名单进行解析;
c)若外部用户IP白名单的最后修改时间无变化、外部用户名字服务白名单的最后修改时间有变化,则先对外部用户名字服务白名单进行解析,再对外部用户IP白名单进行解析。
在一些实施例中,参见图5,对外部用户IP白名单和/或外部用户名字服务白名单进行解析、归并获得包括访问分布式集群的外部用户的IP信息和权限信息的白名单记录时,对外部用户IP白名单和/或外部用户名字服务白名单进行解析获得的重复IP进行去重,相同的IP仅保留一次;对解析、归并获得的包括访问分布式集群的外部用户的IP信息和权限信息的白名单记录进行校验和操作得到第一校验和(checksum)并记录白名单记录的第一校验和;记录白名单记录的记录条数(count)。
在一些实施例中,参见图1和图6,进行白名单更新时,通过白名单协程轮询解析外部用户IP白名单和/或外部用户名字服务白名单、归并并计算本次解析、归并获得的白名单记录的第一校验和,本次解析、归并获得的白名单记录的记录条数,并采用如下策略更新第一内存缓冲区地址中的白名单记录:
若本次解析、归并获得的白名单记录的记录条数与上一次解析、归并获得的白名单记录的记录条数相同,且本次解析、归并获得的白名单记录的第一校验和与上一次解析、归并获得的白名单记录的第一校验和相同,则不更新第一内存缓冲区地址中的白名单记录;
若本次解析、归并获得的白名单记录的记录条数与上一次解析、归并获得的白名单记录的记录条数相同,且本次解析、归并获得的白名单记录的第一校验和与上一次解析、归并获得的白名单记录的第一校验和不相同,则更新第一内存缓冲区地址中的白名单记录;
若本次解析、归并获得的白名单记录的记录条数与上一次解析、归并获得的白名单记录的记录条数相比是增加的,则更新第一内存缓冲区地址中的白名单记录并将延迟删除计数器数值置零;
若本次解析、归并获得的白名单记录的记录条数与上一次解析、归并获得的白名单记录的记录条数相比是减少的且本次解析、归并获得的白名单记录是上一次解析、归并获得的白名单记录的子集,则暂不更新第一内存缓冲区地址中的白名单记录并将延迟删除计数器数值增加预定数值,当延迟删除计数器数值增加到设定阈值时更新第一内存缓冲区地址中的白名单记录并将延迟删除计数器数值置零。相当于白名单解析完毕后发现比上一轮IP记录数量变少且是上一轮的子集,则触发白名单延迟删除机制,暂不删除,在达到设定阈值时才实际删除而更新,可以防止客户层实例误删除。
在具体进行归并时,对于白名单的双buffer而言,实际是两块有序的递增数组(数组1、数组2),想要归并后仍然维持有序递增,可以从后向前放置较大元素,从后向前放置较大元素可以减少归并的时间复杂度,提高归并效率,如果数组1的前M个元素设置完成后,并且数组2有剩余,则直接把数组2的元素拷贝到数组1当中即可,整个归并的时间复杂度是O(M+N)。具体进行数据去重时,考虑到归并结果是有可能有重复元素,可用“快慢双指针”法,通过O(N)时间复杂度,O(1)空间复杂度即可达成去重效果。
在一些实施例中,若白名单协程异常,则恢复机制启动重新恢复拉起执行白名单协程,若白名单协程异常在设定周期内大于设定阈值,则暂停白名单协程并发出警告信息。这样异常次数在一定周期内大于一定的次数,则会暂停白名单协程工作机制,并且通过记录特定日志,联动监控报警,让一线kubernetes运维人员及时感知并介入。
在一些实施例中,若轮询解析过程中,外部用户名字服务白名单解析异常,则中止解析进入保护模式且不在第一内存缓冲区地址中更新白名单记录,进入下一轮解析且解析全部正常后,解除保护模式。
在一些实施例中,给选定的白名单记录设定查询、开启、关闭属性,若接收到运维人员的查询命令,则发送选定的被设定查询属性的白名单记录的白名单功能工作状态,若接收到运维人员的开启命令,选定的被设定开启属性的白名单记录的白名单功能相应开启,若接收到运维人员的关闭命令,选定的被设定关闭属性的白名单记录的白名单功能相应关闭。具体场景和应用方式如下:
为了一线运维人员的预案考虑(例如紧急情况下,需要一键关停所有集群白名单),可引入专门的定制化命令getwhitelist,turnon,turnoff,分别用途是:1)getwhitelist:查询白名单是否处于开启状态。返回”whitelist is ON”则说明白名单处于开启状态,返回”whitelist is OFF”则说明白名单处于关闭状态。2)turnon:开启白名单功能。3)turnoff:关闭白名单功能。此类定制化命令不应该开放给业务侧,只允许一线运维人员使用,可给此类型命令加入特定属性“x”,即只有对应白名单IP带有x属性情况下,才允许执行白名单查询/启停等相关命令。
在一些实施例中,参见图3和图5,外部用户IP白名单包括IP、用户名、集群名、组件名称、权限的信息,用户名字服务白名单包括名字服务名称、用户名、集群名、组件名称、权限的信息,用户名字服务白名单包括的名字服务名称信息可解析成IP信息。参见图5并结合图3,在白名单初始化记载时,分别有两个白名单文件,一个IP白名单,里面配置IP格式的白名单列表,每行的格式包括四个字段为“IP/用户名/集群名/组件名称/权限”,对应权限可以设置为rw/r/w,即可分别代表读写、只读、只写权限。另外一个是用户名字服务白名单(MNS白名单)文件,里面配置的是名字服务名称,每个名字服务会由命令行工具解析成为对应的IP列表,例如图中trace.online会实际解析成10.0.0.11、10.0.0.12、10.1.1.1。注意图中有“#1.2.3.4r”字样中开头出现了#符号,说明该行为注释,不做解析。图中“trace.online alex G1 kubelet rw”即解析为“trace.online这个MNS将会赋予用户组alex对应G1kubernetes集群的读写权限”。对于组件名称而言,一般可以有kube-apiserver\kube-controller-manager\kube-scheduler\kube-proxy\kubelet\kube-sdk-used,前面5个组件分别代表kubernetes原生的组件名称,最后一个kube-sdk-used代表使用kubernetes sdk作为client(客户)角色的权限访问。图3中涉及的kubelet、kubect、kubectl、kube-scheduler均为组件名,alex为用户名。图3示出解析白名单的时候,最终内存中白名单的存放格式白名单的组织是一个树状结构,对于一个用户而言,可以一对多个不同的kubernetes集群权限,对于一个kubernetes集群而言,实际会对应多个不同组件的授权,而每个组件的授权最终会以IP为key,进行汇聚,然后每个IP实际会对应到不同的读写权限。在IP白名单和NMS白名单都成功解析后,会在内存中进行归并操作,存储在同一内存地址当中,并且归并的过程当中,会把重复的IP进行过滤,相同只保留1次。并且会对这块白名单进行校验和操作得到唯一标识,即图中的123456,并维系一个计数器来存储当前白名单的实际个数(即白名单记录的IP条数)。一些实施例中,一旦有解析的IP条数变多,则会对本次结果以及上一次结果进行归并操作。而如果某一次的解析结果比上一次少,为上一次的子集,则会触发延迟删除机制,连续设定个周期或达到设定阈值后,才会进行真实的白名单删除操作。
本申请的方案由于采用IP白名单结合名字服务白名单的方式,白名单的存储采用双缓冲区的设计,能较简便的完成白名单的读取和自动更新,用户访问权限控制可以随着IP的变更,自动联动权限生效,白名单支持热加载、延后删除并能一键启停,在保证安全性的前提下降低了运维的复杂程度。相比现有技术,本申请的技术方案白名单子协程以独立协程方式运行,避免解析白名单处理逻辑影响主协程的处理,双buffer为基础实现白名单的无锁读写,白名单功能具有保护机制、一键启停机制而具备足够的健壮性,从而提高了分布式集群外部用户认证和授权的安全性和运维友好度。
以上实施例中可采用kubernetes集群及etcd分布式数据库,在其他实施例中可采用其他分布式集群工具及分布式数据库,并不限于上述实施例中的类型。以下其他实施方式(装置、电子设备、存储介质)的实施例也是如此。
根据本申请一种实施方式,提供了一种分布式集群用户权限管理装置。在一个实施例中,参见图7,分布式集群用户权限管理装置包括:
M1:白名单设置模块,用于建立或获取外部用户IP白名单和/或外部用户名字服务白名单,外部用户IP白名单和外部用户名字服务白名单均包括用于确定访问分布式集群的外部用户的IP信息和权限信息的信息;
M2:白名单解析模块,用于对外部用户IP白名单和/或用户名字服务白名单进行解析、归并获得包括访问分布式集群的外部用户的I P信息和权限信息的白名单记录,并将白名单记录存储在第一内存缓冲区地址中;
M3:白名单更新模块,用于通过白名单协程轮询监测外部用户I P白名单和/或外部用户名字服务白名单的变化并在第一内存缓冲区地址中更新白名单记录;
M4:认证授权模块,用于通过主协程从第一内存缓冲区地址获取白名单记录并存储在第二内存缓冲区地址中;接收作为客户端的外部用户的访问请求,并根据主协程在第二内存缓冲区地址读取获得的白名单记录进行用户认证和授权以处理访问请求;白名单协程、主协程均可读取第一内存缓冲区地址、第二内存缓冲区地址中白名单记录。
具体实施时,以上各个模块和单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现。以上各个模块和单元可以有更具体的功能和结构,具体实施可参见前面的方法实施例,在此不再赘述。
由于本装置的模块,可以执行本申请实施例所提供的任意一种分布式集群用户认证和授权方法的步骤,因此,可以实现本申请实施例所提供的任意一种分布式集群用户认证和授权方法所能实现的有益效果,详见前面的实施例,在此不再赘述。以上各个操作的具体实施可参见前面的实施例,在此也不再赘述。
根据本申请一个实施方式,提供了一种分布式集群用户权限管理电子设备。在一个实施例中,参见图8,电子设备400包括至少一个处理器401;以及与至少一个处理器401通信连接的存储器402;其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401执行上述任意一项分布式集群用户认证和授权方法。该电子设备可以是服务器、智能手机、平板电脑等设备。在本实施例中,电子设备400中的处理器401会将一个或一个以上的应用程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现上述任意一种分布式集群用户认证和授权方法的步骤。
由于该存储器402中所存储的指令,可以执行本申请实施例所提供的任意一种分布式集群用户认证和授权方法的步骤,因此,可以实现本申请实施例所提供的任意一种分布式集群用户认证和授权方法所能实现的有益效果,详见前面的实施例,在此不再赘述。以上各个操作的具体实施可参见前面的实施例,在此也不再赘述。
根据本申请一个实施方式,提供了一种计算机可读存储介质。本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任意一种分布式集群用户认证和授权方法的步骤。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等,更具体来说,可包括静态随机存取存储器(Static Random-Access Memory,SRAM)和动态随机存取存储器(Dynamic Random AccessMemory,DRAM)等具体类别。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任意一种分布式集群用户认证和授权方法的步骤,因此,可以实现本申请实施例所提供的任意一种分布式集群用户认证和授权方法所能实现的有益效果,详见前面的实施例,在此不再赘述。以上各个操作的具体实施可参见前面的实施例,在此也不再赘述。
根据以上描述,故本申请的技术效果是:提供一种分布式集群用户认证和授权方法、装置、电子设备及计算机可读存储介质,相比现有技术,本申请的异构数据同步方案可保证数据同步的时效性和高可用性,且在遇到网络中断等异常情况恢复后还能断点续传。
以上所述仅为本申请的实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内所作的任何修改、等同替换和改进等,均应包括在本申请的保护范围之内。
本领域技术人员可以理解,以上描述并不构成对装置的限定,可以包括比更多或更少的部件,或者组合某些部件,或者不同的部件布置。
需要说明的是,在本申请的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包括在本申请的保护范围内。在上面对本申请具体实施例的描述中,针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本申请,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本申请。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本申请的描述变得晦涩。因此,本申请并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。涉及序数的术语或下标“一”“二”“1”“2”“n”“n-”等并不必然表示这些术语所限定的特征、要素、步骤或组件的实施顺序或者重要性程度,而仅仅是为了描述清楚起见而用于在这些特征、要素、步骤或组件之间进行标识。
虽然结合附图描述了本申请的实施例,但是本领域技术人员可以在不脱离本申请的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (10)
1.一种分布式集群用户认证和授权方法,用于外部用户访问分布式集群,其特征在于,包括步骤:
建立或获取外部用户IP白名单和/或用户名字服务白名单,所述外部用户IP白名单和/或所述外部用户名字服务白名单均包括用于确定访问分布式集群的外部用户的IP信息和权限信息的信息;
对所述IP白名单和/或所述用户名字服务白名单进行解析、归并获得包括访问分布式集群的外部用户的IP信息和权限信息的白名单记录,并将所述白名单记录存储在第一内存缓冲区地址中;
通过白名单协程轮询监测所述外部用户IP白名单和/或所述外部用户名字服务白名单的变化并在所述第一内存缓冲区地址中更新所述白名单记录;
通过主协程从所述第一内存缓冲区地址获取所述白名单记录并存储在第二内存缓冲区地址中;接收作为客户端的外部用户的访问请求,并根据主协程在第二内存缓冲区地址读取获得的白名单记录进行用户认证和授权以处理访问请求;所述白名单协程、所述主协程均可读取所述第一内存缓冲区地址、所述第二内存缓冲区地址中白名单记录。
2.根据权利要求1所述的分布式集群外部用户认证和授权方法,其特征在于,所述建立或获取外部用户I P白名单和/或外部用户名字服务白名单,包括:
记录所述外部用户IP白名单的最后修改时间和/或所述外部用户名字服务白名单的最后修改时间。
3.根据权利要求2所述的分布式集群外部用户认证和授权方法,其特征在于,所述对所述外部用户IP白名单和/或所述外部用户名字服务白名单进行解析,包括:
若只存在所述外部用户IP白名单且所述外部用户IP白名单的最后修改时间变化,则只对所述外部用户IP白名单进行解析,若所述外部用户IP白名单的最后修改时间不变,则不对所述外部用户IP白名单进行解析;
若存在所述外部用户IP白名单和所述外部用户名字服务白名单,则采用如下策略进行解析:
a)若所述外部用户IP白名单的最后修改时间有变化,则先对所述外部用户IP白名单进行解析,再对所述外部用户名字服务白名单进行解析;
b)若所述外部用户IP白名单和所述外部用户名字服务白名单的最后修改时间均无变化,判断是否达到强制解析所述外部用户名字服务白名单的时间间隔阈值,若达到强制解析所述外部用户名字服务白名单的时间间隔阈值,则先对所述外部用户名字服务白名单进行解析,再对所述外部用户IP白名单进行解析;
c)若所述外部用户IP白名单的最后修改时间无变化、所述外部用户名字服务白名单的最后修改时间有变化,则先对所述外部用户名字服务白名单进行解析,再对所述外部用户IP白名单进行解析。
4.根据权利要求3所述的分布式集群外部用户认证和授权方法,其特征在于,所述对所述外部用户IP白名单和/或所述外部用户名字服务白名单进行解析、归并获得包括访问分布式集群的外部用户的IP信息和权限信息的白名单记录,包括:
对所述外部用户IP白名单和/或所述外部用户名字服务白名单进行解析获得的重复IP进行去重,相同的IP仅保留一次;
对解析、归并获得的包括访问分布式集群的外部用户的IP信息和权限信息的白名单记录进行校验和操作得到第一校验和并记录所述白名单记录的所述第一校验和;记录所述白名单记录的记录条数。
5.根据权利要求4所述的分布式集群外部用户认证和授权方法,其特征在于,所述通过白名单协程轮询监测所述外部用户IP白名单和/或所述外部用户名字服务白名单的变化并在所述第一内存缓冲区地址中更新所述白名单记录,包括:
通过所述白名单协程轮询解析所述外部用户IP白名单和/或所述外部用户名字服务白名单、归并并计算本次解析、归并获得的所述白名单记录的第一校验和、本次解析、归并获得的所述白名单记录的记录条数,并采用如下策略更新所述第一内存缓冲区地址中的所述白名单记录:
若本次解析、归并获得的所述白名单记录的记录条数与上一次解析、归并获得的白名单记录的记录条数相同,且本次解析、归并获得的所述白名单记录的第一校验和与上一次解析、归并获得的白名单记录的第一校验和相同,则不更新所述第一内存缓冲区地址中的白名单记录;
若本次解析、归并获得的所述白名单记录的记录条数与上一次解析、归并获得的白名单记录的记录条数相同,且本次解析、归并获得的所述白名单记录的第一校验和与上一次解析、归并获得的白名单记录的第一校验和不相同,则更新所述第一内存缓冲区地址中的白名单记录;
若本次解析、归并获得的所述白名单记录的记录条数与上一次解析、归并获得的白名单记录的记录条数相比是增加的,则更新所述第一内存缓冲区地址中的白名单记录并将延迟删除计数器数值置零;
若本次解析、归并获得的所述白名单记录的记录条数与上一次解析、归并获得的白名单记录的记录条数相比是减少的且本次解析、归并获得的白名单记录是上一次解析、归并获得的白名单记录的子集,则暂不更新所述第一内存缓冲区地址中的白名单记录并将所述延迟删除计数器数值增加预定数值,当所述延迟删除计数器数值增加到设定阈值时更新所述第一内存缓冲区地址中的白名单记录并将所述延迟删除计数器数值置零。
6.根据权利要求5所述的分布式集群外部用户认证和授权方法,其特征在于,还包括:
若所述白名单协程异常,则恢复机制启动重新恢复拉起执行所述白名单协程,若白名单协程异常在设定周期内大于设定阈值,则暂停白名单协程并发出警告信息;
若轮询解析过程中,外部用户名字服务白名单解析异常,则中止解析进入保护模式且不在所述第一内存缓冲区地址中更新所述白名单记录,进入下一轮解析且解析全部正常后,解除保护模式;
给选定的白名单记录设定查询、开启、关闭属性,若接收到运维人员的查询命令,则发送所述选定的被设定查询属性的白名单记录的白名单功能工作状态,若接收到运维人员的开启命令,所述选定的被设定开启属性的白名单记录的白名单功能相应开启,若接收到运维人员的关闭命令,所述选定的被设定关闭属性的白名单记录的白名单功能相应关闭。
7.根据权利要求1至6中任一项所述的分布式集群外部用户认证和授权方法,其特征在于,所述外部用户IP白名单包括IP、用户名、集群名、组件名称、权限的信息,所述用户名字服务白名单包括名字服务名称、用户名、集群名、组件名称、权限的信息,所述用户名字服务白名单包括的名字服务名称信息可解析成IP信息。
8.一种分布式集群外部用户认证和授权装置,其特征在于,包括:
白名单设置模块,用于建立或获取外部用户IP白名单和/或外部用户名字服务白名单外部用户IP白名单和/或外部用户名字服务白名单,所述外部用户IP白名单和所述外部用户名字服务白名单均包括用于确定访问分布式集群的外部用户的IP信息和权限信息的信息;
白名单解析模块,用于对所述外部用户IP白名单和/或所述用户名字服务白名单进行解析、归并获得包括访问分布式集群的外部用户的IP信息和权限信息的白名单记录,并将所述白名单记录存储在第一内存缓冲区地址中;
白名单更新模块,用于通过白名单协程轮询监测所述外部用户IP白名单和/或所述外部用户名字服务白名单的变化并在所述第一内存缓冲区地址中更新所述白名单记录;
认证授权模块,用于通过主协程从所述第一内存缓冲区地址获取所述白名单记录并存储在第二内存缓冲区地址中;接收作为客户端的外部用户的访问请求,并根据主协程在第二内存缓冲区地址读取获得的白名单记录进行用户认证和授权以处理访问请求;所述白名单协程、所述主协程均可读取所述第一内存缓冲区地址、所述第二内存缓冲区地址中白名单记录。
9.一种电子设备,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行上述权利要求1-7中任一项所述的分布式集群外部用户认证和授权方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有多条指令,所述指令适于由处理器加载以执行权利要求1至7任一项所述的分布式集群外部用户认证和授权方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210974686.9A CN115361384A (zh) | 2022-08-15 | 2022-08-15 | 分布式集群用户认证和授权方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210974686.9A CN115361384A (zh) | 2022-08-15 | 2022-08-15 | 分布式集群用户认证和授权方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115361384A true CN115361384A (zh) | 2022-11-18 |
Family
ID=84001407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210974686.9A Pending CN115361384A (zh) | 2022-08-15 | 2022-08-15 | 分布式集群用户认证和授权方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115361384A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117035891A (zh) * | 2023-08-17 | 2023-11-10 | 慧众合(山东)科技创新发展有限公司 | 一种基于知识图谱的市场交易系统 |
-
2022
- 2022-08-15 CN CN202210974686.9A patent/CN115361384A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117035891A (zh) * | 2023-08-17 | 2023-11-10 | 慧众合(山东)科技创新发展有限公司 | 一种基于知识图谱的市场交易系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2408069C2 (ru) | Согласование полномочий | |
EP3130110B1 (en) | Device policy manager | |
CN108289098B (zh) | 分布式文件系统的权限管理方法和装置、服务器、介质 | |
RU2408070C2 (ru) | Механизмы обнаруживаемости и перечисления в иерархически защищенной системе хранения данных | |
US7953972B2 (en) | System and method for managing files | |
US8595821B2 (en) | Domains based security for clusters | |
CN107122406B (zh) | 一种Hadoop平台上面向数据字段的访问控制方法 | |
US8719950B2 (en) | Access control apparatus and storage medium | |
US20120291106A1 (en) | Confidential information leakage prevention system, confidential information leakage prevention method, and confidential information leakage prevention program | |
US9576144B2 (en) | Secured file system management | |
CN102761555B (zh) | 基于访问历史的强制访问控制系统及控制方法 | |
CN107111724A (zh) | 保护非受信设备上的数据 | |
JP2009151751A (ja) | 承認済みファイルと信頼されたドメインのデータベースを作成及び更新する方法及びシステム | |
WO2010069682A1 (en) | Method and system for impersonating a user | |
CN101520831A (zh) | 安全终端系统及终端安全方法 | |
US9514325B2 (en) | Secured file system management | |
CN107145531B (zh) | 分布式文件系统及分布式文件系统的用户管理方法 | |
US20180026986A1 (en) | Data loss prevention system and data loss prevention method | |
US20200042497A1 (en) | Distributed ledger system | |
US9607176B2 (en) | Secure copy and paste of mobile app data | |
CN109660514A (zh) | 一种智能设备系统的实现方法、智能设备控制方法及系统 | |
CN115361384A (zh) | 分布式集群用户认证和授权方法、装置、设备及存储介质 | |
US20140041053A1 (en) | Data block access control | |
CN110046205B (zh) | 一种关系型数据库行安全访问控制方法及系统 | |
US10142344B2 (en) | Credential management system |
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 |