kerberos的简单使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kerberos的简单使用相关的知识,希望对你有一定的参考价值。
参考技术A 一、windows上使用kerberos进入访问集群( https://blog.csdn.net/hadoop_sc/article/details/84108404 )1.步骤:
(1)在windows上安装了kerberos的客户端后,
(2)将KDC Server服务器上/ect/krb5.conf文件中的部分内容,拷贝到krb5.ini文件,然后重启kerberos客户端
(3)在Window下使用kinit测试
1)KDC Server上通过admin创建一个用户:
sudo kadmin.local
创建用户:addprinc znn@HADOOP. COM
设置密码:123456
创建成功
2)启动Windows上的kerberos客户端,get ticket,输入新创建的用户
3)销毁获取到的Ticket
选中列表中需要销毁的Ticket,点击Destroy Ticket,客户端没有principal
4)命令行下初始化,在cmd中安装kerberos客户端的目录下,执行kinit znn@HADOOP.COM,
刷新一下客户端,就可以看到principal了,见下图
5)命令行下kdestroy
(4)使用Keytab文件登录Kerberos
1)在KDC Server创建一个keytab文件,使用上一步创建的 znn@HADOOP.C OM
sudo kadmin.local
创建keytab:xst -norandkey -k znn123.keytab znn@HADOOP.C OM
注意:创建的znn123.keytab,默认放置在/etc/security/keytabs
在生成keytab文件时需要加参数”-norandkey”否则会导致,直接使用kinit test@CLOUDERA.com初始化时会提示密码错误。
2)测试znn123.keytab文件
注意:在非root用户下需要将生成的keytab文件,权限设置到644以上,否则会初始化失败或者使用sudo权限初始化
3)将生成的test.keytab文件拷贝到Windows Server上,在CMD命令行进行初始化
(5)在火狐上访问集群的hdfs路径
1)直接访问hdfs的50070页面时,会弹出kerberos的客户端提示页面(前提是打开kerberos的客户端)
由于此时未将hdfs的ticket初始化所以不能正常访问,提示输入principal和密码
2)在集群的57服务器上找到hdfs的keytab文件hdfs.headless.keytab
3)在服务器上测试该keytab文件有效
kadmin.local
listprincs hdfs*
注意:可以使用listprincs列出的hdfs身份进行初始化
4)将hdfs.keytab文件拷贝到Windows机器上,通过CMD命令进行初始化
5)再次通过FireFox浏览器访问HDFS服务,正常访问
2.在此过程中遇到的问题:
(1)get ticket时,提示:Kerberos 5:Cannot find KDC for requested realm(error-1765328230)
原因是:在旧的集群10.247.33.57上创建的用户,但是本地的krb5.ini文件中配置的是新集群10.247.32.247的/etc/krb5.conf文件中的内容,所以提示该错误
解决办法:
修改本地的krb5.ini文件,复制老集群的文件
Kerberos安装&使用
Hadoop自身是没有安全认证的,所以需要引入第三方的安全认证机制。kerberos是hadoop比较受欢迎的一种认证方式。kerberos配置比较简单。但是实际使用的时候,如果不严格遵守游戏规则。你会经常遇到“奇怪”的问题。1. 安装kerberos的软件包
yum install krb5* vi /etc/krb5.conf
2. 修改kerberos的配置文件
# more /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = LIANG.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 2d forwardable = false [realms] LIANG.COM = { kdc = c6701 admin_server = c6701 default_domain = liang.com key_stash_file = /var/kerberos/krb5kdc/.k5.LIANG.COM dict_file = /usr/share/dict/words } [domain_realm] .liang.com = LIANG.COM liang.com = LIANG.COM
3. 修改kdc配置文件
cat /var/kerberos/krb5kdc/kdc.conf [kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] LIANG.COM = { kadmind_port = 749 master_key_type = aes256-cts-hmac-sha1-96 acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words supported_enctypes = des3-cbc-sha1:normal max_life = 24h 0m 0s max_renewable_life = 7d 0h 0m 0s dict_file = /usr/share/dict/words key_stash_file = /var/kerberos/krb5kdc/.k5.LIANG.COM database_name = /var/kerberos/krb5kdc/principal }
执行命令创建kdc数据库
kdb5_util create -s -r HADOOP.LIANG.COM
4. 给数据库管理员添加ACL权限,修改kadm5.acl文件,*代表全部权限
# cat /var/kerberos/krb5kdc/kadm5.acl */[email protected] *
5. 启动服务
# service krb5kdc start # service kadmin start # service krb5kdc status # service kadmin status # chkconfig krb5kdc on # chkconfig kadmin on
6. 补充:在每个客户端的系统参数/etc/profile中,加上下面参数,确保每次su - user都能使用同一个tgt,而不是创建一个新的,而找不到,最终导致su的用户kinit失败
# workaround for kerberos loging export KRB5CCNAME=FILE:/tmp/krb5cc_`id -u`
7. 创建principal
kadmin.local -q "addprinc -pw <password> <username>"
针对hadoop用户,增加主机名,一同创建principal,增加安全性。
注意:hadoop只能通过小写的主机名进行注册。如果主机名有大写字母,手动改成小写。后续kinit的时候,也是使用小写的。hadoop会自动将大写的主机名变成小写。
kadmin.local -q "addprinc -pw <password> hdfs/<hostname>"
8. 创建keytab
kadmin.local -q "ktadd -norandkey -k /root/keytab/<username>.keytab <username>"
9. 注册
kinit -kt /root/keytab/hdfs.keytab <username>
针对hadoop用户,增加主机名,一同创建principal,增加安全性。
kinit -kt /root/keytab/hdfs.keytab hdfs/`hostname`
10. 查询当前用户的kinit情况
$ klist Ticket cache: FILE:/tmp/krb5cc_1098 Default principal: hdfs/[email protected] Valid starting Expires Service principal 03/26/18 17:19:04 03/27/18 17:19:04 krbtgt/[email protected] renew until 04/02/18 17:19:04
11. 查询keytab文件内容
$ klist -kt /etc/security/keytab/hdfs.keytab Keytab name: FILE:/root/keytab/hdfs.keytab KVNO Timestamp Principal ---- ----------------- -------------------------------------------------------- 1 04/07/17 16:16:04 hdfs/[email protected] 1 04/07/17 16:16:04 hdfs/[email protected] 1 04/07/17 16:16:05 hdfs/[email protected]
12. 查询KDC,用户列表
kadmin.local -q "listprincs"
13. 删除用户
kadmin.local -q "delprinc -force HTTP/[email protected]"
14. 修改密码
kpasswd 用户名
以上是关于kerberos的简单使用的主要内容,如果未能解决你的问题,请参考以下文章