资讯专栏INFORMATION COLUMN

大数据开发系列五:kafka& zookeeper 配置kerberos认证

不知名网友 / 2816人阅读
大数据开发系列五:kafka& zookeeper 配置kerberos认证
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
今天我们继续实践在已安装的kerberos服务基础上对kafka与zookeeper  组件进行kerberos认证配置。

环境依赖


zookeeper认证配置

2.1 创建principle添加用户
kadmin.local -q "addprinc -randkey zookeeper/bigdata-05@HADOOP.COM"
kadmin.local -q "addprinc -randkey zookeeper/bigdata-01@HADOOP.COM"
kadmin.local -q "addprinc -randkey zookeeper/data01@HADOOP.COM"
kadmin.local -q "listprincs"  验证添加用户信息
2.2 创建keytab密码文件
kadmin.local -q "xst -k /root/keytabs/kerberos/zookeeper.keytab zookeeper/bigdata-05@HADOOP.COM"
kadmin.local -q "xst -k /root/keytabs/kerberos/zookeeper.keytab zookeeper/bigdata-01@HADOOP.COM"
kadmin.local -q "xst -k /root/keytabs/kerberos/zookeeper.keytab zookeeper/data01@HADOOP.COM"
验证密钥文件:
klist -kt /root/keytabs/kerberos/zookeeper.keytab
将生成的zookeeper.keytab 复制到三台zk主机器/etc/security/keytabs/ 目录下,同时将/etc/krb5.conf 也复制到三台zk主机器/etc/目录下。
2.3 配置zookeeper.conf
在所有zk主机器上 /etc/security/keytabs/目录下新建zookeeper.jaas 内容如下:
Server{
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
keyTab="/etc/security/keytabs/zookeeper.keytab"
principal="zookeeper/bigdata-05@HADOOP.COM"
userTicketCache=false;
};
Client{
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
keyTab="/etc/security/keytabs/zookeeper.keytab"
principal="zookeeper/bigdata-05@HADOOP.COM"
userTicketCache=false;
};
红色内容需按zk所在主机名称进行修改。
2.4 zoo.cfg 配置修改
etc/zoo.cfg 新增内容:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
2.5 配置环境变量java.env
etc/java.env
export JVMFLAGS="-Djava.security.auth.login.config=/etc/security/keytabs/zooke
eper.jaas -Djava.security.krb5.conf=/etc/krb5.conf"
2.6 启动zookeeper
bin/zkServer.sh start
检查日志信息。
2.7 验证认证情况
找一个zk节点利用zk客户端进行操作,./zkCli.sh -server 192.168.199.244:2183 ,当出现如下信息的时,说明客户端认证成功


kafka认证配置

3.1 创建principle添加用户
kadmin.local -q "addprinc -randkey kafka/bigdata-03@HADOOP.COM"
kadmin.local -q "addprinc -randkey kafka/bigdata-05@HADOOP.COM"
kadmin.local -q "listprincs"  验证添加用户信息
3.2 创建keytab密码文件
kadmin.local -q "xst -k /root/keytabs/kerberos/kafka.keytab kafka/bigdata-03@HADOOP.COM"
kadmin.local -q "xst -k /root/keytabs/kerberos/kafka.keytab kafka/bigdata-05@HADOOP.COM"
验证密钥文件:
klist -kt /root/keytabs/kerberos/kafka.keytab
将生成的kafka.keytab 复制到两台zk主机器/etc/security/keytabs/ 目录下,同时将/etc/krb5.conf 也复制到两台kafka主机器/etc/目录下。
3.3 配置kafka.jaas
在所有kafka主机器上 /etc/security/keytabs/目录下新建kafka.jaas 内容如下:
KafkaServer{
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
serviceName="kafka"
keyTab="/etc/security/keytabs/kafka.keytab"
principal="kafka/bigdata-03@HADOOP.COM";
};
红色内容需按kafka所在主机名称进行修改。
3.4 配置kafka.jaas
在所有kafka主机器上 /etc/security/keytabs/目录下新建kafka.jaas 内容如下:
KafkaServer{
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
serviceName="kafka"
keyTab="/etc/security/keytabs/kafka.keytab"
principal="kafka/bigdata-03@HADOOP.COM";
};
红色内容需按kafka所在主机名称进行修改。
3.5 修改kafka server.properties
新增或者修改:
listeners=SASL_PLAINTEXT://192.168.199.102:9098
advertised.listeners=SASL_PLAINTEXT://192.168.199.102:9098

