HADOOP和ZOOKEEPER的kerberos認(rèn)證

安全場景下的大數(shù)據(jù)集群的使用相比非安全的集群具有更高的復(fù)雜度渔欢。關(guān)于kerberos認(rèn)證的講解資料較多扼倘,本文不在贅述。僅針對(duì)HADOOP和ZOOKEEPER的的認(rèn)證進(jìn)行簡單分析和對(duì)比并給出一些kerberos訪問的一下Tip。

安全HADOOP的使用:

使用過安全hadoop的小伙伴都知道在安全集群中掉蔬,如果需要對(duì)集群(hdfs,yarn,hive,hbase,spark thriftserver)的訪問矾瘾,都需要先進(jìn)行認(rèn)證:

1. 在命令行/測試場景下一般使用kinit命令完成用戶的認(rèn)證女轿,然后“任意”訪問集群中的組件
2. 在線上應(yīng)用中一般使用UserGroupInformation.loginUserFromKeytab(principalName, keytabFilename)來完成kerberos認(rèn)證

安全HADOOP的訪問的實(shí)現(xiàn):

HADOOP的安全認(rèn)證與狹義的hdfs,yarn實(shí)現(xiàn)了分離壕翩,獨(dú)立封裝出hadoop-common*.jar給上層各組件使用蛉迹,應(yīng)用層調(diào)用UserGroupInformation類完成認(rèn)證

/*直接成longinContext*/
login = newLoginContext(HadoopConfiguration.KEYTAB_KERBEROS_CONFIG_NAME,subject, new HadoopConfiguration());
login.login();

/*在loginContext的init方法中獲取登錄信息,此時(shí)的config為hadoop實(shí)現(xiàn)的Config*/
AppConfigurationEntry[] entries = config.getAppConfigurationEntry(name);

/*此類中定義了keytab放妈,principal北救,loginModule等信息,此處使用的longinModule為Krb5LoginModule*/
private static final AppConfigurationEntry KEYTAB_KERBEROS_LOGIN =
  new AppConfigurationEntry(KerberosUtil.getKrb5LoginModuleName(),
                            LoginModuleControlFlag.REQUIRED,
                            KEYTAB_KERBEROS_OPTIONS);

安全Zookeeper的使用

我們知道在進(jìn)行安全Zookeeper訪問時(shí)芜抒,需要進(jìn)行kerberos認(rèn)證珍策,而Zookeeper認(rèn)證時(shí)需要傳入對(duì)應(yīng)的jaas.conf配置文件。通常該文件的配置如下:

Client {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/zookeeper/conf/zkcli.keytab"
  storeKey=true
  useTicketCache=false
  principal="zkcli@HADOOP.COM";
};

該配置的含義是在進(jìn)行zookeeper認(rèn)證時(shí)宅倒,使用的認(rèn)證類時(shí)Krb5longinModule類攘宙,使用keytab文件認(rèn)證,認(rèn)證時(shí)不使用OS緩存的tgt拐迁,而是使用配置的keyTab和principal蹭劈。 配置文件中的Client表示認(rèn)證的上下文的段(Login Context section),應(yīng)用層如果需要再不同的服務(wù)訪問時(shí)唠亚,使用不同的用戶链方,則可以配置多個(gè)不同的Login Context section。 只要實(shí)現(xiàn)對(duì)該文件的解析邏輯即可灶搜。

安全zookeper場景下的認(rèn)證實(shí)現(xiàn):

/*此時(shí)的Configuration.getConfiguration返回的是sun.security.provider.ConfigFile祟蚀,通過該類和jaas.conf配置文件獲取認(rèn)證信息*/

Configuration.getConfiguration().getAppConfigurationEntry(clientSection)

/*在初始化zookeeper的封裝login類初始化時(shí),調(diào)用login方法割卖,使用loginContext類完成用戶的kerberos的認(rèn)證*/

LoginContext loginContext = new LoginContext(loginContextName,callbackHandler);
loginContext.login();
LOG.info("successfully logged in.");

總結(jié):

HADOOP和zookeeper的的認(rèn)證本質(zhì)是一致的

在安全認(rèn)證時(shí)前酿,均使用的是kerberos的認(rèn)證機(jī)制,客戶端的認(rèn)證實(shí)現(xiàn)都是通過底層jdk的代碼LonginContext鹏溯,Krb5longinModule等模塊實(shí)現(xiàn)罢维,本質(zhì)上來講,HADOOP和zookeeper的認(rèn)證是一回事丙挽。

認(rèn)證信息的解析方式不同

zookeeper的認(rèn)證通過解析應(yīng)用配置的jaas.conf配置文件得到相關(guān)的信息完成

