在CDH未启用认证的情况下安装及使用Sentry

Apache Sentry是什么?

一句话:提供了细粒度级、基于角色的授权以及多租户的管理模式。
对于Hadoop和Hive来说,引入Sentry提升数据安全是非常必要的。

为什么使用Sentry

Sentry是一个集中式日志管理系统。它具备以下优点:

    1. 安全授权 :Sentry可以控制数据访问,并对已通过验证的用户提供数据访问特权。
    1. 细粒度访问控制 :Sentry支持细粒度的Hadoop数据和元数据访问控制。Sentry在服务器、数据库、表和视图范围提供了不同特权级别的访问控制,包括查找、插入等,允许管理员使用视图限制对行或列的访问。管理员也可以通过Sentry和带选择语句的视图或UDF,根据需要在文件内屏蔽数据。
    1. 基于角色的管理 :Sentry通过基于角色的授权简化了管理,将访问同一数据集的不同特权级别授予多个组。
    1. 多租户管理 :Sentry允许为委派给不同管理员的不同数据集设置权限。Sentry可以在数据库/schema级别进行权限管理。
    1. 统一平台 :Sentry为确保数据安全,提供了一个统一平台,使用现有的Hadoop Kerberos实现安全认证。
    这里顺提Hadoop Kerberos安全认证:解决了主机和用户级的安全认证
      1. 解决服务器到服务器的认证
        由于kerberos对集群里的所有机器都分发了keytab,相互之间使用密钥进行通信,确保不会冒充服务器的情况。集群中的机器就是它们所宣称的,是可靠的。
        防止了用户伪装成Datanode,Tasktracker,去接受JobTracker,Namenode的任务指派。
      1. 解决client到服务器的认证
        Kerberos对可信任的客户端提供认证,确保他们可以执行作业的相关操作。防止用户恶意冒充client提交作业的情况。
        用户无法伪装成其他用户入侵到一个HDFS 或者MapReduce集群上
        用户即使知道datanode的相关信息,也无法读取HDFS上的数据
        用户无法发送对于作业的操作到JobTracker上

Sentry怎么组成呢?

7260028-c27635e2e6c03442.png
Sentry架构

1)Sentry Server: 主脑,管理着认证元数据。
2)Data Engine: 引擎,验证访问权限。
3)Sentry Plugin: 集成接口。

Sentry和Hadoop生态的集成

7260028-4157f0abd45bc67a.png

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控制台点击“添加服务”

7260028-07c2f6b6a7fe9ddf.png

3.进入服务添加界面

7260028-6f0676db8de3cb30.png

4.选择Sentry服务,点击“继续”
7260028-089b58a425a20299.png

5.选择Sentry Server及Gateway的安装节点,点击“继续“,注意需提前在MySQL中建立好相关用户和数据库

7260028-c30cb4b17e5a77da.png

6.输入Sentry服务的数据库信息,点击测试,测试通过,点击“继续”

7260028-39de7b969725fe5e.png

7.等待服务安装成功,点击“继续”

7260028-1dc6071e081da128.png

8.点击“完成”,Sentry服务到此安装完成。

3. Sentry配置

3.1. Hive配置


1.配置Hive使用Sentry服务

7260028-6fbb82cee6b06d3a.png

3.2.关闭Hive的用户模拟功能, 取消“勾选”:

7260028-b463b0578d0743e8.png

3.3Hue配置


配置Hue与Sentry集成


7260028-fb343fa56a7ec7ae.png

3.4HDFS配置


配置HDFS开启ACLs与Sentry权限同步


7260028-c94b9ff0040ea862.png

完成以上配置后,回到Cloudera Manager主页,部署客户端配置并重启相关服务。

猜你喜欢

转载自blog.csdn.net/weixin_34195364/article/details/87430066