基于Kubernetes的分布式系统的资源权限管理系统及方法
文献发布时间:2023-06-19 10:00:31
技术领域
本发明涉及容器技术与权限管理技术领域,特别是一种基于Kubernetes的分布式系统的资源权限管理系统及方法。
背景技术
随着云计算与软件架构的不断发展与实施,云计算的基础支撑技术Kubernetes都得到了长足的发展及运用,也就出现了集群内各个服务相互访问的权限验证的情形。因此,在各个服务的权限控制就变成了一个普遍且迫切的需求。能够实现的核心是每个服务都使用访问代理访问其它服务数据,并在代理上进行权限验证模块验证。
目前,各个系统服务的权限认证主要有:其一是每个服务直接基于ABAC的验证方式。只要有用户正确登陆信息既可完全访问数据资源;其二是通过各个服务配置RBAC权限,验证每个用户访问的用户权限;直接使用ABAC用户登陆信息做为权限验证,权限验证方式过于单一,在当用户多,权限下配置权限会变得繁琐;使用RBAC方式验证验证,可以很好的处理多用户相同权限等问题,但权限验证都是在每个服务上进行,各服务都需要完成权限验证内容,增加了代码开发工作,并且在权限变更时,各个服务都需要同步的更新,修改权限模块。
发明内容
为解决现有技术中存在的问题,本发明的目的是提供一种基于Kubernetes的分布式系统的资源权限管理系统及方法,本发明可适用于Kubernetes集群中基于服务架构的分布式系统资源的访问权限控制和用户权限管理。
为实现上述目的,本发明采用的技术方案是:一种基于Kubernetes的分布式系统的资源权限管理系统,包括Kubernetes集群、DNS服务模块、权限配置模块、权限验证模块、访问代理模块和多个服务的业务模块,其中:
所述Kubernetes集群用于提供各服务的运行环境,并实现对应的CRD资源注册;
所述DNS服务模块用于实现各服务之间访问时的DNS转发;
所述权限配置模块用于实现用户、角色及资源的维护,以及给用户及角色与资源的授权;
所述权限验证模块用于完成用户、角色与对应访问资源的权限验证;
所述访问代理模块用于完成服务在访问其它服务前,连接所述权限验证模块确认访问权限;
所述业务模块用于为真实的业务场景提供服务。
作为本发明的进一步改进,所述权限配置模块具体用于在Kubernetes集群注册用户、角色、资源权限、数据权限的CRD资源类型,并通过对应的manager程序验证所有CRD的合法性;提供用户的添加、信息编辑、注销功能;提供角色的添加、编辑、用户绑定、注销功能。
作为本发明的进一步改进,所述数据权限用于确定数据源型,并配置用户、角色对特定数据原型的访问;并根据Kubernetes集群中注册的CRD资源生成访问代理模块的GRPC内容,时时监听CRD资源变化而动态更新访问代理模块所需要的内容,提供各类操作界面。
作为本发明的进一步改进,所述权限配置模块包括资源权限管理子模块,用于为用户对某资源的权限添加、删除及修改,角色对某资源的权限添加、删除及修改。
作为本发明的进一步改进,所述访问代理模块具体用于实现watch权限中心权限变化,代理服务访问其它服务资源,验证用户、角色访问资源的权限,根据返回数据进行数据权限验证。
本发明还提供一种基于Kubernetes的分布式系统的资源权限管理方法,包括以下步骤:
S1、搭建Kubernetes集群,使用开源的Kubespray进行Kubernetes集群搭建;
S2、在Kubernetes集群中部署DNS服务,使用helm部署CoreDns服务;
S3、在Kubernetes注册权限中配置所需要的CRD资源内容:添加用户的CRD,添加角色的CRD,添加用户与角色所属关系的CRD,添加用户或者角色的权限CRD;
S4、在Kubernets集群中使用Deployment部署权限配置程序,权限配置读取Kubernetes的用户、角色CRD资源,并生成对应的用户权限配置列表;
S5、权限配置程序时时WATCH CRD资源的变化,并根据这些变化自动添加、修改、删除权限配置;
S6、权限配置程序同时提供代理程序所需要的GRPC接口方式提供权限配置列表;
S7、权限配置程序使用Kubernetes集群的Ingress服务提供操作界面;
S8、在Kubernets集群中使用Deployment或者Statufulset部署业务服务程序,并使用sidecare的方式部署代理程序;
S9、代理程序使用GRPC方式连接权限配置中心读取权限配置列表,加载权限配置;
S10、代理程序Watch权限配置中心变化,在权限配置中心有改变时同步加载改变内容;
S11、业务程序在通过DNS方式访问其它业务程序时,以代理为出入口访问;
S12、代理程序在收到访问请求时先使用权限配置验证权限,使用用户加条件的方式匹配权限,如无权限直接返回给访问源而不到实例的业务程序,减少业务程序压力;
S13、当访问源有权限时,访问后端业务程序并截取返回内容;根据配置的数据权限模块验证返回的数据权限,如有对应的数据权限就返回给访问源,如有部分数据有权限,就进行数据过滤再返回数据。
本发明的有益效果是:
本发明可适用于Kubernetes集群中基于服务架构的分布式系统资源的访问权限控制和用户权限管理,相对于独立的服务应用通过集中的认证中心权限服务,可灵活管理用户权限、角色权限与数据资源的操作权限,并在权限变动时,权限验证与配置中心都能动态感知变化及时在各服务生效,代理程序及时生效权限变化,权限功能使得分布式部署的业务模块实现即插即用并且代码非侵入式。
附图说明
图1为本发明实施例1的资源权限管理系统的结构框图;
图2为本发明实施例2的资源权限管理系统的模块调用关系图。
具体实施方式
下面结合附图对本发明的实施例进行详细说明。
实施例1
如图1所示,一种基于Kubernetes的分布式系统的资源权限管理系统,包括Kubernetes集群、DNS服务模块、权限配置模块、权限验证模块、访问代理模块和多个服务的业务模块,其中:
所述Kubernetes集群用于提供各服务的运行环境,并实现对应的CRD资源注册;
所述DNS服务模块用于实现各服务之间访问时的DNS转发,为各个服务访问提供DNS服务,在服务切换时不需要修改任何配置;
所述权限配置模块用于实现用户、角色及资源的维护,以及给用户及角色与资源的授权;所述的权限配置模块主要是在Kubernetes集群注册用户、角色、资源权限、数据权限等的CRD资源类型,并通过对应的manager程序验证所有CRD的合法性;提供用户的添加、信息编辑、注销功能;提供角色的添加、编辑、用户绑定、注销功能;提供的资源权限管理子模块主要为用户对某资源的权限添加,删除,修改,角色对某资源的权限添加,删除,修改,除常规的权限配置外,还可添加额外条件进行权限控制;数据权限主要是确定数据源型,并配置用户、角色等对特定数据原型的访问;并根据Kubernetes中注册的CRD资源生成代理模块的GRPC内容,时时监听CRD资源变化而动态更新代理模块所需要的内容,提供各类操作界面;
所述权限验证模块用于完成用户、角色与对应访问资源的权限验证;
所述访问代理模块用于完成服务在访问其它服务前,连接所述权限验证模块确认访问权限;所述访问代理模块具体用于实现watch权限中心权限变化,代理服务访问其它服务资源,验证用户、角色访问资源的权限,根据返回数据进行数据权限验证。
所述业务模块用于为真实的业务场景提供服务。
实施例2
如图2所示,一种基于Kubernetes的分布式系统的资源权限管理方法,包括以下步骤:
S1、搭建Kubernetes集群,使用开源的Kubespray进行Kubernetes集群搭建;
S2、在Kubernetes集群中部署DNS服务,使用helm部署CoreDns服务;
S3、在Kubernetes注册权限配置中所需要的CRD资源内容:添加用户的CRD,Group:apps.matrix.com,Kind:user;添加角色的CRD,Group:apps.matrix.com,Kind:role;添加用户与角色所属关系的CRD,Group:apps.matrix.com,Kind:userbangding;添加用户或者角色的权限CRD,Group:apps.matrix.com,Kind:privileges;
S4、在Kubernets集群中使用Deployment部署权限配置程序,权限配置读取Kubernetes的用户,角色等CRD资源生成对应的用户权限配置列表;
S5、权限配置程序时时WATCH这些CRD资源的变化,并根据这些变化自动添加,修改,删除权限配置;
S6、权限配置程序同时提供代理程序所需要的GRPC等接口方式提供权限配置列表;
S7、权限配置程序使用Kubernetes的Ingress服务提供操作界面;
S8、在Kubernets集群中使用Deployment或者Statufulset部署业务服务程序,并使用sidecare的方式部署代理程序;
S9、代理程序使用GRPC等方式连接权限配置中心读取权限配置列表,加载权限配置;
S10、代理程序Watch权限配置中心变化,在权限配置中心有改变时同步加载改变内容;
S11、业务程序在通过DNS等方式访问其它业务程序时,都以代理为出入口访问;
S12、代理程序在收到访问请求时先使用权限配置验证权限,使用用户+条件的方式匹配权限,如无权限直接返回给访问源而不到实例的业务程序,减少业务程序压力;
S13、当访问源有权限时,访问后端业务程序并截取返回内容。根据配置的数据权限模块验证返回的数据权限,如有对应的数据权限就返回给访问源,如有部分数据有权限,就进行数据过滤再返回数据。
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
- 基于Kubernetes的分布式系统的资源权限管理系统及方法
- 一种基于Kubernetes容器集群管理系统的资源调度方法