自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一篇文章徹底理解 Hive 常見(jiàn)的三種 Authentication 認(rèn)證機(jī)制的配置與使用

大數(shù)據(jù)
本片博文,分享下 HIVE 常見(jiàn)的三種 AUTHENTICATION 認(rèn)證機(jī)制,包括其配置與使用。

大家好,我是明哥!

本片博文,分享下 HIVE 常見(jiàn)的三種 AUTHENTICATION 認(rèn)證機(jī)制,包括其配置與使用。

1 數(shù)據(jù)安全概述

數(shù)據(jù)在企業(yè)中作為具有戰(zhàn)略意義的重要資產(chǎn),其安全性受到了越來(lái)越高的重視,任何形式的誤刪除,誤修改,越權(quán)使用,不慎泄露等,都是重大的安全事件。為了保護(hù)數(shù)據(jù)安全,各企業(yè)都實(shí)施了嚴(yán)格的數(shù)據(jù)使用規(guī)范和準(zhǔn)則,也應(yīng)用了各種數(shù)據(jù)安全技術(shù),確保數(shù)據(jù)的安全使用。

在技術(shù)層面,安全有個(gè) 3A+1E 的概念,3A+1E 涵蓋了安全的方方面面,3A 即 Authentication 認(rèn)證,Authorization 鑒權(quán),和Audit 審計(jì);1 E 即 Encrption 加密:

  • 其中 Authentication 解決的是身份認(rèn)證的問(wèn)題,通俗的來(lái)說(shuō)就是驗(yàn)明真身,證明用戶確實(shí)是他聲稱(chēng)的身份而不是由由其它身份偽裝而來(lái);
  • Authorization 解決的是權(quán)限驗(yàn)證問(wèn)題,即執(zhí)行某個(gè)具體操作前,確認(rèn)該用戶確實(shí)有執(zhí)行該操作的權(quán)限,而不是越權(quán)行事;
  • Audit 解決的是審計(jì)問(wèn)題,是在事后定期查看安全相關(guān)操作記錄,從而進(jìn)一步調(diào)整安全策略的基礎(chǔ);
  • Encrption 解決的是加密與解密問(wèn)題,分為靜態(tài)數(shù)據(jù)的加解密與數(shù)據(jù)傳輸過(guò)程中的加解密。通過(guò)加解密,數(shù)據(jù)即使被截獲了也不會(huì)造成安全事故。

針對(duì)某一個(gè)用戶的某一次數(shù)據(jù)操作來(lái)看,Authentication是事前的安全措施,Authorization 是事中的安全措施,Audit是事后的安全措施。三者聯(lián)動(dòng),才能確保真正的安全。這三者之中,Authentication是基礎(chǔ),因?yàn)槿绻荒茏C明用戶身份,一切都無(wú)從談起;而Authorization 是核心和主題,也是具體業(yè)務(wù)系統(tǒng)實(shí)現(xiàn)時(shí)大家更關(guān)注的地方。

2 HIVE 的 AUTHENTICATION 認(rèn)證機(jī)制概述

具體到大數(shù)據(jù)組件 Hive,其支持的客戶端的 authentication 認(rèn)證機(jī)制,需要通過(guò)服務(wù)端參數(shù) hive.server2.authentication 來(lái)配置,可配置的值有多種,見(jiàn)下圖官網(wǎng)截圖:

在實(shí)際應(yīng)用中,大家經(jīng)常使用的有以下三種:

  • NONE:即不做身份校驗(yàn);
  • LDAP: 使用基于 LDAP/AD 的用戶身份校驗(yàn);
  • KERBEROS: 使用 Kerberos/GSSAPI 做身份校驗(yàn);

客戶端,不管是 beeline 等專(zhuān)用 cli 客戶端,還是 dbeaver 等通用 jdbc gui 客戶端,抑或 JAVA 應(yīng)用(基于jdbc),都需要根據(jù)服務(wù)端配置的認(rèn)證方式,使用對(duì)應(yīng)的方式,進(jìn)行認(rèn)證后才能成功連上 hiveserver2,進(jìn)而提交查詢命令。

3 HIVE 常見(jiàn)的三種 AUTHENTICATION 認(rèn)證機(jī)制的應(yīng)用場(chǎng)景和配置方式

