CDH6.3.2集成FreeIPA_邢为栋的博客-程序员秘密_cm 生成丢失凭据失败

技术标签: cloudera  Bigdata  

准备

系统配置

Cloudera Manager Server节点需要安装IPA admin libraries。命令如下:

yum install ipa-server

配置FreeIPA

FreeIPA的krb5.conf默认配置包含如下内容:

default_ccache_name = KEYRING:persistent:%{uid}

CDH不支持keyring credential cache,所以需要注释此配置。

另外,需要增加以下配置:

renew_lifetime = 7d
renewable = true

具体操作,在每个集群节点编辑**/etc/krb5.conf** 文件,修改**[libdefaults]** 域如下:

#default_ccache_name = KEYRING:persistent:%{uid}
renew_lifetime = 7d
renewable = true

在ipa server节点,重启ipa服务,命令如下:

ipactl restart

集群设置

如果YARN Resource Manager HA已经在一个非安全集群中激活,启用Kerberos之前,你需要清除StateStore。

步骤如下:

停止YARN服务,停止之后,进入YARN服务管理页,点开操作 ,点击格式化State Store ,完成后,关机命令页即可。

启用Kerberos

启动向导

在这里插入图片描述

一、欢迎

按照要求,配置集群,符合要求后,全部勾选,继续。

二、KDC信息

在这里插入图片描述

三、KRB5配置

不要使用Cloudera Manager管理krb5.conf,最好手动管理,更容易维护。

在这里插入图片描述

四、KDC Account Manager凭据

这里直接使用FreeIPA的管理员凭据即可。

在这里插入图片描述

五、命令详细信息

在这里插入图片描述

六、Configure Kerberos

在此之前,确保集群节点都已经被FreeIPA管理。FreeIPA客户端使用ipa-client。

在这里插入图片描述

七、命令详细信息

在这里插入图片描述

八、汇总

在这里插入图片描述

创建HDFS超级用户

启用Kerberos后,建议修改HDFS超级用户配置,例如修改成hdfssupergroup

FreeIPA添加用户

登陆FreeIPA Web UI,导航:身份 -> 用户 -> 添加。填写内容如下:(注意设置密码)

在这里插入图片描述

点击添加,即可创建用户。结果如下:

在这里插入图片描述

修改HDFS配置

配置搜索框输入Superuser Group 进行搜索,找到如下配置:

在这里插入图片描述

修改为hdfssupergroup ,保存,按照提示重启服务。

集群用户配置

启用Kerberos,需要为集群用户添加Kerberos principal 以使用集群。这里以用户 xingweidong 为例。

添加用户账号

过程类似上面添加hdfssupergroup,按照上述过程添加即可。结果如下:

在这里插入图片描述

准备集群

在HDFS上为用户创建用户目录。

切换到HDFS超级用户主体,初次登陆会要求重置密码,按照提示操作即可。

kinit hdfssupergroup

为用户创建用户目录:

hdfs dfs -mkdir /user/xingweidong
hdfs dfs -chown xingweidong /user/xingweidong

确认Kerberos安全工作正常

切换到集群用户主体:

kinit xingweidong

提交一个mapreduce测试任务:

yarn jar /opt/cloudera/parcels/CDH/jars/hadoop-mapreduce-examples-3.0.0-cdh6.3.2.jar pi 10 10000

一切运行正常,完美!

问题记录

问题一

按照上文配置,应该不会遇到这个问题了。

描述

Hue的Kerberos Ticket Renewer服务无法启动,报错如下:

Couldn't renew kerberos ticket in order to work around Kerberos 1.8.1 issue. Please check that the ticket for 'hue/[email protected]' is still renewable:
  $ klist -f -c /var/run/hue/hue_krb5_ccache
