一种基于角色的Kafka访问控制方法与流程

文档序号:32309590发布日期:2022-11-23 11:07阅读:26来源:国知局
一种基于角色的Kafka访问控制方法与流程
一种基于角色的kafka访问控制方法
技术领域:
1.本发明涉及信息安全技术领域,具体涉及一种基于角色的kafka访问控制方法。


背景技术:

2.kafka作为一种常用的消息传输中间件,在消息传输与数据集成上具有独特的优势。它是一种在海量数据的情况下,依赖具有高并发、高吞吐、低延迟、可持久、高可靠特征的分布式消息系统。kafka中的数据单元被称为消息,也被称为记录,可以把它看作数据库表中某一行的记录。为了提高效率,消息会分批次写入kafka,批次就代指的是一组消息,消息的种类称为主题(topic),可以说一个主题代表了一类消息,相当于是对消息进行分类,主题就像是数据库中的表,主题可以被分为若干个分区(partition),同一个主题中的分区可以不在一个机器上,有可能会部署在多个机器上,由此来实现kafka的伸缩性,单一主题中的分区有序,但是无法保证主题中所有的分区有序。kafka集群一般由生产者(producer)、消费者(consumer)以及代理(broker)构成,其中生产者就是向主题发布消息的客户端应用程序,用于持续不断的向某个主题发送消息,消费者是订阅主题消息的客户端程序,用于处理生产者产生的消息,代理是一个独立的kafka服务器,用来接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。由于诸多设计特性,如高吞吐、低延迟、高伸缩性等,kafka被广泛应用到诸多场景,比如活动跟踪、传递消息、度量指标、日志记录、流式处理、限流削峰等。
3.综上,kafka已经得到了广泛应用,其主要的优势在于对消息的处理,因此如何保护kafka中保存数据的安全性是一个关键问题。当kafka的应用环境是一个开放且非安全的复杂环境,若对消息的保护不采取相应的安全措施则将面临诸多挑战。访问控制技术对于kafka来说是一项关键的技术,如何安全高效的对kafka中的topic资源进行访问控制一直都是研究的重点。当前常见的访问控制机制有自主访问控制(discretionary access control,dac)、强制访问控制(mandatory access control,mac)、基于角色的访问控制(role-based access control,rbac)、基于属性的访问控制(attribute-based access control,abac)。dac通过维护访问控制列表(access control lists,acl),根据列表中设定的条件完成请求过滤,mac对于访问控制的规则是不允许修改的,即数据只能从低级流向高级,同级之间数据不允许互通,rbac将用户以不同的权限划分,划分的权限与角色绑定,角色之间定义继承等关系,用户在进行操作时会进行角色的解析从而确定权限,目前大多数系统采用rbac模型来进行访问控制。abac判断一个用户是否能够访问某项资源,是根据很多不同属性的计算得到的,这些属性可以包括用户的角色,也可以包括访问时间、历史信息等环境因素。
4.综上,不同的业务场景对控制对象、控制范围等有不同的要求,针对大部分要求已经有了比较好的访问控制方案,而当前kafka采用了基于acl的自主访问控制机制,当用户规模庞大时自主访问控制机制存在授权管理复杂、缺乏灵活性等问题。


技术实现要素:

5.针对上述问题,本发明提出了一种基于角色的kafka访问控制方法,克服kafka原生访问控制机制存在的授权管理复杂、缺乏灵活性等问题,通过在kafka架构基础上引入基于角色管理服务器,借助基于角色的访问控制机制实现kafka访问控制管理的灵活授权。
6.一种基于角色的kafka访问控制方法,该方法包括:
7.步骤一:数据访问请求者向角色管理服务器申请角色,角色管理服务器根据数据访问请求者的身份为数据访问请求者分配角色,并将角色证书颁发给数据访问请求者;其中,数据访问请求者的身份包括消费者和生产者;生产者是kafka架构中原有组件,用来将消息发送至topic,消费也是kafka架构中原有组件,订阅topic并消费消息,作为一个线程来消费;
8.步骤二:数据访问请求者持角色证书向kafka提交操作请求;
9.步骤三:kafka截获数据访问请求者的操作请求;
10.步骤四:kafka判断所述数据访问请求者是否具有操作权限;若具有,则执行数据访问请求者的操作请求,若不具有,则返回给数据访问请求者拒绝服务的提示信息;
11.其中,所述步骤四的方法具体包括以下步骤:
12.判断数据访问请求者的身份是否合法,如果数据访问请求者身份非法则向数据访问请求者返回拒绝提供服务的提示信息,否则进一步判断数据访问请求者角色是否合法;如果数据访问请求者角色非法则向数据访问请求者返回拒绝提供服务的提示信息,否则进一步判断数据访问请求者操作请求是否合法;若数据访问请求者操作请求合法则执行数据访问请求者的操作请求,否则返回拒绝提供服务的提示信息;一般的,若用户已注册、在有效期内、没有被拉黑,则用户身份合法,若用户有对应的角色则角色合法,操作请求合法就是这个请求符合访问控制规则,即这个请求不是一个错误请求,如手误将put打成putt,则这是一个错误的操作请求。
13.优选的,所述步骤一中角色管理服务器生成角色密钥,通过角色密钥生成角色证书。
14.优选的,在所述步骤一中角色管理服务器为数据访问请求者分配角色之前还包括:管理员设定角色组并分别为每组角色授权;管理员依据场景和需求设计全部角色,一般的,若本方法应用于学校,则管理员对当前教学系统用户设计“学生”、“老师”两种类型的角色,数据有“课表”,对于“学生”角色赋予查看课表的权限,对于“老师”这一角色授予更改、删除、插入、查找“课表”等权限。
15.优选的,所述操作权限包括读权限和写权限。
16.优选的,为消费者赋予读权限、生产者赋予写权限;一般的角色和权限是多对多关系,数据访问请求者和角色也是多对多关系,如新闻工作者可以是具有读权限的消费者,也可以是有写权限的生产者。
17.本发明提供了一种基于角色的kafka访问控制方法,根据数据访问请求者身份分配不同的角色,使数据访问请求者与访问权限相分离,实现更加灵活的访问控制管理;同时,提出了基于角色证书的安全访问控制策略和数据读写机制,实现了对数据访问请求者访问kafka的灵活动态授权。
附图说明:
18.附图1是本发明实施例中一种基于角色的kafka访问控制方法的流程图。
具体实施方式:
19.以下结合说明书附图1对本发明提供的一种基于角色的kafka访问控制方法进行说明。
20.步骤100:数据访问请求者向角色管理服务器申请角色;
21.步骤110:角色管理服务器根据数据访问请求者的身份为数据访问请求者分配角色,并将角色证书颁发给数据访问请求者;
22.步骤120:数据访问请求者持角色证书向kafka提交操作请求;
23.步骤130:kafka截获数据访问请求者的操作请求;
24.步骤140:kafka判断数据访问请求者的身份是否合法,若身份非法,向数据访问请求者返回拒绝服务的提示消息,若合法进行下一步;
25.步骤150:判断数据访问请求者角色是否合法,若角色非法,向数据访问请求者返回拒绝服务的提示消息,若合法进行下一步;
26.步骤160:判断数据访问请求者操作请求是否合法,若操作请求非法,向数据访问请求者返回拒绝服务的提示消息,若合法则执行数据访问请求者的操作请求。
27.应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理和宗旨的的前提下,还可以做出若干改进、替换、变型和润饰,这些改进、替换、变型和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1