3.1 hive.server2.authentication = none

  • 當(dāng)不需要對(duì)用戶身份進(jìn)行校驗(yàn),可以配置 hive.server2.authentication = none, 這種境況經(jīng)常用在測(cè)試環(huán)境,生產(chǎn)環(huán)境一般不推薦;
  • 此時(shí)用戶通過(guò)各種客戶端如 cli/gui/java 登錄時(shí),可以不配置用戶名和密碼, 在服務(wù)端 Hive 會(huì)認(rèn)為登錄的是匿名用戶 anonymous,如:如:beeline -u jdbc:hive2://xx.xx.xx.xx:10000/default
  • 此時(shí)用戶通過(guò)各種客戶端如 cli/gui/java 登錄時(shí),也可以配置為任意用戶名和任意密碼,在服務(wù)端 Hive 會(huì)認(rèn)為登錄的是用戶聲明的任意用戶(用戶名可以是任意用戶名,甚至是不存在的用戶名;密碼可以是任意密碼,或不配置密碼),如:beeline -u jdbc:hive2://xx.xx.xx.xx:10000/default -n xyz;beeline -u jdbc:hive2://xx.xx.xx.xx:10000/default -n xyz -p xxxx

可以通過(guò) hiveserver2 webui,驗(yàn)證登錄的用戶身份;

3.2 hive.server2.authentication = ldap

  • 中大型企業(yè)中一般都會(huì)有用戶身份的統(tǒng)一認(rèn)證平臺(tái),其底層一般都使用 ldap 協(xié)議,其具體實(shí)現(xiàn)有微軟的 ActiveDirectory, 也有 openLdap, ApacheDS等開(kāi)源實(shí)現(xiàn);
  • Hive 提供了基于 Ldap 的認(rèn)證機(jī)制,可以使用企業(yè)的統(tǒng)一認(rèn)證平臺(tái),來(lái)驗(yàn)證登錄hive的用戶的身份,其配置方式:hive.server2.authentication = ldap;
  • 具體的 ldap 工具的 url,需要通過(guò)參數(shù)指定:hive.server2.authentication.ldap.url;
  • 除了集成商業(yè)版的 ActiveDirectory,大數(shù)據(jù)集群中也可以使用獨(dú)立安裝的開(kāi)源的ldap工具,此類(lèi)工具常見(jiàn)的有 openLdap 和 ApacheDS,其中前者在大部分linux發(fā)行版中都自帶了package安裝包,更容易安裝,不過(guò)主要通過(guò)命令行cli進(jìn)行管理;而后者則自帶了gui客戶端 Apache Directory Studio,功能更為豐富;以 openLdap為例,其安裝命令如下:sudo yum -y install openldap-clients; sudo yum -y install openldap;
  • 客戶端登錄 ldap 認(rèn)證的 hiveserver2 時(shí),需要提供用戶名和密碼,hiveserver2 會(huì)到ldap中驗(yàn)證用戶名和密碼,只有驗(yàn)證通過(guò)后才能正常登錄;

以 beeline 登錄為例,其命令格式如下:beeline -u jdbc:hive2://xx.xx.xx.xx:10000/default -n hs_cic -p xyzabc;

3.3 hive.server2.authentication = kerberos

  • 大數(shù)據(jù)生態(tài)中,大部分組件都支持 kerberos 安全認(rèn)證;
  • 在開(kāi)啟了 kerberos 安全認(rèn)證的大數(shù)據(jù)集群環(huán)境中,需要交互的各個(gè)用戶/客戶端/服務(wù)端,都需要經(jīng)過(guò) kdc 的認(rèn)證獲得了 ticket 憑證后,才能與其他組件進(jìn)行正常交互,所以在大數(shù)據(jù)集群環(huán)境中,一旦基礎(chǔ)服務(wù) hdfs/yarn/zookeeper 等開(kāi)啟了 kerberos 安全認(rèn)證,需要與 hdfs/yarn/zk 這些基礎(chǔ)組件交互的各個(gè)上層組件,如 hive/hbase/spark/flink 等,都需要配置使用相應(yīng)的 kerberos principal,只有在經(jīng)過(guò) kdc 驗(yàn)證獲得 ticket 后,才能與 hdfs/yarn/zk 進(jìn)行交互;
  • 具體到 hiveserver2,其在跟開(kāi)啟了 kerberos 安全認(rèn)證的 hdfs/yarn/hbase 等交互時(shí),同樣需要配置使用相應(yīng)的 kerberos principal(一般配置為hive),且只有在經(jīng)過(guò) kdc 驗(yàn)證獲得 ticket 后,才能與 hdfs/yarn/zk 進(jìn)行交互,hive-site.xml中,相關(guān)配置項(xiàng)截圖如下:

  • hiveserver2 本身,也可以配置使用 kerberos 認(rèn)證機(jī)制,即要求 hiveserver2 的各種客戶端如 cli/gui/java jdbc,只有在通過(guò) kerberos 認(rèn)證獲得ticket 后,才能正常登陸 hiveserver2 進(jìn)而提交 sql,其配置方式是:hive.server2.authentication = kerberos;

