Hadoop相关的Kerberos设置

                                   作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

一.创建Kerberos数据库

1>.Kerberos数据库概述

  Kerberos数据库包含领域的所有Kerberos主体,它们的密码以及有关每个主体的其他管理信息。在大多数情况下,您将使用kdb5_util 程序来整体操作Kerberos数据库,并使用 kadmin程序来更改数据库中的条目。(一个显着的例外是用户将使用 kpasswd程序来更改其自己的密码。)kadmin程序具有其自己的命令行界面,您可以在其中键入数据库管理命令。

  kdb5_util提供了一种创建,删除,加载或转储Kerberos数据库的方法。它还包含用于滚动数据库主密钥并存储密钥副本的命令,以便 kadmind和krb5kdc守护程序可以使用数据库而无需手动输入。

  kadmin提供了Kerberos主体,密码策略和服务密钥表(keytabs)的维护。通常,它作为网络客户端使用Kerberos身份验证与kadmind进行通信,但是还有一个名为kadmin.local的变体,可以直接(或通过LDAP)访问本地文件系统上的Kerberos数据库。必须设置kadmin.local才能设置足够的数据库才能使用远程版本。

  博主推荐阅读:
    https://web.mit.edu/kerberos/krb5-latest/doc/admin/database.html

2>.Kerberos支持的数据库类型

  我们知道Kerberos由三个组件组成:数据库,AS和TGS。在默认情况下必须创建一个数据库,而Kerberos官方支持三种数据,默认使用的是DB2。
    
  Berkeley database module(简称:"db2")
    默认的KDB模块是db2,它使用Berkeley DB库的版本。它基于数据库路径名创建四个文件。如果路径名以结尾,principal则四个文件为:
      principal:
        其中包含主要条目数据
      principal.ok:
        主体数据库的锁定文件
      principal.kadm5:
        包含策略对象数据
      principal.kadm5.lock:
        策略数据库的锁定文件
    温馨提示:
      对于大型数据库,kdb5_util dump命令(可能由kprop或kadmind调用以进行增量传播)可能会导致krb5kdc在遍历数据库时停止明显的时间。
      可以通过禁用帐户锁定功能来避免此延迟,以使KDC不执行数据库写操作。或者可以通过将unlockiter变量设置为来启用(true)以较慢形式的迭代。
      
      
  Lightning Memory-Mapped Database module(简称"klmdb")
    在版本1.17中添加了klmdb模块。它使用LMDB库,并且可以提供比db2模块更好的性能和可靠性。它基于数据库路径名创建四个文件。如果路径名以结尾principal,则四个文件为:
      principal.mdb:
        其中包含策略对象数据和大多数主要条目数据
      principal.mdb-lock:
        主数据库的锁定文件
      principal.lockout.mdb:
        其中包含每个主体条目的帐户锁定属性(上次成功通过身份验证的时间,上次失败通过身份验证的时间以及尝试失败的次数)
      principal.lockout.mdb-lock:
        锁定数据库的锁定文件
    温馨提示:
      分离锁定属性可确保KDC永远不会在管理操作(如数据库转储或装入)上阻塞。它还允许KDC运行,而无需对主数据库进行写访问。如果两个帐户锁定功能都被禁用,则将创建锁定数据库文件,但随后将不会打开该数据库文件,并且帐户锁定属性将始终为零值。
      因为LMDB创建到数据库文件的内存映射,所以它需要配置的内存映射大小,这也决定了数据库的最大大小。该大小将同等地应用于两个数据库,因此将在进程地址空间中使用两倍的配置大小。这主要是对32位平台的限制。128兆字节的默认值应足以容纳数十万个主体条目。
      如果达到限制,则kadmin操作将失败,并且错误消息“已达到环境mapsize限制”将出现在kadmind日志文件中。在这种情况下, 可以使用mapsize变量来增加地图大小。


  LDAP module(简称:"kldap")
    kldap模块使用LDAP服务器存储主体和策略数据。要使用它,必须配置LDAP服务器以使用Kerberos模式。
    温馨提示:       由于krb5kdc是单线程的,因此LDAP数据库访问中的延迟可能会限制KDC操作吞吐量。       如果LDAP服务器与KDC位于同一服务器主机上并通过ldapi:
//URL访问 ,则延迟应尽可能短。如果无法做到这一点,请考虑使用krb5kdc -w选项启动多个KDC工作进程, 以启用KDC请求的并发处理。       kldap模块不支持使用kadmin lock命令进行显式锁定 。   博主推荐阅读:     https://web.mit.edu/kerberos/krb5-latest/doc/admin/dbtypes.html#berkeley-database-module-db2     https://web.mit.edu/kerberos/krb5-latest/doc/admin/dbtypes.html#lightning-memory-mapped-database-module-klmdb     https://web.mit.edu/kerberos/krb5-latest/doc/admin/dbtypes.html#ldap-module-kldap     https://web.mit.edu/kerberos/krb5-latest/doc/admin/conf_ldap.html#conf-ldap

3>.初始化Kerberos数据库

  如下图所示,初始化Kerberos数据库时需要指定一个管理员密码(记住该密码,稍后会使用),初始化数据库通常只需要用两个选项即可,如下所示:
    -r:       指定数据库的Kerberos领域。     create [-s]:       创建一个新的数据库。如果指定了-s选项,则还将创建存储文件。如果数据库已经存在,此命令将失败。如果命令成功执行,则将打开数据库,就像第一次运行程序时已经存在一样。   博主推荐阅读:     https://web.mit.edu/kerberos/krb5-latest/doc/admin/admin_commands/kdb5_util.html
[root@kdc.yinzhengjie.com ~]# ll /yinzhengjie/softwares/kerberos/data/
total 4
-rw-r--r-- 1 root root 29 Oct  3 18:49 kadm5.acl
[root@kdc.yinzhengjie.com ~]# 
[root@kdc.yinzhengjie.com ~]# kdb5_util create -r YINZHENGJIE.COM -s
Loading random data
Initializing database '/yinzhengjie/softwares/kerberos/data/principal' for realm 'YINZHENGJIE.COM',
master key name 'K/M@YINZHENGJIE.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key: 
Re-enter KDC database master key to verify: 
kdb5_util: Required parameters in kdc.conf missing while initializing the Kerberos admin interface
[root@kdc.yinzhengjie.com ~]# 
[root@kdc.yinzhengjie.com ~]# ll /yinzhengjie/softwares/kerberos/data/
total 20
-rw-r--r-- 1 root root   29 Oct  3 18:49 kadm5.acl
-rw------- 1 root root 8192 Oct  4 14:42 principal
-rw------- 1 root root 8192 Oct  4 14:42 principal.kadm5
-rw------- 1 root root    0 Oct  4 14:42 principal.kadm5.lock
-rw------- 1 root root    0 Oct  4 14:42 principal.ok
[root@kdc.yinzhengjie.com ~]# 
[root@kdc.yinzhengjie.com ~]# 
[root@kdc.yinzhengjie.com ~]# kdb5_util create -r YINZHENGJIE.COM -s

相关文章: