1. 程式人生 > >Kerberos學習(三)

Kerberos學習(三)

kerberos 安全 集群 配置 架構

繼續說一下Kerberos與Hadoop的集成。

其實這個話題在網上已經很普遍了,沒什麽太新鮮的。就是順帶說一下吧,Hadoop賬號的集成與管理。

之前已經裝了kdc和kadmin,所以接下來就需要創建hadoop相關的賬號了。

首先需要用kadmin進入kerberos管理prompt,這裏需要輸入之前創建的admin賬號的密碼。

然後就可以創建了,用 ? 可以查看允許使用的命令。比如我們創建如下賬號。

addprinc -randkey hdfs/[email protected]
xst -k hdfs.keytab
addprinc -randkey HTTP/[email protected]
xst -k HTTP.keytab
#生成了兩個賬號及其keytab,然後退出prompt回到shell。進入ktutil
rkt hdfs.keytab
rkt HTTP.keytab
wkt hdfs.keytab
這樣就把原始的hdfs.keytab和HTTP.keytab合並成了新的hdfs.keytab

先創建與hdfs相關的賬號,最後我們是要把這些賬號創建成免密碼的keytab文件的,在Hadoop裏面,最好是把同一類服務創建成一個keytab,比如,hdfs和HTTP同屬於hadoop的HDFS服務,所以,我們先創建這兩個賬號並將這兩個賬號的信息合並到一個keytab裏面。

以此類推,可以創建yarn/[email protected],mapred/[email protected],oozie, hive...等等賬號。

然後修改hdfs-site.xml,加入

  <property>
    <name>dfs.namenode.keytab.file</name>
    <value>hdfs.keytab</value>
  </property>
  <property>
    <name>dfs.namenode.kerberos.principal</name>
    <value>hdfs/[email protected]</value>
  </property>
  <property>
    <name>dfs.namenode.kerberos.internal.spnego.principal</name>
    <value>HTTP/[email protected]</value>
  </property>
  <property>
    <name>dfs.datanode.kerberos.principal</name>
    <value>hdfs/[email protected]</value>
  </property>
  <property>
    <name>dfs.journalnode.kerberos.principal</name>
    <value>hdfs/[email protected]</value>
  </property>
  <property>
    <name>dfs.journalnode.kerberos.internal.spnego.principal</name>
    <value>HTTP/[email protected]</value>
  </property>
  <property>
    <name>dfs.cluster.administrators</name>
    <value>hdfs</value>
  </property>

以此類推,也可以把yarn/[email protected]的keytab與HTTP的keytab合並,還有mapred賬號也可以合並,當然,前提是你需要用到spnego的http登錄認證服務,如果不需要spnego,可以不添加HTTP的賬號。至於什麽是spnego,參看解釋。


當然,前面創建賬號和合並keytab的命令,你可以寫成shell腳本讓他自動完成。

Kerberos學習(三)