4 開(kāi)啟了 kerberos 安全認(rèn)證的大數(shù)據(jù)集群環(huán)境中,HIVE 的 kerberos/ldap 認(rèn)證方式的配置方式和使用細(xì)節(jié)

  • 在開(kāi)啟了 kerberos 安全認(rèn)證的大數(shù)據(jù)集群環(huán)境中,HIVE既可以配置使用 kerberos 認(rèn)證機(jī)制,也可以配置使用 LDAP 認(rèn)證機(jī)制;
  • 其配置方式比較簡(jiǎn)單,配置參數(shù) hive.server2.authentication = kerberos/ldap 即可;
  • 不過(guò)在使用方式上,有不少容易犯錯(cuò)的細(xì)節(jié),需要強(qiáng)調(diào)下。

4.1 kerberos 環(huán)境下,hive 的 kerberos 認(rèn)證方式: hive.server2.authentication = kerberos

  • 由于是在kerberos環(huán)境下,所以客戶端在登錄前,需要首先從 kdc 獲取 ticket 并維護(hù)在 ticket cache中:a valid Kerberos ticket in the ticket cache before connecting:
    • 如果是cli等客戶端,一般會(huì)通過(guò)命令 kinit principal_name -kt key_tab_location,基于 keytab 文件來(lái)獲取特定業(yè)務(wù)用戶的 ticket,并存儲(chǔ)在客戶端的 ticket cache中;(如果緩存的 ticket 過(guò)期了,需要通過(guò)命令重新獲取;如果不使用keytab, 也可以通過(guò)密碼來(lái)獲取 ticket: kinit principal_name);
    • 如果是程序代碼,則一般通過(guò) org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytab(String user, String path) 的方式,基于keytab文件來(lái)獲取特定業(yè)務(wù)用戶的 ticket,并存儲(chǔ)在客戶端的 ticket cache中;(UserGroupInformation 在后臺(tái)會(huì)自動(dòng)基于keytab 文件來(lái)定時(shí)刷新ticket,確保不會(huì)過(guò)期);
  • 客戶端在獲取業(yè)務(wù)用戶的 ticket 成功后,才可以通過(guò) jdbc連接,登錄到指定的 hiveserver2:
    • 此時(shí)需要特別注意下 hiveserver2 的url的格式,其格式推薦使用:jdbc:hive2://xx.xx.xx.xx:10000/default;principal=hive/_HOST@CDH.COM:
    • 這里的principal部分,推薦使用三段式來(lái)指定,包含pincipal, host 和 realm;
    • pincipal 必須指定為系統(tǒng)用戶hive,而不能是業(yè)務(wù)用戶如 dap,xyz等(本質(zhì)上是因?yàn)椋琱ive-site.xml 中配置的hive系統(tǒng)用戶是hive);
    • host部分,推薦指定為_(kāi)HOST,此時(shí)在底層使用時(shí)會(huì)替換為 hiveserver2 節(jié)點(diǎn)的hostname (當(dāng)然也可以直接指定為 hiveserver2 節(jié)點(diǎn)的具體的 hostname);
    • realm 部分,需要根據(jù)實(shí)際配置情況進(jìn)行指定(可以查看配置文件 /etc/krb5.conf);

