Kafka 核心技术与实战
胡夕
Apache Kafka Committer,老虎证券技术总监
52815 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
开篇词 (1讲)
结束语 (1讲)
Kafka 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

34 | 云环境下的授权该怎么做?

ACL配置
SSL配置
针对IP地址设置权限
细粒度的权限控制
增加、删除、查询ACL
设置super.users参数
配置authorizer.class.name参数
PBAC:Policy-Based Access Control
ABAC:Attribute-Based Access Control
RBAC:Role-Based Access Control
ACL:Access-Control List
开放讨论
小结
配置实例
授权机制能否单独使用?
ACL权限列表
kafka-acls脚本
超级用户(Super User)
如何开启ACL?
什么是授权机制?
Kafka的授权机制

该思维导图由 AI 生成,仅供参考

你好,我是胡夕。今天我要分享的主题是:Kafka 的授权机制。

什么是授权机制?

我们在上一讲中花了不少时间讨论 Kafka 的认证机制,今天我们来看看 Kafka 的授权机制(Authorization)。所谓授权,一般是指对与信息安全或计算机安全相关的资源授予访问权限,特别是存取控制。
具体到权限模型,常见的有四种。
ACL:Access-Control List,访问控制列表。
RBAC:Role-Based Access Control,基于角色的权限控制。
ABAC:Attribute-Based Access Control,基于属性的权限控制。
PBAC:Policy-Based Access Control,基于策略的权限控制。
在典型的互联网场景中,前两种模型应用得多,后面这两种则比较少用。
ACL 模型很简单,它表征的是用户与权限的直接映射关系,如下图所示:
而 RBAC 模型则加入了角色的概念,支持对用户进行分组,如下图所示:
Kafka 没有使用 RBAC 模型,它用的是 ACL 模型。简单来说,这种模型就是规定了什么用户对什么资源有什么样的访问权限。我们可以借用官网的一句话来统一表示这种模型:“Principal P is [Allowed/Denied] Operation O From Host H On Resource R.” 这句话中出现了很多个主体,我来分别解释下它们的含义。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kafka授权机制是Kafka集群中至关重要的一部分,通过ACL模型实现对资源的细粒度访问控制。配置SSL的过程中,需要创建证书和密钥,并在Broker和客户端配置文件中指定相关路径和密码。ACL的配置包括开启ACL验证、使用白名单机制、为SSL用户和客户端程序授予权限等步骤。建议PaaS管理员授予最少权限,以提高Kafka集群的安全性。总结来说,本文详细介绍了Kafka的授权机制和SSL端配置方法,旨在帮助读者构建更安全的Kafka集群。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kafka 核心技术与实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(20)

  • 最新
  • 精选
  • J.Smile
    思考题:应该是消费者端的TOPIC的WRITE权限

    作者回复: 👍

    2020-06-20
    5
  • James
    为啥是消费者端的TOPIC的WRITE权限

    作者回复: 源码规定的

    2020-07-04
    4
  • 拈花微笑
    老师,我今天在idea下搭建kafka源码,准备研究一下,gradle编译过了,但在idea里编译不过,在client对应的项目报这个错:Error:(19, 39) java: 程序包org.apache.kafka.common.message不存在. kafka源码版本是V2.3.0, scala的版本是2.12.7,源码缺失了mesage,怎么解决? 我试了V2.2.1版本,仍然是一样的问题.

    作者回复: 嗯嗯,新版kafka将request和response的格式类改成自动生成了。你可以运行在Kafka源码目录下运行./gradlew重新生成一遍,然后再导入到IDEA

    2019-08-20
    3
    3
  • 老陈的空酒桶
    你好,胡夕老师,kafka_version=2.12.2.3.0,使用的授权方式是SASL_PLAINTEXT,在config/server.properties配置allow.everyone.if.no.acl.found=true,使用未设置权限的topic,发送消息,会有授权失败的日志。 日志如下: SocketServer brokerId=0] Failed authentication with /10.192.0.1 (Unexpected Kafka request of type METADATA during SASL handshake.) (org.apache.kafka.common.network.Selector) 针对此问题,老师回答需要赋值METADATA请求的权限,能问一下具体是配置什么呢?

    作者回复: 试试TOPIC的DESCRIBE权限

    2020-03-30
    2
  • 咸淡一首诗
    胡老师,ACL 权限列表中的三列 Operation,Resource,API没有明白具体什么意思,比如: READ Topic Fetch READ Topic OffsetCommit READ Topic TxnOffsetCommit 这三个READ 只有API 列不同,有什么区别,他们怎么与命令行参数匹配和使用的?

    作者回复: 这表示Fetch、OffsetCommit和TnxOffsetCommit请求需要Topic的READ权限

    2020-03-14
    2
  • 花开漫夏
    胡老师您好,上文 SASL 和本文的 SSL + ACL 方案如何选择?

    作者回复: SASL是做认证的,本文的SSL+ACL主要是授权。它们是两回事,不矛盾的。当然你可以选择SASL+ACL

    2020-02-19
    2
  • 13761642169
    你好,胡夕老师,kafka_version=2.12.2.3.0,使用的授权方式是SASL_PLAINTEXT,在config/server.properties配置allow.everyone.if.no.acl.found=true,使用未设置权限的topic,发送消息,会有授权失败的日志。 日志如下: SocketServer brokerId=0] Failed authentication with /10.192.0.1 (Unexpected Kafka request of type METADATA during SASL handshake.) (org.apache.kafka.common.network.Selector)

    作者回复: 需要赋值METADATA请求的权限

    2019-08-26
    5
    2
  • 张洋
    老师 按照这两节的配置 启动kafka 一直提示这个Error Connection to node 0 failed authentication due to :SSL handshake falied WaRN SSL handshake failed SSLHandshakeException: General SSLEngine problem

    作者回复: 可能的原因是ssl.endpoint.identification.algorithm设置成了https,开启了主机名验证。设置为空试试。

    2020-07-08
    1
  • Mick
    让一个客户端能够查询消费者组的提交位移数据: kafka-acls --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:"CN=Xi Hu,OU=YourDept,O=YourCompany,L=Beijing,ST=Beijing,C=CN" --OffsetCommit --operation Read --group "group_id" 老师不知道这么写对不对?

    作者回复: 需要赋予Group的READ权限,因为READ权限自动包含OffsetCommit:)

    2019-10-09
    1
  • Geek_edc612
    不太懂最后这块的授权: bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:"CN=Xi Hu,OU=YourDept,O=YourCompany,L=Beijing,ST=Beijing,C=CN" --consumer --topic 'test' --group '*' 为啥这个用户名这么长,这是授权的ssl的用户名吗?

    作者回复: 是的。这个是我用来演示的SSL用户

    2019-08-20
    1
收起评论
显示
设置
留言
20
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部