kerberos认证主要用来解决身份认证的问题,避免非法用户去操作我们kafka里面的数据。
kerberos它是一个服务,是需要我们搭建的。
AD:主要用来存储用户名和密码、秘钥、包括用户所有的一些权限。
KDC里面包含两个角色。
用户鉴权流程:
首先客户端通过用户名、密码或者是keytab(秘钥)来访问KDC(秘钥分发中心)里面的鉴权服务申请鉴权。
鉴权服务验证客户端的身份没有问题之后,会发放TGT票据。
然后客户端拿上TGT票据向票据验证服务申请验证TGT。如果验证没有问题,这个时候会发放访问对应服务的票据ST。
最后客户端拿上对应的票据ST就可以访问对应的服务了。
我们**平台作为客户端(也就是消费端),主要修改了kafka集群的IP地址,zookeeper集群的IP地址。krb认证中心的IP地址。
主要涉及以下这么三个文件:
deploy kerberos.txt(这个没啥用,主要是用来部署的)
cdprealtime.keytab
krb5.conf
其中
krb5.conf是Kerberos认证环境下的配置文件。定义了Kerberos集群和连接配置,配置项的说明请参见Kerberos文档。
KDC服务器:KDC服务器域名和IP地址定义在krb5.conf
配置文件中。
keytab文件包含用户的身份验证凭据,用于向Kerberos服务器认证身份。(说白了里面放的一个秘钥)。
如果想要在java客户端进行kerberos认证一定要需要有一个与之匹配的kerberos服务端的访问程序文件:kafka_client_jaas.conf.
如果想要在java程序里面配置kerberos的认证处理操作则需要将以上配置文件的路径引入到项目之中:
。要求在系统属性之中增加配置。
服务端的配置
kafka正是因为推出了kerberos认证,才表示kafka真正由实验阶段变成了实际的生产环境。虽然kafka可以使用SSL认证(速度很慢),但是对于SSL的认证处理是非常复杂的。所以在实际的开发过程中,更多的开发者会选择利用kerberos这种认证机制同时结合jaas的配置文件进行更加有效的安全认证处理。
Kerberos这一名词来源于希腊神话"个头的狗---地狱之门守护者”。
系统设计上采用客户端/服务器结构与DES加密技术,并且能够进行相互认证即客户端和服务器端均可对对方进行身份认证。
可以用于防止窃听、防止replay攻击、保护数据完整性等场合是一种应用对称密钥体制进行密钥管理的系统。
同时也支持单点登录。
怎样给面试官讲:
先介绍一下kerberos是干啥的,然后介绍一下kerberos涉及到的组件。再介绍一下kerberos的工作流程。最后再简单描述一下自己项目中是怎样配置kerberos的。
标签:Kerberos,配置文件,kerberos,kafka,面试,认证,客户端 From: https://www.cnblogs.com/dongyaotou/p/18516197