Hive的安全

一 概述

在了解Hive的安全机制之前,我们需要首先清楚Hadoop的安全机制以及Hadoop的历史,Hadoop起源于Apache Nuch的子项目.在那个时代以及整个早期原型时代,功能性需要比安全性需求优先级要高.分布式系统的安全问题要比正常情况下更加复杂,因为不同机器上的多个组件需要相互进行通信.

Hadoop的安全性近期有了许多变化,其中主要是对Kerberos安全认证的支持,还包括其他一些问题的修复.Kerberos允许客户端和服务器端相互认证.客户端的每次请求中都会带有凭证(ticket)信息.在TaskTracker上执行的任务(task)都是由执行任务(job)的用户来执行的.用户无法通过设置hadoop.job.ugi属性的值来模拟其他人来执行任务.为了达到这个目的,所有的Hadoop组件从头到尾都要使用kerberos安全认证.

Hive在Hadoop引入Kerberos支持之前就已经存在了,而且Hive目前还没有完全和Hadoop的安全改变相融合.例如,Hive元数据存储链接可能是直接连接到一个JDBC数据库或者通过Thrift进行链接,这些都是要用用户身份进行各种操作.像HiverService这样的基于Thrift的组件还是要冒充他人来执行.Hadoop的文件用户权限模型(也就是对于一个文件分为用户 组 和其他3层权限)和很多其他数据库中用户权限模型具有很大的差异,数据库中通常是对使用字段级别进行授权和权限回收操作来进行权限控制的.