Ranger-Kafka插件安装,
使用Ranger0.7.0版本,集成Kafka插件到Kafka集群,
Kafka Plugin需要安装到所有的Kafka的集群节点上面。
1.登陆Kafka的安装用户
2.下载插件包
scp pub@10.43.156.193:/home/pub/ranger/ranger-0.7.0/target/ranger-0.7.0-SNAPSHOT-kafka-plugin.tar.gz .
3.解压插件包
tar -zxvf ranger-0.7.0-SNAPSHOT-kafka-plugin.tar.gz
4.修改install.properties参数如下:
COMPONENT_INSTALL_DIR_NAME=/home/kafka/kafka_2.10-0.10.1.0
POLICY_MGR_URL=http://zdh-245:6080
SQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar
REPOSITORY_NAME=kafkadev
CUSTOM_USER=kafka
CUSTOM_GROUP=hadoop
5.在kafka的server.properties文件最下面添加如下内容
authorizer.class.name=org.apache.ranger.authorization.kafka.authorizer.RangerKafkaAuthorizer
6.添加config目录到kafka用户的CLASSPATH中
由于kafka启动时只指定了server.properties,否则会读取不到其他配置文件
在.profile增加如下配置:
export CLASSPATH=/home/kafka/kafka_2.10-0.10.1.0/config
source .profile
7.使用root用户执行安装脚本
./enable-kafka-plugin.sh
8.创建服务service
在RangerAdminServer里面Kafka标签下面创建名称为kafkadev的service,
service里面的Zookeeper Connect String填写zookeeper集群的IP:Port,例如:
zdh-237:2181,zdh-238:2181,zdh-239:2181
9.查看Kafka插件
在RangerAdminServer的Audit的Plugin页面里面可以看到Kafka插件,
插件kafka@zdh-237-kafkadev对应kafkadev的服务。
10.将ranger-0.7.0-SNAPSHOT-kafka-plugin拷贝到其他集群
并且重复上面的5,6,7步骤。
11.验证ranger的权限控制
在ranger-admin的users页面新建一个内部用户ANONYMOUS。
关闭all-topic策略
新建newTopic237only策略,配置ANONYMOUS用户(或者内部public组)对newTopic的所有权限,ip为10.43.159.237或者*
创建一个topic:
kafka-topics.sh --create --topic newTopic --replication-factor 3 --partitions 1 --zookeeper zdh-237:2181
开启生产者:
kafka-console-producer.sh --broker-list zdh-237:9092 --sync --topic newTopic
开启消费者:
kafka-console-consumer.sh --zookeeper zdh-237:2181 --topic newTopic --from-beginning
上述操作在10.43.159.237执行成功,在其他IP则执行失败。
由于执行kafka-console-producer.sh时,没有配置鉴权,使用的用户是ANONYMOUS(匿名用户),
会导致RangerKafkaAuthorizerd对其鉴权失败,客户端返回错误码ClusterAuthorizationFailedCode=31。
12.其他
kafka非安全模式对Ranger的策略配置要求说明:
https://community.hortonworks.com/articles/12699/ranger-and-kafka-integration-faq.html
https://cwiki.apache.org/confluence/display/RANGER/Kafka+Plugin
修改kafka的config目录下zookeeper.properties文件修改内容如下
dataDir=/home/garrison/zookeeper-3.5.1-alpha/tmp
通过log4j.properties开启ranger kafka插件的审计日志
log4j.logger.org.apache.ranger=DEBUG, authorizerAppender