Kerberos基础使用

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文为您介绍Kerberos的配置与基础操作,其中涵盖了核心配置文件krb5.conf和kdc.conf,详细说明了服务端如何使用KDC管理工具进行Principal管理及Keytab维护,以及客户端Ticket生命周期管理涉及的相关命令。

前提条件

  • 已创建开启Kerberos认证的集群,创建集群详情请参见创建集群

  • 已登录集群,详情请参见登录集群

配置文件

  • 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概述