security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=GSSAPI
sasl.enabled.mechanisms=GSSAPI
sasl.kerberos.service.name=kafka //需要跟principal的名称相同
3.6 修改kafka kafka-server-start.sh
在脚本倒数第二行新增:
export KAFKA_OPTS="-Dzookeeper.sasl.client=true -
Dzookeeper.sasl.client.username=zookeeper -
Djava.security.krb5.conf=/etc/krb5.conf -
Djava.security.auth.login.
config=/etc/security/keytabs/kafka.jaas"
zookeeper 开启 Kerberos 认证,需要将zookeeper.sasl.client 设为 true,并配置访问zk 用户凭证信息。
3.7 验证认证情况
kafka 加入认证后,利用kafka 命令查看所有的topic名称列。
1)在所有kafka主机器上 /etc/security/keytabs/目录下新建kafka-client-jaas.conf 和kafka_client.properties  
内容如下:
kafka-client-jaas.conf:
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/etc/security/keytabs/kafka.keytab"
storeKey=true
useTicketCache=false
principal="kafka/bigdata-03@HADOOP.COM";
};
kafka_client.properties:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka //需要跟principal的名称相同
2)在 kafka-topics.sh 倒数第行新增认证配置项
export KAFKA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf -
Djava.security.auth.login.config=/etc/security/keytabs/kafka-client-jaas.conf"
3)查看所有的topic列表名称
./kafka-topics.sh --list --bootstrap-server 192.168.199.102:9098 --command-config 
/etc/security/keytabs/kafka_client.properties
需要加入command-config 参数才能果出所有topic 列表,同时观察server.log 日志信息。


本文作者:长研架构小组(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129095.html

相关文章

  • 新东方的Kubernetes实践:从服务化ES到Kafka和Redis

    ...用户生成出来了。 这是部署出来的完整的Kafka集群,有Zookeeper,有Kafka,有监控用的exporter等。我们为每个集群都配置了一个kafka Manager,这是一套图形化的管理控制台,你可以直接在manager中管理kafka。 监控报警是必不可少的,...

    Neilyo 评论0 收藏0
  • 数据安全: Hadoop安全模型的演进

    ...安全审计。这些 任务都被记录在Hadoop、 MapReduce、HBase 和 Zookeeper的JIRA中,择重点摘录如下: 加密的静态数据——JIRA 任务 HADOOP-9331 (Hadoop加密编码解码器框架及加密编码解码器的实现) 和 MAPREDUCE-5025 (支持MapReduce中的加密编...

    nemo 评论0 收藏0
  • 《从0到1学习Flink》—— Flink 配置文件详解

    ...源 # fs.default-scheme 高可用性配置 # 可以选择 "NONE" 或者 "zookeeper". # high-availability: zookeeper # 文件系统路径,让 Flink 在高可用性设置中持久保存元数据 # high-availability.storageDir: hdfs:///flink/ha/ # zookeeper 集群中仲裁者的机器 ip 和 port...

    superw 评论0 收藏0
  • 《从0到1学习Flink》—— Flink 配置文件详解

    ...源 # fs.default-scheme 高可用性配置 # 可以选择 "NONE" 或者 "zookeeper". # high-availability: zookeeper # 文件系统路径,让 Flink 在高可用性设置中持久保存元数据 # high-availability.storageDir: hdfs:///flink/ha/ # zookeeper 集群中仲裁者的机器 ip 和 port...

    brianway 评论0 收藏0
  • 记一次 Kafka 排错

    环境信息 CentOS 7.3Kafka 使用默认配置, 单独启动 Zookeeper , 不使用自带的 zk ,KafkaZookeeper 在同一台主机上, 均为单节点 问题现象 使用 kafka 测试队列正常, Java 代码无法正常接收队列消息 相关代码  pom.xml org.springframework.bo...

    Barrior 评论0 收藏0

发表评论

0条评论

不知名网友

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<