4.2 kerberos環(huán)境下,hive 的 LDAP 認(rèn)證方式 : hive.server2.authentication = ldap

  • 由于是在kerberos環(huán)境下,所以客戶端在登錄前,需要首先從 kdc 獲取 ticket 并維護(hù)在 ticket cache中,這一點(diǎn)跟 kerberos 環(huán)境下,hive 的 kerberos 認(rèn)證方式時(shí)一直的:a valid Kerberos ticket in the ticket cache before connecting:
    • 如果是cli等客戶端,一般會(huì)通過(guò)命令 kinit principal_name -kt key_tab_location,基于 keytab 文件來(lái)獲取特定業(yè)務(wù)用戶的 ticket,并存儲(chǔ)在客戶端的 ticket cache中;(如果緩存的 ticket 過(guò)期了,需要通過(guò)命令重新獲取;如果不使用keytab, 也可以通過(guò)密碼來(lái)獲取 ticket: kinit principal_name);
    • 如果是程序代碼,則一般通過(guò) org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytab(String user, String path) 的方式,基于keytab文件來(lái)獲取特定業(yè)務(wù)用戶的 ticket,并存儲(chǔ)在客戶端的 ticket cache中;(UserGroupInformation 在后臺(tái)會(huì)自動(dòng)基于keytab 文件來(lái)定時(shí)刷新ticket,確保不會(huì)過(guò)期);
  • 客戶端在獲取業(yè)務(wù)用戶的 ticket 成功后,才可以通過(guò) jdbc連接,登錄到指定的 hiveserver2,此時(shí)登錄格式,跟非 kerberos 環(huán)境下,hive 的 ldap認(rèn)證方式,是一樣的:
    • 客戶端登錄 ldap 認(rèn)證的 hiveserver2 時(shí),需要提供用戶名和密碼,hiveserver2 會(huì)到ldap中驗(yàn)證用戶名和密碼,只有驗(yàn)證通過(guò)后才能正常登錄;
    • 以 beeline 登錄為例,其命令格式如下:beeline -u jdbc:hive2://xx.xx.xx.xx:10000/default -n hs_cic -p xyzabc;

5 大數(shù)據(jù)平臺(tái) CDH/TDH/CDP 與 TDH 中, hive 認(rèn)證方式的差異

  • CDH/TDH/CDP中,在 CDH 5.7 及以后的版本中,Cloudera 對(duì)hive的安全認(rèn)證進(jìn)行了增強(qiáng):在大數(shù)據(jù)集群開(kāi)啟了 kerberos 安全認(rèn)證的環(huán)境下,即使 hive 服務(wù)端配置了使用ldap (hive.server2.authentication = ldap),客戶端也可以通過(guò)url指定使用 KERBEROS 認(rèn)證方式來(lái)登錄;
  • TDH 中,通過(guò)安全組件 Guardian 來(lái)管理各個(gè)組件的安全,Guardian 底層整合了 kerberos 和 ApacheDS,其推薦的hive認(rèn)證方式,其實(shí)等同于 “kerberos環(huán)境下,hive 的 LDAP 認(rèn)證方式 : hive.server2.authentication = ldap”;
  • 在TDH環(huán)境下,在大數(shù)據(jù)集群開(kāi)啟了 kerberos 安全認(rèn)證的環(huán)境下,如果 hive 服務(wù)端配置了使用ldap (hive.server2.authentication = ldap),則必須通過(guò)kerberos和ldap的雙重認(rèn)證后,才能登陸 hiveserver2;

