使用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进行鉴权的更多相关文章

  1. SpringBoot+JWT+SpringSecurity+MybatisPlus实现Restful鉴权脚手架

    若图片查看异常,请前往掘金查看:https://juejin.im/post/5d1dee34e51d4577790c1cf4 前言 JWT(json web token)的无状态鉴权方式,越来越流行 ...

  2. ApiAuthValue鉴权机制总结

    一.背景介绍 1.自动化的配置工具autoconfig介绍 项目开发过程中,有些配置会随着运行环境的变化而各不相同.如jdbc驱动的配置,在开发环境可能链接到开发本地的数据库,测试环境则有一套测试专用 ...

  3. 搭建一个分布式MongoDB鉴权集群

    今天休假在家,测试并搭建了一个replica set shard MongoDB鉴权集群.replica set shard 鉴权集群中文资料比较少,本文是个人笔记,同时也希望对后来者有所帮助.本文仅 ...

  4. 开放平台鉴权以及OAuth2.0介绍

    OAuth 2.0 协议 OAuth是一个开发标准,允许用户授权第三方网站或应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的内容. OAuth 2.0 ...

  5. 取消mod_sofia的呼叫鉴权

    FreeSWITCH中默认的SIP呼叫是要鉴权的,流程如下. 终端 FreeSWITCH A -----Invite------> FS A <----Trying------ FS A ...

  6. android 高德地图出现【定位失败key鉴权失败】

    如题:android 高德地图出现[定位失败key鉴权失败] 原因:使用的是debug模式下的SHA1,发布的版本正确获取SHA1的方式见: 方法二使用 keytool(jdk自带工具),按照如下步骤 ...

  7. RESTful登录设计(基于Spring及Redis的Token鉴权)

    转载自:http://www.scienjus.com/restful-token-authorization/ http://m.blog.csdn.net/article/details?id=4 ...

  8. .NET 统一用户管理 -- 统一鉴权

    统一鉴权 目的 为什么要统一鉴权了,每一个业务系统几乎都离不开,用户,角色,权限 这个 3个基础功能,为了避免各个系统各自去开发一套权限管理等基础功能,也同时轻松管理每个用户的全部权限. 怎么做   ...

  9. linux上svn连接visual svn server时ssl鉴权失败,问题解决(转)

    场景:1.在windows 7上安装了visual svn server作为自己的svn服务器. 2.在虚拟机centos 6.3上使用svn客户端check代码,报错: [plain] view p ...

随机推荐

  1. 「工具」Aquarelo - 来自意大利的色阶管理工具

    Aquarelo是一款小而美的色阶管理工具,由意大利团队开发,包含三个核心功能,可用于色彩管理.色彩搭配等场景. ## 相关参数 * 操作系统:macOS* 工具官网:[Aquarelo for Ma ...

  2. idapython import 'site' failed

    打开IDA出现这个错误提示,问题根源是IDA找不到python,安装2.7版本的python并设置%PYTHONHOME%变量为python安装目录就可以了 如果已经安装了python可以在命令行下用 ...

  3. 微信小程序如何像vue一样在动态绑定类名

    微信小程序如何像vue一样在动态绑定类名 更新时间:2018年04月17日 14:08:44   这篇文章主要介绍了微信小程序如何像vue一样在动态绑定类名,文中给大家提到了vue与微信小程序的区别, ...

  4. php原生代码实现explode函数功能

    在开始代码前要先介绍几个PHP函数: explode()   把字符串打散成数组 strpos()     返回字符串在另一个字符串第一次出现的位置(对大小写敏感) strstr()       查找 ...

  5. Mysql查询的一些操作(查表名,查字段名,查当月,查一周,查当天)

    查询数据库中所有表名 select table_name from information_schema.tables where table_schema='tools' and table_typ ...

  6. 2. CMake 系列 - 编译多文件项目

    目录 1. 编译不使用第三方库的项目 1.1 项目目录结构 1.2 相关代码 1.3 编译 2. 编译使用第三方库的项目 2.1 项目目录结构 2.2 相关代码 2.3 编译 1. 编译不使用第三方库 ...

  7. python的进程与线程(二)

    线程 之前了解了操作系统的发展史,也知道了进程和线程的概念,归纳一下就是:         进程:本质上就是一段程序的运行过程(抽象的概念)         线程:最小的执行单元,是进程的实体     ...

  8. Devexpress 常用的功能

    一 .GridControl的删除操作 private void rILinkEditInfoDel_Click(object sender, EventArgs e) { if (XtraMessa ...

  9. Java~类,抽象类和接口

    最近有空就着迷于java的世界,希望可以把自己的lind重构一个java版本出来,虽然遇到一些小问题,但也都解决了,还是那句话,知识需要积累,程序员需要一个追求! 类 抽象类 接口 泛型类 泛型接口 ...

  10. 学习ASP.NET Core Razor 编程系列十七——分组

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...