34 | 云环境下的授权该怎么做?
胡夕
该思维导图由 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
《Kafka 核心技术与实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(20)
- 最新
- 精选
- J.Smile思考题:应该是消费者端的TOPIC的WRITE权限
作者回复: 👍
2020-06-205 - James为啥是消费者端的TOPIC的WRITE权限
作者回复: 源码规定的
2020-07-044 - 拈花微笑老师,我今天在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-2033 - 老陈的空酒桶你好,胡夕老师,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-302 - 咸淡一首诗胡老师,ACL 权限列表中的三列 Operation,Resource,API没有明白具体什么意思,比如: READ Topic Fetch READ Topic OffsetCommit READ Topic TxnOffsetCommit 这三个READ 只有API 列不同,有什么区别,他们怎么与命令行参数匹配和使用的?
作者回复: 这表示Fetch、OffsetCommit和TnxOffsetCommit请求需要Topic的READ权限
2020-03-142 - 花开漫夏胡老师您好,上文 SASL 和本文的 SSL + ACL 方案如何选择?
作者回复: SASL是做认证的,本文的SSL+ACL主要是授权。它们是两回事,不矛盾的。当然你可以选择SASL+ACL
2020-02-192 - 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-2652 - 张洋老师 按照这两节的配置 启动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-081 - 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-091 - 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-201
收起评论