让建站和SEO变得简单

让不懂建站的用户快速建站,让会建站的提高建站效率!

一篇著述透顶贯通 Hive 常见的三种 Authentication 认证机制的成立与使用
发布日期:2022-05-09 17:55    点击次数:114

全球好,我是明哥!

本片博文,共享下 HIVE 常见的三种 AUTHENTICATION 认证机制,包括其成立与使用。

1 数据安全概述

数据在企业中手脚具有战术兴致的迫切钞票,其安全性受到了越来越高的喜爱,任何样式的误删除,误修改,越权使用,失慎清楚等,都是紧要的安全事件。为了保护数据安全,各企业都实施了严格的数据使用规范和准则,也诈欺了多样数据安全技能,确保数据的安全使用。

在技能层面,安全有个 3A+1E 的宗旨,3A+1E 涵盖了安全的方方面面,3A 即 Authentication 认证,Authorization 鉴权,和Audit 审计;1 E 即 Encrption 加密:

其中 Authentication 料理的是身份认证的问题,庸俗的来说即是验明真身,解释用户确乎是他宣称的身份而不是由由其它身份伪装而来; Authorization 料理的是权限考据问题,即施行某个具体操作前,阐述该用户确乎有施行该操作的权限,而不是越权行事; Audit 料理的是审计问题,是在过后如期张望安全有关操作纪录,从而进一步治疗安全策略的基础; Encrption 料理的是加密与解密问题,分为静态数据的加解密与数据传输经由中的加解密。通过加解密,数据即使被截获了也不会变成安全事故。

针对某一个用户的某一次数据操作来看,Authentication是预先的安全措施,Authorization 是事中的安全措施,Audit是过后的安全措施。三者联动,才气确保确实的安全。这三者之中,Authentication是基础,因为如若不成解释用户身份,一切都无从谈起;而Authorization 是中枢和主题,亦然具体业务系统兑当前全球更见谅的方位。

2 HIVE 的 AUTHENTICATION 认证机制概述

具体到大数据组件 Hive,其搭救的客户端的 authentication 认证机制,需要通过事业端参数 hive.server2.authentication 来成立,可成立的值有多种,见下图官网截图:

在执行诈欺中,全球宽泛使用的有以下三种:

NONE:即不做身份校验; LDAP: 使用基于 LDAP/AD 的用户身份校验; KERBEROS: 使用 Kerberos/GSSAPI 做身份校验;

客户端,无论是 beeline 等专用 cli 客户端,还是 dbeaver 等通用 jdbc gui 客户端,抑或 JAVA 诈欺(基于jdbc),都需要根据事业端成立的认证花样,使用对应的花样,进行认证后才气奏效连上 hiveserver2,进而提交查询号召。

3 HIVE 常见的三种 AUTHENTICATION 认证机制的诈欺场景和成立花样

3.1 hive.server2.authentication = none

当不需要对用户身份进行校验,不错成立 hive.server2.authentication = none, 这种境况宽泛用在测试环境,坐蓐环境一般不保举; 此时用户通过多样客户端如 cli/gui/java 登录时,不错不成立用户名和密码, 在事业端 Hive 会合计登录的是匿名用户 anonymous,如:如:beeline -u jdbc:hive2://xx.xx.xx.xx:10000/default 此时用户通过多样客户端如 cli/gui/java 登录时,也不错成立为淘气用户名和淘气密码,在事业端 Hive 会合计登录的是用户声明的淘气用户(用户名不错是淘气用户名,致使是不存在的用户名;密码不错是淘气密码,或不成立密码),如: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

不错通过 hiveserver2 webui,考据登录的用户身份;

3.2 hive.server2.authentication = ldap

中大型企业中一般都会灵验户身份的斡旋认证平台,其底层一般都使用 ldap 条约,其具体兑现存微软的 ActiveDirectory, 也有 openLdap, ApacheDS等开源兑现; Hive 提供了基于 Ldap 的认证机制,不错使用企业的斡旋认证平台,来考据登录hive的用户的身份,其成立花样:hive.server2.authentication = ldap; 具体的 ldap 器具的 url,需要通过参数指定:hive.server2.authentication.ldap.url; 除了集成买卖版的 ActiveDirectory,大数据集群中也不错使用寂然安设的开源的ldap器具,此类器具常见的有 openLdap 和 ApacheDS,其中前者在大部分linux刊行版中都自带了package安设包,更容易安设,不外主要通过号召行cli进行料理;尔后者则自带了gui客户端 Apache Directory Studio,功能更为丰富;以 openLdap为例,其安设号召如下:sudo yum -y install openldap-clients; sudo yum -y install openldap; 客户端登录 ldap 认证的 hiveserver2 时,需要提供用户名和密码,hiveserver2 会到ldap中考据用户名和密码,唯一考据通过后才气正常登录;

