数据结构 考研(数据结构考研参考)




数据结构 考研,数据结构考研真题

Kafka认证3:添加Kerberos认证详细过程
sasl.kerberos.service.name配置的含义

左神算法与数据结构全阶班

download:https://www.51xuebc.com/thread-392-1-1.html
Kafka的Kerberos部署的核心是Kafka服务器的主要配置。其主要部分必须在属性文件的sasl.kerberos.service.name属性中配置,而主机名部分必须确保/etc/hosts文件中存在Kafka IP的域名。
对于Kafka客户端来说,它们之和就是三个拼接的目标服务的本金:sasl . Kerberos . service . name/Kafka IP的值或者是Kafka IP对应的主机名@Realm,必须在KDC数据库中保证。
找了半天,没看到这个配置项的说明。经过反复操作,我终于明白了这个属性的含义。
例如,请求目标Kafka IP是192.168.xx.1当Kafka客户端启动Kerberos身份验证时,它会向KDC发送一个AS_REQ。目标服务的主体的计算过程如下:
1)如果/etc/hosts文件中存在目标主机的域名,则请求服务的主体是
Sasl.kerberos.service.name/主机名@Realm。
2)如果/etc/hosts文件中不存在目标主机的域名,则请求服务的主体是
Sasl.kerberos.service.name/目标IP@Realm。
从KDC的日志中可以看到这个结果:
比如在我的请求过程中,目标Kafka IP的域名是oracle,也就是这里的Kerberos票证认证过程。
总之,对于客户端和服务器来说,这两种配置的含义是:
1.Kafka客户端最重要的sasl . Kerberos . service . name+目标IP的域名必须存在于KDC认证数据库中。
2.KafkaServer sasl . Kerberos . service . name+本地域名,必须是jaas.config文件中Kafka server主体的值。
主机域名准备
Kerberos的主要组成规则是:

作为服务器,一般需要配置域名。最好是客户端和服务器都配置服务器IP的域名,而且必须统一才能保证正确的Kerberos认证过程。否则,在Kerberos数据库中就很容易出现找不到的问题。
对于Kafka集群,集群主机的主体用户名相同,但主机域名不同。客户端维护集群节点的域名,sasl.kerberos.service.name的配置是每个节点的用户名。
在设置Kafka Kerberos身份验证环境之前,必须在客户端和服务器的/etc/hosts文件中配置Kafka服务器IP的域名。很多在线建设教程都是由Kafka客户端和Kafka服务托管的,不会出现域名配置的问题。
在kafka的客户端主机上部署Kafka的副本,以启动消费者应用程序;服务器正常部署kafka,在Kafka的home目录下创建一个kerberos文件夹,放Kerberos认证相关的配置文件。
KDC注册的客户端和服务器
步骤零,复制krb5.conf
将KDC认证中心的krb5.conf文件复制到所有Kerberos客户端。客户端最重要的系统环境变量是krb5.conf文件的路径。因此,每个KDC客户端都需要维护与KDC服务器一致的krb5.conf文件。复制命令是:
scp/etc/krb5 . conf root @ 192 . 168 . 10 . 101:/opt/Kafka-1 . 0 . 2/Kerberos/krb5 . conf
scp/etc/krb5 . conf root @ 192 . 168 . 10 . 102:/opt/Kafka-1 . 0 . 2/Kerberos/krb5 . conf
复制代码
Java API添加Kerberos身份验证的代码是:
system . set property(” Java . security . krb5 . conf “,krb 5 conf);
复制代码
第一步是注册Kerberos帐户。
你需要在Kerberos数据库中注册Kafka的客户端和服务器,并在默认域名MY_KDC中注册。通讯器显示刚才表中的校长。
在Kerberos服务器上,执行kadmin.local命令并输入以下操作来注册帐户:
你好-卡夫卡-客户
addprinc hello-Kafka-server/Oracle
复制代码
运行结果如下:
第二步是生成帐户的keytab文件。对于上面添加的两个Kerberos帐户,导出keytab文件:
kadmin . local-q ” xst-norandkey-k/root/hello-Kafka-client . keytab hello-Kafka-client @ MY _ KDC。COM “
kadmin . local-q ” xst-norandkey-k/root/hello-Kafka-server . keytab hello-Kafka-server/Oracle @ MY _ KDC。COM “
复制代码
使用控制台命令kadmin.local导出keytab文件和客户端keytab:
服务器密钥表如下:
步骤3:传输keytab文件。将账号的keytab文件远程传输到Kafka客户端和服务器,也就是之前的101和102主机。
scp/root/hello-Kafka-client . keytab root @ 192 . 168 . 10 . 101:/opt/Kafka-1 . 0 . 2/Kerberos/hello-Kafka-client . keytab
scp/root/hello-Kafka-server . keytab root @ 192 . 168 . 10 . 102:/opt/Kafka-1 . 0 . 2/Kerberos/hello-Kafka-server . keytab
复制代码
Kafka服务器部署Kerberos
第一步是准备server-kerberos.properties文件。复制Kafka config目录下的server.properties文件,命名为kerberos-server.properties,编辑认证配置相关内容:
listeners = SASL _明文://192.168.10.102:9092
advertised . listeners = SASL _明文://192.168.10.102:9092
security . inter . broker . protocol = SASL _明文
sasl . mechanism . inter . broker . protocol = GSSAPI
sasl.enabled.mechanisms=GSSAPI
sasl . Kerberos . service . name = hello-Kafka-server
复制代码
主要是上面的配置,sasl . Kerberos . service . name = hello-Kafka-server是当前Kafka的keytab文件中Principal的用户名部分。
其次,准备server-jaas.conf配置文件。在kerberos目录中,创建文件kafka-server-jaas.conf,并对其进行如下编辑:
KafkaServer {
需要com . sun . security . auth . module . krb 5 log in module
useKeyTab=true
//不同的主机需要修改成不同的keytab文件。
keyTab = “/opt/Kafka-1 . 0 . 2/Kerberos/hello-Kafka-server . keyTab “
storeKey=true
useTicketCache=false
//KDC Kafka服务器的完整用户名
principal= “你好-卡夫卡-服务器/oracle@MY_KDC。COM”;
};
复制代码
第三步:准备kafka-server-kerberos-start.sh文件,添加kerberos认证配置。复制脚本bin/kafka-server-start.sh,命名为kafka-server-kerberos-start.sh,编辑最后一行,在最后一行代码之前,添加Krb5环境变量和jaas.conf配置信息:
导出KAFKA _ OPTS = “-dzookeeper . sasl . client = false-dzookeeper . sasl . client . username = ZK-server
-DJ ava . security . krb5 . conf =/opt/Kafka-1 . 0 . 2/Kerberos/krb5 . conf
-DJ ava . security . auth . log in . config =/opt/Kafka-1 . 0 . 2/Kerberos/Kafka-server-JAAS . conf “
复制代码