而HADOOP的認(rèn)證模塊則是內(nèi)部定義了部分配置肺孵,只需要用戶傳入principal和keytab即可匀借。

HADOOP和zookeeper為何沒有使用同一的接口實(shí)現(xiàn)

zookeeper為何不使用HADOOP的認(rèn)證方式的可能原因 :HADOOP最初的實(shí)現(xiàn)沒有引入相關(guān)的安全機(jī)制; Zookeeper作為底層的分布式協(xié)調(diào)器平窘,不應(yīng)當(dāng)對(duì)上層的組件有依賴吓肋;作者不想用。

HADOOP為何不使用zookeeper的認(rèn)證方式的可能原因:jaas.conf的配置相對(duì)復(fù)雜瑰艘,作者用起來不爽

各個(gè)組件使用的認(rèn)證方式

組件如Hive,HBase是鬼,Spark等組件使用的認(rèn)證都是hadoop-common的實(shí)現(xiàn)

Kafka和zookeeper使用的均為配置jaas.conf的方式進(jìn)行kerberos認(rèn)證。大概是kafka本身對(duì)hadoop沒有依賴關(guān)系紫新,僅僅對(duì)zk有相關(guān)的依賴均蜜,為了保持統(tǒng)一風(fēng)格,因此選擇了Zookeeper的認(rèn)證

關(guān)于kerberos的一些Tips

KRB5CCNAME環(huán)境變量:

在客戶端與kdc進(jìn)行認(rèn)真時(shí)會(huì)生成tgt文件芒率,默認(rèn)會(huì)緩存在/tmp/krb5cc_${uid}的文件中囤耳,如果使用不同的終端同樣的用戶登錄機(jī)器分別使用kinit命令,則會(huì)造成用戶沖突敲董,可能引發(fā)各種異常紫皇。因此可通過設(shè)置KRB5CCNAME環(huán)境變量的方式進(jìn)行認(rèn)證時(shí)用戶隔離

KRB5_CONFIG環(huán)境變量:

* 在客戶端與kdc交互時(shí),使用使用到krb5.conf的配置文件腋寨,該配置文件默認(rèn)存儲(chǔ)在/etc目錄下聪铺。 如果執(zhí)行kinit等命令時(shí)需要使用特定的krb5.conf配置文件,可通過設(shè)置KRB5_CONFIG實(shí)現(xiàn)

* 同樣如果是在java進(jìn)程中需要使用特定的krb5.conf配置文件萄窜,則可通過設(shè)置-Djava.security.krb5.conf來完成
操作 功能 備注
export KRB5CCNAME=/path/${tgtcacheFileName} 指定私有的tgt緩存文件铃剔,與其他tgt文件隔離,當(dāng)前session有效查刻,不影響其他用戶使用
export KRB5_CONFIG=/path/krb5.conf 執(zhí)行kinit,klist命令行時(shí)键兜,指定特定的krb5.conf配置文件
-Djava.security.krb5.conf=/path/krb5.conf java命令行中指定特定的krb5.conf配置文件
-Djava.security.auth.login.config=/path/jaas.conf 指定特定的jaas.conf配置文件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市穗泵,隨后出現(xiàn)的幾起案子普气,更是在濱河造成了極大的恐慌,老刑警劉巖佃延,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件现诀,死亡現(xiàn)場離奇詭異,居然都是意外死亡履肃,警方通過查閱死者的電腦和手機(jī)仔沿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尺棋,“玉大人封锉,你說我怎么就攤上這事。” “怎么了成福?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵碾局,是天一觀的道長。 經(jīng)常有香客問我奴艾,道長擦俐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任握侧,我火速辦了婚禮,結(jié)果婚禮上嘿期,老公的妹妹穿的比我還像新娘品擎。我一直安慰自己,他們只是感情好备徐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布萄传。 她就那樣靜靜地躺著,像睡著了一般蜜猾。 火紅的嫁衣襯著肌膚如雪秀菱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天蹭睡,我揣著相機(jī)與錄音衍菱,去河邊找鬼。 笑死肩豁,一個(gè)胖子當(dāng)著我的面吹牛脊串,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播清钥,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼琼锋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了祟昭?” 一聲冷哼從身側(cè)響起缕坎,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎篡悟,沒想到半個(gè)月后谜叹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恰力,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年叉谜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踩萎。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡停局,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情董栽,我是刑警寧澤码倦,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站锭碳,受9級(jí)特大地震影響袁稽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜擒抛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一推汽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧歧沪,春花似錦歹撒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至撵孤,卻和暖如春迈着,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背邪码。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工裕菠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人闭专。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓糕韧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親喻圃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子萤彩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容