一篇文章彻底理解 HIVE 常见的三种 AUTHENTICATION 认证机制的配置与使用
大家好,我是明哥!
本片博文,分享下 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