Apache Sentry是什么?
一句话:提供了细粒度级、基于角色的授权以及多租户的管理模式。
对于Hadoop和Hive来说,引入Sentry提升数据安全是非常必要的。
为什么使用Sentry
Sentry是一个集中式日志管理系统。它具备以下优点:
- 安全授权 :Sentry可以控制数据访问,并对已通过验证的用户提供数据访问特权。
- 细粒度访问控制 :Sentry支持细粒度的Hadoop数据和元数据访问控制。Sentry在服务器、数据库、表和视图范围提供了不同特权级别的访问控制,包括查找、插入等,允许管理员使用视图限制对行或列的访问。管理员也可以通过Sentry和带选择语句的视图或UDF,根据需要在文件内屏蔽数据。
- 基于角色的管理 :Sentry通过基于角色的授权简化了管理,将访问同一数据集的不同特权级别授予多个组。
- 多租户管理 :Sentry允许为委派给不同管理员的不同数据集设置权限。Sentry可以在数据库/schema级别进行权限管理。
-
- 统一平台 :Sentry为确保数据安全,提供了一个统一平台,使用现有的Hadoop Kerberos实现安全认证。
这里顺提Hadoop Kerberos安全认证:解决了主机和用户级的安全认证
- 解决服务器到服务器的认证
由于kerberos对集群里的所有机器都分发了keytab,相互之间使用密钥进行通信,确保不会冒充服务器的情况。集群中的机器就是它们所宣称的,是可靠的。
防止了用户伪装成Datanode,Tasktracker,去接受JobTracker,Namenode的任务指派。
- 解决服务器到服务器的认证
- 解决client到服务器的认证
Kerberos对可信任的客户端提供认证,确保他们可以执行作业的相关操作。防止用户恶意冒充client提交作业的情况。
用户无法伪装成其他用户入侵到一个HDFS 或者MapReduce集群上
用户即使知道datanode的相关信息,也无法读取HDFS上的数据
用户无法发送对于作业的操作到JobTracker上
- 解决client到服务器的认证
Sentry怎么组成呢?
1)Sentry Server: 主脑,管理着认证元数据。
2)Data Engine: 引擎,验证访问权限。
3)Sentry Plugin: 集成接口。
Sentry和Hadoop生态的集成
PS: CDH平台中的安全,认证(Kerberos/LDAP)是第一步,授权(Sentry)是第二步。如果要启用授权,必须先启用认证。但在CDH平台中给出了一种测试模式,即不启用认证而只启用Sentry授权。但强烈不建议在生产系统中这样使用,因为如果没有用户认证,授权没有任何意义形同虚设,用户可以随意使用任何超级用户登录HiveServer2或者Impala,并不会做密码校验。注:本文档仅适用于测试环境。
本文档主要描述如何在CDH未启用认证的情况下安装,配置及使用Sentry。
Sentry安装:
1.在MySQL中创建sentry数据库
建表语句:
> create database sentry default character set utf8;
> CREATE USER 'sentry'@'%' IDENTIFIED BY 'password';
> GRANT ALL PRIVILEGES ON sentry. * TO 'sentry'@'%';
> FLUSH PRIVILEGES;
命令行操作:
[root@ip-172-31-6-148 527-hive-HIVEMETASTORE]# mysql -uroot -p
Enter password:
...
mysql> create database sentry default character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE USER 'sentry'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON sentry.* TO 'sentry'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql>
2.进入Cloudera Manager控制台点击“添加服务”
3.进入服务添加界面
4.选择Sentry服务,点击“继续”
5.选择Sentry Server及Gateway的安装节点,点击“继续“,注意需提前在MySQL中建立好相关用户和数据库
6.输入Sentry服务的数据库信息,点击测试,测试通过,点击“继续”
7.等待服务安装成功,点击“继续”
8.点击“完成”,Sentry服务到此安装完成。
3. Sentry配置
3.1. Hive配置
1.配置Hive使用Sentry服务
3.2.关闭Hive的用户模拟功能, 取消“勾选”:
3.3Hue配置
配置Hue与Sentry集成
3.4HDFS配置
配置HDFS开启ACLs与Sentry权限同步
完成以上配置后,回到Cloudera Manager主页,部署客户端配置并重启相关服务。