6 知識(shí)總結(jié)

  • 數(shù)據(jù)安全在技術(shù)層面,有個(gè) 3A+1E 的概念:3A 即 Authentication 認(rèn)證,Authorization 鑒權(quán),和Audit 審計(jì),1 E 即 Encrption 加密;
  • 大數(shù)據(jù)組件 Hive,其支持的客戶端的 authentication 認(rèn)證機(jī)制,需要通過(guò)服務(wù)端參數(shù) hive.server2.authentication 來(lái)配置,可配置的值有多種,常見(jiàn)的有 NONE/LDAP/KERBEROS;
  • Hive 的 Ldap 認(rèn)證機(jī)制,可以使用企業(yè)的統(tǒng)一認(rèn)證平臺(tái),來(lái)驗(yàn)證登錄 hive 的用戶的身份;
  • 在大數(shù)據(jù)集群開(kāi)啟了 kerberos 安全認(rèn)證的環(huán)境下,hive 支持兩種認(rèn)證方式:kerberos 和 ldap;
  • 在大數(shù)據(jù)集群開(kāi)啟了 kerberos 安全認(rèn)證的環(huán)境下,需要交互的各個(gè)用戶/客戶端/服務(wù)端,都需要經(jīng)過(guò) kdc 的認(rèn)證獲得了 ticket 憑證后,才能與其他組件進(jìn)行正常交互,所以在大數(shù)據(jù)集群環(huán)境中,一旦基礎(chǔ)服務(wù) hdfs/yarn/zookeeper 等開(kāi)啟了 kerberos 安全認(rèn)證,需要與 hdfs/yarn/zk 這些基礎(chǔ)組件交互的各個(gè)上層組件,如 hive/hbase/spark/flink 等,都需要配置使用相應(yīng)的 kerberos principal,只有在經(jīng)過(guò) kdc 驗(yàn)證獲得 ticket 后,才能與 hdfs/yarn/zk 進(jìn)行交互;
  • hiveserver2 在跟開(kāi)啟了 kerberos 安全認(rèn)證的 hdfs/yarn/hbase 等交互時(shí),同樣需要配置使用相應(yīng)的 kerberos principal(一般配置為hive),且只有在經(jīng)過(guò) kdc 驗(yàn)證獲得 ticket 后,才能與 hdfs/yarn/zk 進(jìn)行交互;
  • hiveserver2 本身,也可以配置使用 kerberos 認(rèn)證機(jī)制,即要求 hiveserver2 的各種客戶端如 cli/gui/java jdbc,只有在通過(guò) kerberos 認(rèn)證獲得ticket 后,才能正常登陸 hiveserver2 進(jìn)而提交 sql;
  • 在大數(shù)據(jù)集群開(kāi)啟了 kerberos 安全認(rèn)證的環(huán)境下,hive 客戶端在登錄前,需要首先從 kdc 獲取業(yè)務(wù)用戶的 ticket 并維護(hù)在 ticket cache中, hive 客戶端只有在獲取業(yè)務(wù)用戶的 ticket 成功后,才可以通過(guò) jdbc連接,登錄到指定的 hiveserver2;
  • hiveserver2 在 kerberos 認(rèn)證方式下,需要特別注意下 hiveserver2 的url的格式,其格式推薦使用:jdbc:hive2://xx.xx.xx.xx:10000/default;principal=hive/_HOST@CDH.COM:
  • CDH/TDH/CDP中,在 CDH 5.7 及以后的版本中,Cloudera 對(duì)hive的安全認(rèn)證進(jìn)行了增強(qiáng):在大數(shù)據(jù)集群開(kāi)啟了 kerberos 安全認(rèn)證的環(huán)境下,即使 hive 服務(wù)端配置了使用ldap (hive.server2.authentication = ldap),客戶端也可以通過(guò)url指定使用 KERBEROS 認(rèn)證方式來(lái)登錄;
  • TDH 中,通過(guò)安全組件 Guardian 來(lái)管理各個(gè)組件的安全,Guardian 底層整合了 kerberos 和 ApacheDS,其推薦的hive認(rèn)證方式,其實(shí)等同于 “kerberos環(huán)境下,hive 的 LDAP 認(rèn)證方式 : hive.server2.authentication = ldap”;
  • 在TDH環(huán)境下,在大數(shù)據(jù)集群開(kāi)啟了 kerberos 安全認(rèn)證的環(huán)境下,如果 hive 服務(wù)端配置了使用ldap (hive.server2.authentication = ldap),則必須通過(guò)kerberos和ldap的雙重認(rèn)證后,才能登陸 hiveserver2;

 

  • hive-site.xml中,相關(guān)參數(shù)有:
    • hive.server2.authentication
    • hive.server2.authentication.kerberos.keytab
    • hive.server2.authentication.kerberos.principal
    • hive.server2.authentication.spnego.keytab
    • hive.server2.authentication.spnego.principal
    • hive.server2.authentication.ldap.url
    • hive.server2.authentication.ldap.baseDN
    • hive.server2.authentication.ldap.Domain
    • hive.server2.enable.doAs
    • hive.metastore.kerberos.keytab.file
    • hive.metastore.kerberos.principal

 

責(zé)任編輯:武曉燕 來(lái)源: 明哥的IT隨筆
相關(guān)推薦

2024-05-17 10:05:06

Java機(jī)制應(yīng)用

2024-04-11 12:57:55

Python函數(shù)

2021-07-10 10:01:37

Python簡(jiǎn)單函數(shù)

2021-03-17 09:59:26

Python函數(shù)調(diào)用

2017-07-20 16:55:56

Android事件響應(yīng)View源碼分析

2015-07-15 17:09:48

HiveHadoop分布式文件系統(tǒng)

2024-06-25 08:18:55

2021-04-07 13:28:21

函數(shù)程序員異步

2013-04-15 10:59:08

iOS開(kāi)發(fā)ARC版本說(shuō)明

2025-01-26 15:38:11

Spring事務(wù)編程式

2024-05-10 08:19:59

arthasjava字節(jié)碼

2020-12-29 05:35:43

FlinkSQL排序

2021-11-11 12:02:17

HiveOrderSort

2019-07-23 08:55:46

Base64編碼底層

2020-10-09 08:15:11

JsBridge

2024-02-28 12:41:00

源碼內(nèi)核參數(shù)

2019-07-26 15:01:42

SparkShuffle內(nèi)存

2021-02-19 19:35:53

SVG 形狀元素

2019-06-06 15:22:07

SparkShuffle內(nèi)存

2019-11-04 11:06:36

kubernetes通信組件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)