Kerberos就是一种网络认证的协议,提供了一种登录认证的方法,常用在大数据集群中hadoop相关组件中的安全认证功能,和Kerberos类似的还有ldap。Kerberos主要包括认证服务器(AS),客户端和服务器。Principal是相当于用户名,是客户端和服务器的一个唯一名字,keytab文件是加密的认证文件,一般有Principal和keytab为后缀的认证文件就可以了。认证的时候很少直接使用密码。
在Krb5 server所在机器并且当前用户是root的话,可以使用kadmin.local免密码进入。如果报错,多半是安装了多个Kerberos版本导致的。
登录Kerberos Server服务,命令如下:
root用户:
[root@hadoop60 ~]# kadmin.local
非root用户:
[root@hadoop60 ~]# kadmin.local 用户名
由于版本问题,我的需要制定具体的命令路径,服务器上有多个版本的kerberos
[root@hadoop60 ~]# /usr/sbin/kadmin.local Authenticating as principal yarn/admin@XXX.COM with password. kadmin.local:开始我的机器上的报错信息(其中admin@XXX.COM,XXX.com只是为了隐藏实际的公司名称而已,勿怪)如下所示:
[root@hadoop60 ~]# kadmin.local Authenticating as principal yarn/admin@XXX.COM with password. kadmin.local: Unable to load requested database module 'db2': plugin symbol 'kdb_function_table' not found while initializing kadmin.local interface [root@hadoop60 ~]# which kadmin.local /usr/local/sbin/kadmin.local [root@hadoop60 ~]# ll /usr/sbin/kadmin.local -rwxr-xr-x 1 root root 77552 Apr 13 2018 /usr/sbin/kadmin.local [root@hadoop60 ~]#从上面可以看出,有多个版本的kadmin.local命令,因此我使用了/usr/sbin/kadmin.local
列出Principal: list_principals, listprincs命令
命令:add_principal, addprinc
命令格式:addprinc [options] principal
主要options:
-randkey随机生成一个值作为principal的key
-pw设置密码,此选项一般用在脚本中。
例子:
addprinc -pw password test60@DOMAIN.COM
addprinc -randkey test60@DOMAIN.COM
详细的Options
kadmin.local: addprinc usage: add_principal [options] principal options are: [-randkey|-nokey] [-x db_princ_args]* [-expire expdate] [-pwexpire pwexpdate] [-maxlife maxtixlife] [-kvno kvno] [-policy policy] [-clearpolicy] [-pw password] [-maxrenewlife maxrenewlife] [-e keysaltlist] [{+|-}attribute] attributes are: allow_postdated allow_forwardable allow_tgs_req allow_renewable allow_proxiable allow_dup_skey allow_tix requires_preauth requires_hwauth needchange allow_svr password_changing_service ok_as_delegate ok_to_auth_as_delegate no_auth_data_required lockdown_keys where, [-x db_princ_args]* - any number of database specific arguments. Look at each database documentation for supported arguments kadmin.local:相关命令:modify_principal, modprinc
命令格式:modprinc [options] principal
kadmin.local: modprinc usage: modify_principal [options] principal options are: [-x db_princ_args]* [-expire expdate] [-pwexpire pwexpdate] [-maxlife maxtixlife] [-kvno kvno] [-policy policy] [-clearpolicy] [-maxrenewlife maxrenewlife] [-unlock] [{+|-}attribute] attributes are: allow_postdated allow_forwardable allow_tgs_req allow_renewable allow_proxiable allow_dup_skey allow_tix requires_preauth requires_hwauth needchange allow_svr password_changing_service ok_as_delegate ok_to_auth_as_delegate no_auth_data_required lockdown_keys where, [-x db_princ_args]* - any number of database specific arguments. Look at each database documentation for supported arguments kadmin.local:相关命令:change_password, cpw
kadmin.local: cpw usage: change_password [-randkey] [-keepold] [-e keysaltlist] [-pw password] principal kadmin.local:例如:
相关命令:delete_principal, delprinc
kadmin.local: delprinc usage: delete_principal [-force] principal kadmin.local:例如:
例如:
通过用户名和密码登录,获取缓存票据
与3.1节的方法,差异不大,此步骤必须先生成keytab文件而已。
主要信息:有效开始时间,过期时间,principal,如果不知道keytab的principal名,可以通过如下命令
klist -k xxx.keytab查看
相关命令:kdestroy
相关命令:kinit -R
更新缓存票据,有多重方法,可以先销毁,然后重新获取。也可以直接更新
总结:
上面是一些kerberos认证常用的命令,无论你使用CDH还是HDP版本的hadoop环境,生产环境中少不了kerberos认证,大数据环境中开启了kerberos认证,则需要分配principal,生成keytab文件给别人,普通用户只有使用keytab加密文件才能提交Spark程序,Hive或者访问hdfs。
