Creating the Principals and Keytab on Active Directory

Active Directory存储关于Windows域成员的信息,包括用户和hosts。
verticause使用Kerberos协议来访问这些信息,以便对Windows用户进行Vertica数据库的身份验证。Kerberos协议使用principals 来标识用户,并使用keytab文件来存储用户的密码信息。您需要将keytab文件安装到Vertica中,以使Vertica数据库能够以密码方式对windows用户进行身份验证。

这个过程描述:

  • 创建Vertica service principal。
  • 导出这些principal的keytab文件
  • 在Vertica数据库中安装keytab文件。这允许Vertica对Windows用户进行身份验证,并授予他们对Vertica数据库的访问权。

1
为Vertica服务创建一个Windows account (principal) ,并为集群中的每个节点/主机创建一个Vertica host。下面过程为运行在此节点上的主机verticanode01和vertica服务创建Windows帐户。
当您创建这些帐户时,请选择以下内容:

  • 用户无法更改密码
  • 密码永不过期

注意:您可以取消选择密码永不过期。但是,如果更改了这些用户密码,则必须重新创建keytab文件并将其重新安装到Vertica中。这包括重复整个过程。

2
如果在HDFS上使用由Kerberos身份验证保护的外部表,则必须启用委托。为此,访问Active Directory Users and Computers对话框,右键单击Vertica服务的Windows帐户(主体),并选择delegate。委托给任何服务时,请信任此用户。
3
运行以下命令 create the keytab for the host verticanode01.dc.com node/host:

$ ktpass -out ./host.verticanode01.dc.com.keytab -princ host/verticanode01.dc.com@DC.COM -mapuser verticanode01      
 -mapop set -pass secret  -ptype KRB5_NT_SRV_HST

4
运行以下命令为vertica服务创建keytab:

$ ktpass -out ./vertica.verticanode01dc.com.keytab -princ vertica/verticanode01.dc.com@DC.COM -mapuser vertica
 -mapop set -pass secret  -ptype KRB5_NT_PRINCIPAL

5
运行以下命令来验证服务主体名称是否正确映射。您必须为集群中的每个节点运行以下命令:

$ setspn -L vertica
    Registered ServicePrincipalNamefor CN=vertica,CN=Users,DC=dc,DC=com
      vertica/verticanode01.dc.com

$ setspn -L verticanode01
    Registered ServicePrincipalNamefor CN=verticanode01,CN=Users,DC=dc,DC=com
      host/verticanode01.dc.com

6
将上面创建的keytabs, vertica.verticanode01.dc.com.keytab和host.verticanode01.dcc.com.keytab复制到Linux主机verticanode01.dc.com。

7
将keytab文件合并到一个单独的keytab中:

[release@vertica krbTest]$ /usr/kerberos/sbin/ktutil
ktutil:  rkt host.verticanode01.dc.com.keytab
ktutil:  rkt vertica.verticanode01.dc.com.keytab
ktutil:  list
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
  1    3  host/verticanode01.dc.com@DC.COM
  2   16  vertica/verticanode01.dc.com@DC.COM
ktutil:  wkt verticanode01.dc.com.keytab
ktutil:  exit

这将创建一个包含用于身份验证的服务器主体的keytab文件。

8
将新的keytab文件复制到目录目录中。例如:

$ cp verticanode01.dc.com.keytab /home/dbadmin/VMart/v_vmart_nodennnn_catalog

9
测试keytab文件检索票据的能力,以确保它从Vertica节点工作:

$ kinit vertica/verticanode01.dc.com -k -t verticanode01.dc.com.keytab
$ klist

Ticket cache: KFILE:/tmp/krb_ccache_1003
Default principal: vertica/verticanode01.dc.com@DC.COM

Valid starting Expires Service principal
04/08/2017 13:35:25 04/08/2017 23:35:25 krbtgt/DC.COM@DC.COM
				renew until 04/15/2017 14:35:25

10
设置正确的权限和所有权的keytab文件:

$ chmod 600 verticanode01.dc.com.keytab
$ chown dbadmin:verticadba verticanode01.dc.com.keytab

11
使用ALTER数据库设置以下Kerberos配置参数,向Vertica提供有关Kerberos主体的信息:

KerberosKeytabFile=<CATALOGDIR>/verticanode01.dc.com.keytab
KerberosRealm=DC.COM
KerberosServiceName=vertica
KerberosTicketDuration = 0
KerberosHostname=verticanode01.dc.com

12
重新启动Vertica服务器。

13
按照以下步骤测试Kerberos设置,以确保所有客户端都使用gss身份验证方法。
From Vertica:

=> CREATE USER windowsuser1;
CREATE USER

=> CREATE AUTHENTICATION v_kerberos method 'gss' host '0.0.0.0/0';
CREATE AUTHENTICATION

=> ALTER AUTHENTICATION v_kerberos enable;
ALTER AUTHENTICATION

=> GRANT AUTHENTICATION v_kerberos to windowsuser1;
GRANT AUTHENTICATION 

From the operating system command line:

$ kinit windowsuser1

$ vsql -U windowsuser1 -k vertica -K verticanode01.dc.com -h verticanode01.dc.com -c "select client_authentication_name,
authentication_method from sessions;"
 client_authentication_name | authentication_method--
----------------------------+-----------------------  
 v_kerberos                 |    GSS-Kerberos

(1 row)

14
运行KERBEROS_CONFIG_CHECK()来验证Kerberos配置。KERBEROS_CONFIG_CHECK()验证以下内容:

  • kinit和kb5.conf文件的存在。
  • 是否存在并设置了keytab文件
  • 在数据库中设置的Kerberos配置参数:
    KerberosServiceName
    KerberosHostname
    KerberosRealm
    Vertica Principal
  • Kerberos可以读取Vertica keys
  • Kerberos可以获得Vertica主体的票据
  • Vertica可以用kinit初始化keys

翻译自:
Creating the Principals and Keytab on Active Directory

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章