zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    设计者模式详解--代理模式
    设计者模式详解--适配器模式
    设计者模式详解--原型模式
    设计者模式详解--建造者模式
    设计者模式详解--单例模式
    设计者模式详解--抽象工厂模式
    设计者模式详解--工厂方法模式
    angularjs 选项卡 --- 自定义属性
    AngularJS 自定义指令
    Jquery中的prop()方法 全选或全不选
  • 原文地址:https://www.cnblogs.com/felixzh/p/10475171.html
Copyright © 2011-2022 走看看