以 beeline 登录为例,其号召样式如下:beeline -u jdbc:hive2://xx.xx.xx.xx:10000/default -n hs_cic -p xyzabc;

3.3 hive.server2.authentication = kerberos

大数据生态中,大部分组件都搭救 kerberos 安全认证; 在开启了 kerberos 安全认证的大数据集群环境中,需要交互的各个用户/客户端/事业端,都需要经过 kdc 的认证赢得了 ticket 笔据后,才气与其他组件进行正常交互,是以在大数据集群环境中,一朝基础事业 hdfs/yarn/zookeeper 等开启了 kerberos 安全认证,需要与 hdfs/yarn/zk 这些基础组件交互的各个表层组件,如 hive/hbase/spark/flink 等,都需要成立使用相应的 kerberos principal,唯一在经过 kdc 考据赢得 ticket 后,才气与 hdfs/yarn/zk 进行交互; 具体到 hiveserver2,其在跟开启了 kerberos 安全认证的 hdfs/yarn/hbase 等交互时,雷同需要成立使用相应的 kerberos principal(一般成立为hive),且唯一在经过 kdc 考据赢得 ticket 后,才气与 hdfs/yarn/zk 进行交互,hive-site.xml中,有关成立项截图如下:

hiveserver2 自己,也不错成立使用 kerberos 认证机制,即条件 hiveserver2 的多样客户端如 cli/gui/java jdbc,唯一在通过 kerberos 认证赢得ticket 后,才气正常登陆 hiveserver2 进而提交 sql,其成立花样是:hive.server2.authentication = kerberos; 4 开启了 kerberos 安全认证的大数据集群环境中,HIVE 的 kerberos/ldap 认证花样的成立花样和使用细节 在开启了 kerberos 安全认证的大数据集群环境中,HIVE既不错成立使用 kerberos 认证机制,也不错成立使用 LDAP 认证机制; 其成立花样比拟简便,成立参数 hive.server2.authentication = kerberos/ldap 即可; 不外在使用花样上,有不少容易犯错的细节,需要强调下。

4.1 kerberos 环境下,hive 的 kerberos 认证花样: hive.server2.authentication = kerberos

由于是在kerberos环境下,是以客户端在登录前,需要率先从 kdc 获取 ticket 并调理在 ticket cache中:a valid Kerberos ticket in the ticket cache before connecting: 如若是cli等客户端,一般通晓过号召 kinit principal_name -kt key_tab_location,基于 keytab 文献来获取特定业务用户的 ticket,并存储在客户端的 ticket cache中;(如若缓存的 ticket 过时了,需要通过号召再行获取;如若不使用keytab, 也不错通过密码来获取 ticket: kinit principal_name); 如若是智商代码,则一般通过 org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytab(String user, String path) 的花样,基于keytab文献来获取特定业务用户的 ticket,并存储在客户端的 ticket cache中;(UserGroupInformation 在后台会自动基于keytab 文献来定时刷新ticket,确保不会过时); 客户端在获取业务用户的 ticket 奏效后,才不错通过 jdbc一语气,登录到指定的 hiveserver2: 此时需要相配抽象下 hiveserver2 的url的样式,其样式保举使用:jdbc:hive2://xx.xx.xx.xx:10000/default;principal=hive/_HOST@CDH.COM: 这里的principal部分,保举使用三段式来指定,包含pincipal, host 和 realm; pincipal 必须指定为系统用户hive,而不成是业务用户如 dap,xyz等(实质上是因为,hive-site.xml 中成立的hive系统用户是hive); host部分,保举指定为_HOST,此时在底层使用时会替换为 hiveserver2 节点的hostname (固然也不错告成指定为 hiveserver2 节点的具体的 hostname); realm 部分,需要根据执行成立情况进行指定(不错张望成立文献 /etc/krb5.conf);

4.2 kerberos环境下,hive 的 LDAP 认证花样 : hive.server2.authentication = ldap

