使用ranger对kafka进行鉴权
使用ranger对kafka进行鉴权
测试环境:ranger-kafka-plugin为0.6.3版本,kafka版本为kafka_2.10-0.10.1.1,且kafka broker为一个节点。
一、Ranger对kafka进行权限控制,前提需要kafka开启kerberos认证(注意:若kafka不开启kerberos的话Ranger无法获取kafka相关操作的用户,进而无法完成鉴权操作)
二、开启kerberos认证
包括zookeeper开启kerberos认证,kafka开启zookeeper认证。
1、安装配置Kerberos Server
(1)安装server:
yum install krb5-libs krb5-server krb5-workstation
具体配置略.
(2)安装client:yum install krb5-libs krb5-workstation
2、开启zookeeper kerberos认证
由于kafka依赖zookeeper,所以zookeeper也需要开启kerberos认证,这部分内容可参考zookeeper官网进行配置。
3、开启kafka kerberos认证
(1) 编辑kafka_server_jaas.conf文件:内容如下:
KafkaServer {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab=”/etc/security/keytabs/kafka.keytab”
storeKey=true
useTicketCache=false
serviceName=”kafka”
principal=”kafka/xhhdev@HHKDC”;
};
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true
renewTicket=true
serviceName=”kafka”;
};
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=false
useTicketCache=true;
};
(2)加入jvm参数
-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/usr/local/soft/kafka/config/kafka_server_jaas.conf”
在下面脚本中加入:
vim kafka-run-class.sh
if [ -z “$KAFKA_JVM_PERFORMANCE_OPTS” ]; then
KAFKA_JVM_PERFORMANCE_OPTS=”-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+DisableExplicitGC -Djava.awt.headless=true -Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/usr/local/soft/kafka/config/kafka_server_jaas.conf”
fi
(3)server.properties中加入如下配置
listeners=SASL_PLAINTEXT://xhhdev:6667
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=GSSAPI
sasl.enabled.mechanisms=GSSAPI
sasl.kerberos.service.name=kafka
(4)创建文件producer.properties 及consumer.properties 且加入如下配置:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka
三、安装ranger-kafka-plugin
1、解压包:tar –zxvf ranger-0.6.3-kafka-plugin.tar.gz
2、修改install.properties文件
POLICY_MGR_URL=http://xhhtest:6080 (Ranger-admin 访问地址)
REPOSITORY_NAME=kafkadev (服务名称)
XAAUDIT.DB.IS_ENABLED=true
XAAUDIT.DB.FLAVOUR=MYSQL
XAAUDIT.DB.HOSTNAME= xhhtest
XAAUDIT.DB.DATABASE_NAME=ranger_audit
XAAUDIT.DB.USER_NAME=root
XAAUDIT.DB.PASSWORD=123456
3、添加软连接
假设kafka_2.10-0.10.1.1安装目录为:/usr/local/soft/kafka/
ranger-0.6.3-kafka-plugin 安装目录为:/usr/local/ranger-0.6.3-kafka-plugin
则执行:
ln -s /usr/local/soft/kafka/conf/ /usr/local/kafka
ln -s /usr/local/soft/kafka/lib/ /usr/local/kafka
4、执行 ./enable-kafka-plugin.sh
之所以执行软连接,是因为执行此脚本时需要知道kafka_2.10-0.10.1.1的conf 和lib所在位置。
5、重启kafka服务
四、鉴权测试
1、在ranger-admin界面添加kafka service (name为kafkadev)
2、查看插件是否成功,audit->plugins显示
3、测试
(1)执行kinit -kt /etc/security/keytabs/kafka.service.keytab kafka/xhhdev@HHKDC
(2)创建topic:./kafka-topics.sh –zookeeper xhhdev:2181 –create –topic topic_test –partitions 1 –replication-factor 1,此时可以创建成功。
(3)生产:切换到用户xhhtest,
执行kinit -kt /etc/security/keytabs/xhhtest.service.keytab xhhtest/xhhdev@HHKDC
./kafka-console-producer.sh –broker-list xhhdev:6667 –topic topic_test –producer.config producer.properties,此时报错如下:
WARN Error while fetching metadata with correlation id 0 : {topic_test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
原因是:xhhtest没有权限
(4)设置policy,增加权限,再次执行ok。
参考文献:
http://ranger.apache.org/
http://kafka.apache.org/documentation/#security_sasl
https://www.ibm.com/support/knowledgecenter/en/SSPT3X_4.2.5/com.ibm.swg.im.infosphere.biginsights.admin.doc/doc/admin_ranger_plugin_kafka.html
使用ranger对kafka进行鉴权的更多相关文章
- SpringBoot+JWT+SpringSecurity+MybatisPlus实现Restful鉴权脚手架
若图片查看异常,请前往掘金查看:https://juejin.im/post/5d1dee34e51d4577790c1cf4 前言 JWT(json web token)的无状态鉴权方式,越来越流行 ...
- ApiAuthValue鉴权机制总结
一.背景介绍 1.自动化的配置工具autoconfig介绍 项目开发过程中,有些配置会随着运行环境的变化而各不相同.如jdbc驱动的配置,在开发环境可能链接到开发本地的数据库,测试环境则有一套测试专用 ...
- 搭建一个分布式MongoDB鉴权集群
今天休假在家,测试并搭建了一个replica set shard MongoDB鉴权集群.replica set shard 鉴权集群中文资料比较少,本文是个人笔记,同时也希望对后来者有所帮助.本文仅 ...
- 开放平台鉴权以及OAuth2.0介绍
OAuth 2.0 协议 OAuth是一个开发标准,允许用户授权第三方网站或应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的内容. OAuth 2.0 ...
- 取消mod_sofia的呼叫鉴权
FreeSWITCH中默认的SIP呼叫是要鉴权的,流程如下. 终端 FreeSWITCH A -----Invite------> FS A <----Trying------ FS A ...
- android 高德地图出现【定位失败key鉴权失败】
如题:android 高德地图出现[定位失败key鉴权失败] 原因:使用的是debug模式下的SHA1,发布的版本正确获取SHA1的方式见: 方法二使用 keytool(jdk自带工具),按照如下步骤 ...
- RESTful登录设计(基于Spring及Redis的Token鉴权)
转载自:http://www.scienjus.com/restful-token-authorization/ http://m.blog.csdn.net/article/details?id=4 ...
- .NET 统一用户管理 -- 统一鉴权
统一鉴权 目的 为什么要统一鉴权了,每一个业务系统几乎都离不开,用户,角色,权限 这个 3个基础功能,为了避免各个系统各自去开发一套权限管理等基础功能,也同时轻松管理每个用户的全部权限. 怎么做 ...
- linux上svn连接visual svn server时ssl鉴权失败,问题解决(转)
场景:1.在windows 7上安装了visual svn server作为自己的svn服务器. 2.在虚拟机centos 6.3上使用svn客户端check代码,报错: [plain] view p ...
随机推荐
- SQL Server存储过程邮件发送以表格方式发送
一.收到邮件显示:示例 二.存储过程代码部分: BEGIN SET NOCOUNT ON; --初始化 Declare @MailTo nvarchar(max) Declare @MailCc nv ...
- eShopOnContainers 知多少[2]:Run起来
环境准备 Win10(开启Hyper-V) .NET Core SDK Docker for Windows VS2017 or VS Code Git SQL Server Management S ...
- leaflet 学习备忘
leaflet 开源js地图工具.非常好用. leaflet参考:http://leafletjs.com/ 特性: 完全开源,可以基于不同的第三方瓦片生成地图. 基于原始GPS,无需转换 可创建离线 ...
- colly源码学习
colly源码学习 colly是一个golang写的网络爬虫.它使用起来非常顺手.看了一下它的源码,质量也是非常好的.本文就阅读一下它的源码. 使用示例 func main() { c := coll ...
- 推荐系统(Recommendation system )介绍
前言 随着电子商务的发展,网络购物成为一种趋势,当你打开某个购物网站比如淘宝.京东的时候,会看到很多给你推荐的产品,你是否觉得这些推荐的产品都是你似曾相识或者正好需要的呢.这个就是现在电子商务里面的推 ...
- 知识小罐头04(idea+maven+部署war包到tomcat 下)
上一节新建了一个基本的maven web环境,现在最快速度新建一下springmvc环境! 1.最快搭建springmvc环境 什么叫做最快,当然是怎么简单怎么来啦!由于内容都是很熟悉的东西,serv ...
- JavaScript夯实基础系列(一):词法作用域
作用域是一组规则,规定了引擎如何通过标识符名称来查询一个变量.作用域模型有两种:词法作用域和动态作用域.词法作用域是在编写时就已经确定的:通过阅读包含变量定义的数行源码就能知道变量的作用域.Jav ...
- cocos creator主程入门教程(五)—— 日志系统
五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 这一篇介绍日志系统的设计.一般我们开发一个demo,只会简单的用cocos提供的cc.log打印下日志, ...
- DSAPI TreeView节点增删简化操作
将一行或多行字符串添加到TreeView控件. 函数: 控件.TreeView控件.添加路径节点到TreeView(要添加节点的TreeView控件,字符串或字符串数组) 示例:将一个多行文本添加到T ...
- 避免SQL全表模糊查询查询
1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like %...%(全模糊)这样的条件,是无法使用索引的,全表扫描自然效率很低:另外,由于匹配算法的关系 ...