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

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