第四步:启动Kafka服务。使用新创建的脚本kafka-server-kerberos-start.sh启动Kafka,并配置kerberos-server.properties:
bin/Kafka-server-start-Kerberos . sh-daemon Kerberos/Kerberos-server . properties
复制代码
Kafka客户端部署Kerberos
第一步是准备客户端kerberos.properties文件。复制Kafka config目录下的consumer.properties文件,命名为client-kerberos.properties,编辑认证配置相关内容:
bootstrap . servers = 192 . 168 . 10 . 102:9092
group . id = test-consumer-group 001
curity . protocol = SASL _明文
sasl.mechanism=GSSAPI
sasl . Kerberos . service . name = hello-Kafka-server
复制代码
步骤2:准备client-jaas.conf配置文件。在kerberos目录中,创建文件kafka-client-jaas.conf,并对其进行如下编辑:
卡夫卡客户端{
需要com . sun . security . auth . module . krb 5 log in module
useKeyTab=true
//不同的主机需要修改成不同的keytab文件。
keyTab = “/opt/Kafka-1 . 0 . 2/Kerberos/hello-Kafka-client . keyTab “
storeKey=true
useTicketCache=false
//客户在KDC的账号
principal= “你好-卡夫卡-client@MY_KDC。COM”;
};
复制代码
第三步:准备kafka-server-kerberos-start.sh文件,添加kerberos认证配置。复制脚本bin/kafka-console-consumer.sh,命名为Kerberos-Kafka-console-consumer . sh,编辑最后一行,在最后一行代码之前,添加Krb5环境变量和jaas.conf配置信息:
导出KAFKA _ OPTS = “-DJ ava . security . krb5 . conf =/opt/KAFKA-1 . 0 . 2/Kerberos/krb5 . conf
-DJ ava . security . auth . log in . config =/opt/Kafka-1 . 0 . 2/Kerberos/Kafka-client-JAAS . conf “
复制代码
步骤4,使用步骤1的配置文件进行认证消费:
bin/Kerberos-Kafka-console-consumer . sh-bootstrap-server 192 . 168 . 10 . 102:9092-topic my-topic-consumer . config = Kerberos/client-Kerberos . properties-from-beging
复制代码
KDC日志视图验证流程
KDC服务中心的日志文件为/var/log/krb5kdc.log,每次Kerberos认证对应两条日志消息:
如果Kafka服务启动或客户端启动失败,您也可以查看日志文件。常见的错误是主机、域名、服务名的配置不一致,导致Kerberos数据库中找不到Server的异常。
此外,还没有找到多域问题的解决方案。如果在客户机的krb5.conf文件中配置了多个领域,默认情况下只能有一个领域。但是对于需要同时访问多个Kafka和多组认证领域的应用程序,应该如何配置呢?

数据结构 考研(数据结构考研参考)

未经允许不得转载:考研网 » 数据结构 考研(数据结构考研参考)

赞 (0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