服务开发指南-Kerberos认证

客服9205发表于:2018年07月05日 15:30:04更新于:2018年07月13日 17:53:57

Kerberos认证

l  简介

Kerberos实现的是机器级别的安全认证,也就是服务到服务的认证。在KDC上分别产生主机与各个节点的keytab(包含了host和对应节点的名字,还有他们之间的密钥),并将这些keytab分发到对应的节点上。通过这些keytab文件,节点可以从KDC上获得与目标节点通信的密钥,进而被目标节点所认证,提供相应的服务,防止被冒充的可能性。

l  认证方式

² 命令行

使用keytab文件认证:

kinit -kt username.keytab -p username@HADOOP.CITIC

查看当前认证信息:

klist

查看keytab文件对应principal:

klist -kte username.keytab

² 代码端

代码端认证需要指定krb5.conf配置文件,pricipal以及keytab文件。不同服务认证配置项存在差异,以下示例为各组件认证代码示例,具体请查看各服务组件的开发文档。

              i.              HBase

image.png

 

           ii.              HDFS

image.png

         iii.              Hive、Spark(Yarn模式)、MapReduce

 image.png

         iv.              Kafka

image.png

其中,kafka_jass.conf内容如下:

KafkaServer {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab=”userkeytab_path
storeKey=true
useTicketCache=false
serviceName=”kafka”
principal=”user@HADOOP.CITIC“;
};
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true
renewTicket=true
serviceName=”kafka”;
};
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab=”userkeytab_path
storeKey=true
useTicketCache=false
serviceName=”zookeeper”
principal=”user@HADOOP.CITIC“;
};

 

认证有效期

Kerberos ticket具有lifetime,超过此时间则ticket就会过期,需重新认证。目前大数据平台默认用户的ticket lifetime为30d。Ticket lifetime取决于以下配置项的最小值: 

1.Server端kdc.conf配置项max_life 

2.Kerberos内置Pricipal krbtgt的maxmum ticket life 

3.Principal的maximum tiket life time  

4.Client端的krb5.conf配置项ticket_lifetime,示例:

ticket_lifetime = 24h

5.kinit -l 认证命令后指定的时间,示例:

获得生命期为 10 小时的票据授权票据,执行

kinit -l 10h my_pricipal

综上,用户可在最大有效期内通过修改Client端的krb5.conf配置或kinit - l操作进行个性化设置。

 



附件:Kerberos认证.docx • 111.52KB • 下载

中信云服务团队