由于是在kerberos环境下,是以客户端在登录前,需要率先从 kdc 获取 ticket 并调理在 ticket cache中,这极少跟 kerberos 环境下,hive 的 kerberos 认证花样时一直的:a valid Kerberos ticket in the ticket cache before connecting: 如若是cli等客户端,一般通晓过号召 kinit principal_name -kt key_tab_location,基于 keytab 文献来获取特定业务用户的 ticket,并存储在客户端的 ticket cache中;(如若缓存的 ticket 过时了,需要通过号召再行获取;如若不使用keytab, 也不错通过密码来获取 ticket: kinit principal_name); 如若是智商代码,则一般通过 org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytab(String user, String path) 的花样,基于keytab文献来获取特定业务用户的 ticket,并存储在客户端的 ticket cache中;(UserGroupInformation 在后台会自动基于keytab 文献来定时刷新ticket,确保不会过时); 客户端在获取业务用户的 ticket 奏效后,才不错通过 jdbc一语气,登录到指定的 hiveserver2,此时登录样式,跟非 kerberos 环境下,hive 的 ldap认证花样,是一样的: 客户端登录 ldap 认证的 hiveserver2 时,需要提供用户名和密码,hiveserver2 会到ldap中考据用户名和密码,唯一考据通过后才气正常登录; 以 beeline 登录为例,其号召样式如下:beeline -u jdbc:hive2://xx.xx.xx.xx:10000/default -n hs_cic -p xyzabc; 5 大数据平台 CDH/TDH/CDP 与 TDH 中, hive 认证花样的各异 CDH/TDH/CDP中,在 CDH 5.7 及以后的版块中,Cloudera 对hive的安全认证进行了增强:在大数据集群开启了 kerberos 安全认证的环境下,即使 hive 事业端成立了使用ldap (hive.server2.authentication = ldap),客户端也不错通过url指定使用 KERBEROS 认证花样来登录; TDH 中,通过安全组件 Guardian 来料理各个组件的安全,Guardian 底层整合了 kerberos 和 ApacheDS,其保举的hive认证花样,其实等同于 “kerberos环境下,hive 的 LDAP 认证花样 : hive.server2.authentication = ldap”; 在TDH环境下,在大数据集群开启了 kerberos 安全认证的环境下,如若 hive 事业端成立了使用ldap (hive.server2.authentication = ldap),则必须通过kerberos和ldap的双重认证后,才气登陆 hiveserver2;

6 学问风雅 数据安全在技能层面,有个 3A+1E 的宗旨:3A 即 Authentication 认证,Authorization 鉴权,和Audit 审计,1 E 即 Encrption 加密; 大数据组件 Hive,其搭救的客户端的 authentication 认证机制,需要通过事业端参数 hive.server2.authentication 来成立,可成立的值有多种,常见的有 NONE/LDAP/KERBEROS; Hive 的 Ldap 认证机制,不错使用企业的斡旋认证平台,来考据登录 hive 的用户的身份; 在大数据集群开启了 kerberos 安全认证的环境下,hive 搭救两种认证花样:kerberos 和 ldap; 在大数据集群开启了 kerberos 安全认证的环境下,需要交互的各个用户/客户端/事业端,都需要经过 kdc 的认证赢得了 ticket 笔据后,才气与其他组件进行正常交互,是以在大数据集群环境中,一朝基础事业 hdfs/yarn/zookeeper 等开启了 kerberos 安全认证,需要与 hdfs/yarn/zk 这些基础组件交互的各个表层组件,如 hive/hbase/spark/flink 等,都需要成立使用相应的 kerberos principal,唯一在经过 kdc 考据赢得 ticket 后,才气与 hdfs/yarn/zk 进行交互; hiveserver2 在跟开启了 kerberos 安全认证的 hdfs/yarn/hbase 等交互时,雷同需要成立使用相应的 kerberos principal(一般成立为hive),且唯一在经过 kdc 考据赢得 ticket 后,才气与 hdfs/yarn/zk 进行交互; hiveserver2 自己,也不错成立使用 kerberos 认证机制,即条件 hiveserver2 的多样客户端如 cli/gui/java jdbc,唯一在通过 kerberos 认证赢得ticket 后,才气正常登陆 hiveserver2 进而提交 sql; 在大数据集群开启了 kerberos 安全认证的环境下,hive 客户端在登录前,需要率先从 kdc 获取业务用户的 ticket 并调理在 ticket cache中, hive 客户端唯一在获取业务用户的 ticket 奏效后,才不错通过 jdbc一语气,登录到指定的 hiveserver2; hiveserver2 在 kerberos 认证花样下,需要相配抽象下 hiveserver2 的url的样式,其样式保举使用:jdbc:hive2://xx.xx.xx.xx:10000/default;principal=hive/_HOST@CDH.COM: CDH/TDH/CDP中,在 CDH 5.7 及以后的版块中,Cloudera 对hive的安全认证进行了增强:在大数据集群开启了 kerberos 安全认证的环境下,即使 hive 事业端成立了使用ldap (hive.server2.authentication = ldap),客户端也不错通过url指定使用 KERBEROS 认证花样来登录; TDH 中,通过安全组件 Guardian 来料理各个组件的安全,Guardian 底层整合了 kerberos 和 ApacheDS,其保举的hive认证花样,其实等同于 “kerberos环境下,hive 的 LDAP 认证花样 : hive.server2.authentication = ldap”; 在TDH环境下,在大数据集群开启了 kerberos 安全认证的环境下,如若 hive 事业端成立了使用ldap (hive.server2.authentication = ldap),则必须通过kerberos和ldap的双重认证后,才气登陆 hiveserver2;

 

hive-site.xml中,有关参数有: 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

 



上一篇:没有了

下一篇:粉碎与碰撞:OpenStack中的编造机和裸机