If the 'renew until' date is the same as the 'valid starting' date, the ticket cannot be renewed. Please check your KDC configuration, and the ticket renewal policy (maxrenewlife) for the 'hue/[email protected]' and `krbtgt' principals.
[08/Jul/2020 11:06:33 ] settings     INFO     Welcome to Hue 4.4.0

解决

编辑**/etc/krb5.conf** 文件,[libdefaults] 域下增加如下配置:

renew_lifetime = 7d
renewable = true

注意:

1、renew_lifetime需要和max_renewable_life保持一致。

2、每个节点的配置文件都需要增加这些配置,因为服务读取的是本地的krb5.conf,全部配置可以减少不必要的问题。

参考与分析

参考一:

https://community.cloudera.com/t5/Support-Questions/Error-on-kerberos-ticket-renewer-role-startup/m-p/31187

这个讨论里提到了解决方法,但是经过测试后,并没有解决问题,不过,我发现里面提到的一个信息很有价值,就是renew_lifetime需要和max_renewable_life保持一致,这个一致只需要保持换算后的时间是一致的即可。

参考二:

https://www.sysit.cn/blog/post/sysit/%E6%9B%B4%E6%94%B9CDH%E7%9A%84Kerberos%E8%AE%A4%E8%AF%81%E4%B8%BAFreeIPA

这里面提到了两个配置项,文中提到只需在ipa-server配置即可,如下:

renew_lifetime = 7d
renewable = true

综合两个参考的信息,经过多次调整测试,得出上面的解决方法。

问题二

在阿里云VPC主机上部署生产环境时遇到的。

描述

启用Kerberos过程中出现问题,报错如下:

/opt/cloudera/cm/bin/gen_credentials_ipa.sh failed with exit code 9 and output of <<
+ CMF_REALM=BIGDATA.ZXXK.COM
+ export PATH=/usr/kerberos/bin:/usr/kerberos/sbin:/usr/lib/mit/sbin:/usr/sbin:/usr/lib/mit/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
+ PATH=/usr/kerberos/bin:/usr/kerberos/sbin:/usr/lib/mit/sbin:/usr/sbin:/usr/lib/mit/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
+ kinit -k -t /var/run/cloudera-scm-server/cmf5054368646837616543.keytab [email protected]
+ KEYTAB_OUT=/var/run/cloudera-scm-server/cmf3990789607448816448.keytab
+ PRINCIPAL=HTTP/[email protected]
+ MAX_RENEW_LIFE=432000
+ '[' -z /etc/krb5.conf ']'
+ echo 'Using custom config path '\''/etc/krb5.conf'\'', contents below:'
+ cat /etc/krb5.conf
+ PRINC=HTTP
++ echo HTTP/[email protected]
++ cut -d / -f 2
++ cut -d @ -f 1
+ HOST=utility1.bigdata.zxxk.com
+ set +e
+ ipa host-find utility1.bigdata.zxxk.com
+ ERR=0
+ set -e
+ [[ 0 -eq 0 ]]
+ echo 'Host utility1.bigdata.zxxk.com exists'
+ set +e
+ ipa service-find HTTP/[email protected]
+ ERR=0
+ set -e
+ [[ 0 -eq 0 ]]
+ echo 'Principal HTTP/[email protected] exists'
+ PRINC_EXISTS=yes
+ KADMIN='kadmin -k -t /var/run/cloudera-scm-server/cmf5054368646837616543.keytab -p [email protected] -r BIGDATA.ZXXK.COM'
+ '[' 432000 -gt 0 ']'
+ kadmin -k -t /var/run/cloudera-scm-server/cmf5054368646837616543.keytab -p [email protected] -r BIGDATA.ZXXK.COM -q 'modprinc -maxrenewlife "432000 sec" HTTP/[email protected]'
Couldn't open log file /var/log/kadmind.log: Permission denied
modify_principal: Operation requires ``get'' privilege while getting "HTTP/[email protected]".
+ KEYTAB_PATH=/tmp/HTTP_utility1.bigdata.zxxk.com.keytab
++ ipa env server
++ tr -d '[:space:]'
++ cut -f2 -d:
+ IPA_HOST=utility1.bigdata.zxxk.com
+ [[ yes = \y\e\s ]]
+ [[ HTTP/ = \H\T\T\P\/ ]]
+ [[ utility1.bigdata.zxxk.com = \u\t\i\l\i\t\y\1\.\b\i\g\d\a\t\a\.\z\x\x\k\.\c\o\m ]]
+ echo 'Attempting to retrieve keytab for IPA HTTP principal. To grant the right to do so, run:\n ' '\tipa service-allow-retrieve-keytab HTTP/[email protected]  [email protected]'
+ ipa-getkeytab -r --principal=HTTP/[email protected] --keytab=/tmp/HTTP_utility1.bigdata.zxxk.com.keytab
Failed to parse result: Insufficient access rights

Failed to get keytab

>>

解决

ipa service-allow-retrieve-keytab HTTP/[email protected]  --users=cmadmin-5d5055fa

其中cmadmin-5d5055fa是Cloudera Manager在FreeIPA中创建的用户,可以从FreeIPA中查看,用户名格式:cmadmin-<random_id>
注意--users指定的用户名不要带域名,下面的分析过程对此进行了解释。

执行成功后,重试启用Kerberos失败的环节,继续。
如果已退出启用Kerberos向导,则可以在Cloudera Manager的 安全 -> Kerberos凭据 页面,执行 生成丢失的凭据

分析过程

经过观察报错信息,失败的环节是:

ipa-getkeytab -r --principal=HTTP/[email protected] --keytab=/tmp/HTTP_utility1.bigdata.zxxk.com.keytab
Failed to parse result: Insufficient access rights

这里是Cloudera Manager通过ipa-getkeytab命令获取keytab,结果因为无效的访问权限(Insufficient access rights)而失败。
失败信息上面一条提示很重要:

+ echo 'Attempting to retrieve keytab for IPA HTTP principal. To grant the right to do so, run:\n ' '\tipa service-allow-retrieve-keytab HTTP/[email protected]  [email protected]'

这个提示很详细,Cloudera Manager计划检索keytab,并说明了授权的方法。其中[email protected]是Cloudera Manager创建的用户。

而失败的环节就是因为无效的访问权限而失败的,所以尝试使用提示的命令进行授权:

使用FreeIPA admin主体权限执行命令,登录主体的命令:kinit admin

ipa service-allow-retrieve-keytab HTTP/[email protected]  --users=[email protected]

不过直接执行这个命令会有问题,报错如下:

[[email protected] ~]# ipa service-allow-retrieve-keytab HTTP/[email protected]  [email protected]
  主机名: HTTP/[email protected]
  主体别名: HTTP/[email protected]
  证书: MIIE5TCCA82gAwIBAgIBCTANBgkqhkiG9w0BAQsFADA7MRkwFwYDVQQKDBBCSUdEQVRBLlpYWEsuQ09NMR4wHAYDVQQDDBVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMjAwNzMxMDExODU2WhcNMjIwODAxMDExODU2WjA/MRkwFwYDVQQKDBBCSUdEQVRBLlpYWEsuQ09NMSIwIAYDVQQDDBl1dGlsaXR5MS5iaWdkYXRhLnp4eGsuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx+9cmjs3CD/wL8dJqk7xji1jOtGIpdTagReVkyuHx639AjZzDyatwihPGLnVCg/4lmKeZ3lwrmiQnfLk5e2i4yIwKrpgKdrA6tp/b9cAtAm1Aq3VYpWMbih2wIgVbuVKWP/I8TSwqNfQ9ZLj1PPuApNYmoNcwDxGSBXLXcaUsiVHY1Q+x68kBxB/WFTbeBjPgremgSAojdNiLVIqWXQQXaytBX1RG9npU7COJtlnHnbwwzimKsHnCzdNza6jnzts776P4M6s7yrvhewXDJGmMIAj0PgXCvfdMudx+OVjJFkIzSBIw/7Sl5Fmkps5u6pclwXN+PVc5iUYOpj8pYJBnwIDAQABo4IB7jCCAeowHwYDVR0jBBgwFoAUNJYYJQKe+0MhNjglFCqa4pvuDLMwQgYIKwYBBQUHAQEENjA0MDIGCCsGAQUFBzABhiZodHRwOi8vaXBhLWNhLmJpZ2RhdGEuenh4ay5jb20vY2Evb2NzcDAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMHsGA1UdHwR0MHIwcKA4oDaGNGh0dHA6Ly9pcGEtY2EuYmlnZGF0YS56eHhrLmNvbS9pcGEvY3JsL01hc3RlckNSTC5iaW6iNKQyMDAxDjAMBgNVBAoMBWlwYWNhMR4wHAYDVQQDDBVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHQYDVR0OBBYEFBrWhdEchPrA8DUCRLxhMZIxcf0HMIG3BgNVHREEga8wgayCGXV0aWxpdHkxLmJpZ2RhdGEuenh4ay5jb22gPwYKKwYBBAGCNxQCA6AxDC9IVFRQL3V0aWxpdHkxLmJpZ2RhdGEuenh4ay5jb21AQklHREFUQS5aWFhLLkNPTaBOBgYrBgEFAgKgRDBCoBIbEEJJR0RBVEEuWlhYSy5DT02hLDAqoAMCAQGhIzAhGwRIVFRQGxl1dGlsaXR5MS5iaWdkYXRhLnp4eGsuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQCR+Kr0WjbiS5FyagxDPCRS1fGlzXzeQraXw2mI6lxX2RHy1dBiAjqRR3jOzJArKanUBSlTDyJymoQhd3Kc9cZ6k4eAoEZIXONzo6e3dT6yc0mplK/9AvNFUBlLAajfJmK50ay7OoTsLY3jWaP2aadZzQTLyNsxV9DHcLHMETI3jJ8D3P61cB78tc9X781JWFvPB8NYvHqI1XvpcYfmMUdWleSkd/FWjHqq/ymVGG7Sgy4eCrhZ2b903Froa0fiMXWEVa1rUQ8G4fFBx67InVN1v9Z675lI95aZCIpL2k9onYDpmTme+YiybL+11JE3KDynjlMydS13JEjWNEMs4wRI
  Managed by: utility1.bigdata.zxxk.com
  不允许检索keytab: 
    member user: [email protected]: no such entry
    member group: 
    member host: 
    member host group: 
---------
已添加的成员数 0
---------

可以看到核心提示:

[email protected]: no such entry

[email protected]是用户cmadmin-5d5055fa的带域名形式,尝试去掉域名,执行成功,命令如下:

ipa service-allow-retrieve-keytab HTTP/[email protected]  --users=cmadmin-5d5055fa
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xwd127429/article/details/107336592

智能推荐

黑马程序员----【javaSE基础】入门基础--运算符_鑫鑫酱的博客-程序员秘密

运算符    一、对于C/C++来说,Java中的运算符号并没有做多大改动,在称谓上面,由C/C++里面的“目”改成了“元”。比如说:在C++里面叫做“三目运算符”的?:,在Java里面叫做“三元运算符”。  同样,Java是允许进行自加(i++或者++i)和自减(j--或者--j)运算的。    二、Java的运算符归纳如下:    1、算术运算符 ( + 、- 、* 、

SpringBoot中级篇-事务@Transactional注解无效_springboot @transactional 无效_风流三月1的博客-程序员秘密

最近遇到了事务不回滚的情况,很多方法都加tyr catch,在catch中打印日志。但是方法异常时候,日志打印了事务却没有回滚。Spring AOP异常捕获原理被拦截的方法需显式抛出异常,并不能经任何处理,这样AOP代理才能捕获到方法的异常,才能进行回滚,默认情况下AOP只捕获RunTimeException的异常。简而言之:就是我们用事务注解后,只能在当前@Transactional注...

怎么样从多列的DataTable里取需要的几列_datatable 选择列_lyflcear的博客-程序员秘密

方法一:    也是广为人知的一种:    YourDataTable.Columns.Remove("列名");    但是这种情况只适合于去掉很少列的情况。    如果有很多列我却只要一两列呢,那就得用方法二了。方法二:   DataTable dat = YourDataTable.DefaultView.ToTable(false, new string[] { "

javascript入门笔记2-window_方志朋的博客-程序员秘密

javascript 入门笔记2,学习了一些基本的弹窗等

深度学习笔记:利用预训练模型之特征提取训练小数据集上的图像分类器_笨牛慢耕的博客-程序员秘密

前面两篇我们分别进行了在不用数据增强和用数据增强技术的条件下在一个小数据集上训练一个小的卷积神经网络。采用数据增强可以获得相当程度的改善,但是由于原始数据集毕竟太小,所以很难达到90%的预测准确度。本文我们将考虑如何在(已经在大数据集上训练过的)预训练模型的基础上,在小数据集上进一步训练得到最终模型的效果。

navicat for mysql mac彻底卸载_ZL199104的博客-程序员秘密

1.  使用appzapper卸载2.  终端执行以下命令(清楚navicat残留配置文件)   sudo rm -Rf /Applications/Navicat\Premium.appsudo rm -Rf /private/var/db/BootCaches/CB6F12B3-2C14-461E-B5A7-A8621B7FF130/app.com.prect.Navi

随便推点

IDEA 创建spring boot项目无法启动_程诺的博客-程序员秘密

近期使用IDEA创建了一个spring boot项目,结果运行时无法启动,情况如下图:后来通过搜索得知需要去掉pom.xml文件中的下图中的一句话 然后再启动就行了。如果没有这个依赖,也要加上&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt; &amp;lt;ar...

C语言基本类型转换_c语言 基础类型转换_猛_禽的博客-程序员秘密

#include "stdio.h"#include "stdlib.h"void main(){//char 转 intchar c[] = "123";int i;/*atoiC语言库函数名: atoi功 能: 把字符串转换成整型数函数说明: atoi()会扫描参数nptr字符串,检测到第一个数字或正负符号时开始做类型转换,之后检测到非数字或结束

oracle使用for循环插入10000条数据_oracle for多量_猿来是U_U的博客-程序员秘密

转自:https://blog.csdn.net/snowfoxmonitor/article/details/50086811点击打开链接SQL&amp;gt;createtable t( xint, y char(50)); Table created. SQL&amp;gt;SQL&amp;gt;begin 2     for i in  ..100000 3     loop ...

find命令之atime/ctime/mtime的用法学习_find ctime_skyyws的博客-程序员秘密

本文主要介绍了在linux下find命令的atime/ctime/mtime这三个参数的用法,主要是对于n的参数设置。结合网上的一些资料和自己的测试结果,进行了验证,希望能够帮助到大家

ucos任务调度理解_某风吾起的博客-程序员秘密

任务状态任务控制块任务控制块OS_TCB是一个数据结构保存该任务的相关参数,包括任务堆栈指针,状态,优先级,任务表位置,任务链表指针等。任一旦任务建立了,任务控制块OS_TCBs将被赋值任务建立的时候,OS_TCBs被初始化了当任务的CPU使用权被剥夺时,μC/0S-Il 用它来保存该任务的状态。当任务重新得到CPU使用权时,任务控制块能确保任务从当时被中断的那上点丝毫不差地继续...

电脑史话(1)_黄小二哥的博客-程序员秘密

电脑史话(1)――计算机始祖已历经了50多个春华秋实。英语里“Calculus”(计算)一词来源于拉丁语,既有“算法”的含义,也有肾脏或胆囊里的“结石”的意思。不知何时,许多国家的人都不约而同想到用“筹码”来改进工具,其中要数中国的算筹最有名气。商周时代问世的算筹,实际上是一种竹制、木制或骨制的小棍。古人在地面或盘子里反复摆弄这些小棍,通过移动来进行计算,从此出现了“运筹”这个词,运筹就是计...

推荐文章

热门文章

相关标签