本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文为您介绍Kerberos的配置与基础操作,其中涵盖了核心配置文件krb5.conf和kdc.conf,详细说明了服务端如何使用KDC管理工具进行Principal管理及Keytab维护,以及客户端Ticket生命周期管理涉及的相关命令。
前提条件
配置文件
krb5.conf:Kerberos的客户端配置文件。
用于配置KDC服务的位置、realms名称、以及主机名到Kerberos realms的映射等信息。该文件位于每个EMR节点下,具体路径为/etc/krb5.conf。
kdc.conf:Kerberos的服务端配置文件,是对krb5.conf的补充。
用于配置KDC相关服务,例如krb5kdc、kadmind以及kdb5_util。该文件仅存在于KDC所在节点,具体路径为/var/kerberos/krb5kdc/kdc.conf。
krb5.conf和kdc.conf配置文件不支持直接在本地自定义修改,需要在E-MapReduce控制台中Kerberos服务的配置页面进行修改,并且仅支持部分字段的修改。
基础操作
服务端
进入admin工具
如果您是使用root用户,登录KDC(Kerberos的服务端程序)所在的master-1-1节点,则可以执行以下命令,直接进入admin工具。
kadmin.local
如果您登录的是其他节点或者使用GateWay时,则可以通过填以下命令进入admin工具。
kadmin -p <admin-user> -w <admin-password>
说明如果您使用的是EMR自带的KDC,则参数:
<admin-user>
:固定值为root/admin
。<admin-password>
:您可以在E-MapReduce控制台,Kerberos服务的配置页面,获取admin_pwd的参数值。
Principal维护
Principal是用于Kerberos认证并分配凭证的唯一身份。
创建Principal
addprinc -pw <principal-password> <principal-name>
参数含义如下:
<principal-password>
:创建的Principal的密码。<principal-name>
:创建的Principal的名称,服务类Principal的格式一般为username/hostname@realm,用户类Principal的格式一般为username@realm。
删除Principal
delprinc <principal-name>
修改Principal密码
change_password <principal-name>
查看所有Principal
listprincs
Keytab维护
Keytab内存储了一个或多个Principal的密钥,利用这些密钥可以获取相应的Ticket。如需导出Keytab文件,请执行以下命令。
ktadd -k <keytab-path> <principal-name>
参数含义如下:
<keytab-path>
:目标Keytab文件的存储路径。<principal-name>
:Principal的名称。
警告在EMR中,每个服务都维护了自己的Principal(例如spark/hostname@realm)和对应的Keytab文件,用于服务内部的认证和授权。如果修改或导出该类Principal对应的Keytab文件,将会导致原有的Keytab文件失效,从而影响服务的正常工作。因此,请勿修改该类Principal,并禁止导出Keytab文件。
客户端
Ticket是Kerberos认证协议的一部分,承载着用于验证用户身份的加密信息。Ticket维护的相关命令如下。
生成Ticket
kinit -kt <keytab-path> <principal-name>
查看Ticket
klist
销毁Ticket
kdestroy
相关文档
如需了解Kerberos相关的基础概念及认证原理,请参见Kerberos概述。