flink on yarn的情况下配置的keytab文件会根据每次yarn application 分配taskmanager的变化都是不一样的,在部分场景下用户代码也需要获得keytab文件在yarn local Directory: {}", currDir); String keytabPath = null; File f = new File(currDir, "krb5.keytab "); keytabPath = f.getAbsolutePath(); log.info("local keytab path: {}", keytabPath); final String remoteKeytabPrincipal = ENV.get("_KEYTAB_PRINCIPAL"); log.info("TM: remote keytab principal obtained {}", remoteKeytabPrincipal);
文件大小) flowTotalSize:498(keytab文件大小) flowIdentifier:{filesize}-fayson.keytab(重命名keytab文件名) flowFilename :fayson.keytab(keytab文件名) flowRelativePath:fayson.keytab(keytab文件名) file:@/root/fayson.keytab(指定本地keytab " \ -F "flowRelativePath=fayson.keytab" \ -F "file=@/root/fayson.keytab" \ -F "flowTotalChunks=1" 4 总结 1.通过keytab的认证方式绑定相较于之前的密码认证方式绑定会复杂些,API的调用需要按照顺序,先获取flow upload id后才可以上传keytab文件,最后通过接口获取绑定结果。 疑问:关于上传keytab的API接口中,ChunkNumber和flowTotalChunks参数设置为1,暂不没搞懂该值如何生成,目前keytab文件不特别大设置为1不会出现问题。
不同用户,即便密码相同,也不可共用同一个keytab文件 [root@xxx]# kinit -kt yarn.keytab hdfs@HADOOP.COM kinit: Keytab contains kvno 6, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:dengsc.keytab. Keytab name: FILE:dengsc.keytab KVNO Timestamp Principal ---- ------------------- ------- WRFILE:dengsc.keytab. 文件失效 [xujun@nfjd-hadoop02-node179 keytab]$ kinit -kt xujun.keytab xunjun kinit: Keytab contains no suitable
:test_krb.keytab. 6.2 keytab合并使用 1.将需要合并的keytab文件同意的放在同一个目录下 ? 2.使用ktutil命令合并keytab文件,操作如下: [root@cdh177 0804]# ktutil ktutil: rkt hbase.keytab ktutil: rkt hdfs.keytab ktutil: rkt hive.keytab ktutil: rkt yarn.keytab ktutil: wkt test-new.keytab ktutil: exit ? keytab合并成功,默认生成的keytab文件权限是600,如果事应非root用户执行需要注意权限问题 3.将生成的合并后的keytab文件拷贝到本地Windows环境进行测试 使用hdfs凭证进行初始化
一、创建自定义 Principal 与 keytab 虽然可以使用 Hive 服务本身的 Principal 与 keytab 来连接 Hive ,但使用服务本身的 principal 不具有普遍性,所以还是建议使用自定义的 以下分这两种场景来创建 Principal 和 Keytab 。 注意:keytab 文件一般要配置执行用户的只读权限,还要注意记得配置 Windows 的 主机名与 ip 映射。 文件为上边创建 liuyzh/node71.xdata@EXAMPLE.COM 对应的 liuyzh.service.keytab 。 principal 的主体部分(liuyzh)为代理用户,liuyzh.service.keytab 为密钥文件。
= "/Users/project/keytab/impala.keytab"; public static final String URL = "jdbc:hive2://localhost ); System.out.println("Login from keytab " + KEYTAB + " successful"); Class.forName " + KEYTAB + " failed."); e.printStackTrace(); } catch (ClassNotFoundException ee ,这个就是用来进行身份认证的keytab文件,这个一般每个业务方都会有自己的keytab,用来访问相应的HDFS/HIVE/SPARK等; PRINCIPAL,这个就是keytab文件对应的principal ,在linux机器上可以通过klist -kt xxx.keytab来查看keytab文件对应的principal; URL,这个就是Impala集群的连接地址,每个Impala集群的地址都不同,具体的可询问相关的对接人员
/keytab目录并重命名为hive.keytab,若目录不存则创建,并将hive.keytab文件的属组修改为hive ? 将hiveserver2.keytab拷贝至cdh03.fayson.com节点的/opt/cloudera/hive2.3.3/keytab目录并重命名为hive.keytab,若目录不存则创建,并将 hive.keytab文件的属组修改为hive ? </name> <value>/opt/cloudera/hive2.3.3/keytab/hive.keytab</value> </property> <! 2.在该篇文章中,选择了两个节点分别作为HiveMetastore和HiveServer2服务,是为了区分开各个服务的keytab文件,与CDH集群中keytab使用方式一致。
该目录主要存放自定义导出keytab脚本。 " FULLPRINC="$2" # Passwd based kinit #echo PASSWORD | kinit $CMUSER@$REALM # Or per keytab (keytab $FULLPRINC | grep 'Keytab' | grep 'False'; then echo Creating keytab for $FULLPRINC for $DEST 4.完成keytab生成自定义脚本的配置后,到Kerberos凭据管理界面,重新生成所有服务的Kerberos信息 ? 命令运行成功,以重新生成了所有服务的keytab文件 ? 2.由于CDH默认不支持集成FreeIPA,因此在集成FreeIPA的Kerberos时需要自定义生成keytab脚本 3.在CM中配置了自定义生成keytab脚本后,会忽略所有的Kerberos的配置信息
关于hdp集群开启kerberos之后相关配置说明 hdp集群开启kerberos之后,默认会在每台主机生成kerberos client配置文件/etc/krb5.conf,以及为各组件生成keytab image.png 我们在认证的时候需要选定其中某一台主机作为认证节点,然后将该节点的hive.service.keytab分发到所以主机上。 /keydir 拷贝host144的/etc/security/keytabs/hive.service.keytab文件到上述文件夹中 cp /etc/security/keytabs/hive.service.keytab /home/keydir/hive chmod 777 /home/keydir/hive/hive.service.keytab 将host144节点的hive.service.keytab分发到集群所有节点的 ' = '/home/keydir/hive/hive.service.keytab', -- hive metastore对应的 keytab 'hive_sync.kerberos.keytab.name
三、keytab说明 在Ambari页面启用Kerberos向导成功后,会在/etc/security/keytabs目录下生成很多keytab密钥: image.png 这些keytab密钥与Kerberos 数据库中的principal有着一一对应的关系,就像钥匙和锁一样,我们可以使用klist命令来查看keytab内容,比如查看hdfs.headless.keytab内容: klist -kte /etc /security/keytabs/hdfs.headless.keytab 由上图可见,hdfs.headless.keytab就是hdfs-mycluster@EXAMPLE.COM的密钥,也由此可以得出结论 ,keytab与principal是一一对应的。 认证各服务自身用户访问集群服务 在/etc/security/keytabs/目录,存放着我们的keytab密钥,该密钥和Kerberos数据库的Principal是一一匹配的,我们可以查看keytab
hadoop.security.authentication" , "kerberos" ); conf.set("hbase.security.authentication","kerberos"); conf.set("hbase.master.keytab.file ", "/hbase.keytab"); conf.set("hbase.master.kerberos.principal",HBASE_MASTER_PRINCIPAL); conf.set("hbase.regionserver.keytab.file ","/hbase.keytab"); conf.set("hbase.regionserver.kerberos.principal",HBASE_RS_PRINCIPAL); conf.set(" hbase.zookeeper.quorum","xxx.xxx.xxx.xxx"); conf.set("hbase.zookeeper.property.clientPort","2181"); --- // 这个hbase.keytab 也是从远程服务器上copy下来的, 里面存储的是密码相关信息 // 这样我们就不需要交互式输入密码了 conf.set("keytab.file" , "C:/Users/Downloads/hbase.keytab
aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/security/jason.keytab. /jason.keytab. /jason.keytab. /jason.keytab. -96 added to keytab WRFILE:/etc/security/yinzhengjie.keytab.
fi #是否为用户生成keytab文件 echo -n "Are you sure if you are generating keytab for ${name}@${domain} /keytab/${name}.keytab ${name}@${domain}" if [ $? 4.ldif和keytab目录主要用于存放生成的ldif文件和keytab文件 3.脚本使用 ---- 1.在命令行执行如下命令,运行脚本 [root@cdh01 openldap-shell]# sh 2.创建一个faysontest用户并生成keytab文件 ? 2.创建Kerberos账号及导出keytab文件,使用kadmin命令则该脚本必须运行在kadmin服务所在节点上。
生成成功 [4z6dmxv5p5.jpeg] [m3cuzlv3uj.jpeg] 测试test.keytab文件 [1vo7lb174b.jpeg] 注意:在非root用户下需要将生成的keytab文件 合并及使用 1.将需要合并的keytab文件统一的放在同一个目录下 [zgnanodl12.jpeg] 2.使用ktutil命令合并keytab文件,操作如下 | root@ip-172-31-18-97 keytab# ktutil ktutil: rkt hbase.keytab ktutil: rkt hive.keytab ktutil: rkt hdfs.keytab ktutil : rkt yarn.keytab ktutil: wkt test-new.keytabktutil: | |:----| 在当前目录下生成test-new.keytab文件 [pkcvz5xpff.jpeg ] 注意:由于生成的keytab文件权限默认为600,如果非root用户则需要使用sudo执行ktutil命令或者提升keytab权限至644以上。
is /etc/openldap/ldap.keytab refreshKrb5Config is true principal is ldapadmin@NODE3.COM tryFirstPass 认证报错,有没有可能是keytab指向不对,比如我window环境java客户端连接远程38.162服务器kerberos进行认证,那我肯定读不到服务器文件呀,我需要把文件下载到本地进行加载错误代码:测试类 文件进行登录,这里设置为 true,表示使用 keytab 文件。 options.put("keyTab", "/etc/openldap/ldap.keytab"); //指定 keytab 文件的路径,这里设置为 "/etc/openldap/ldap.keytab ", "C:\Users\211145187\Desktop\fsdownload\ldap.keytab");错误原因2:如果你的项目部署在linux服务器上运行,进行接口联调报错,也有可能是你的keytab
FILE:/etc/krb5.keytab. FILE:/etc/krb5.keytab. FILE:/etc/krb5.keytab. :/etc/krb5.keytab. FILE:/etc/krb5.keytab.
FILE:/etc/krb5.keytab. FILE:/etc/krb5.keytab. FILE:/etc/krb5.keytab. :/etc/krb5.keytab. FILE:/etc/krb5.keytab.
1.准备一个kafka的Principal账号及keytab文件 使用AD的话window下导出keytab命令: ktpass -princ kafka/admin@FAYSON.COM -mapuser QAZ -out kafkaadmin.keytab -crypto RC4-HMAC-NT 使用KDC的话Linux下导出keytab命令: kadmin.local -q "xst -norandkey -k kafkaadmin.keytab kafka/admin@FAYSON.COM" ? ="/opt/cloudera/kafka-eagle/keytab/kafkaadmin.keytab" principal="kafka/admin@FAYSON.COM"; }; Client "/opt/cloudera/kafka-eagle/keytab/kafkaadmin.keytab" principal="kafka/admin@FAYSON.COM"; }; ?
-cts acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab /hadoop.keytab</value> </property> <property> <name>dfs.namenode.kerberos.principal</name> <value </name> <value>/data/tools/bigdata/kerberos/hadoop.keytab</value> </property> <! /hadoop.keytab</value> </property> <property> <name>dfs.datanode.kerberos.principal</name> <value >/data/tools/bigdata/kerberos/hadoop.keytab</value> </property> <property> <name>dfs.http.policy</
文件,默认文件生成在/etc/krb5.keytab下,生成多个账号则在krb5.keytab基础上追加。 操作 1.在CM中进行生成Keytab操作之前需要停止集群 2.进入CM>群集>主机界面 3.选择主节点和备节点,并点击已选定操作>重新生成Keytab 4.重新生成Keytab成功,启动各项服务并查看是否正常运行 added to keytab FILE:/etc/krb5.keytab.Entry for principal test2 with kvno 2, encryption type camellia256 -cts-cmac added to keytab FILE:/etc/krb5.keytab.Entry for principal test2 with kvno 2, encryption type type des-cbc-md5 added to keytab FILE:/etc/krb5.keytab. 6.4Kdc和kadmin服务宕掉一个后,是否会影响正在运行的集群作业 1.在主启动kdc