大数据运维---Ranger权限管理

一、基本介绍

  1、介绍

  Ranger是HDP体系统中安全管理的重要一环。它提供了具体资源(如HBase中的具体表)权限管控、访问监控、数据加密的功能。

  2、组件介绍

  Raner是由三个部分组件:Ranger Admin 、Ranger Usersync 与Ranger plugin,它们关系如下:

  

   3、在Ranger的官网中有对于这三个组件的说明

组件名称说明
Admin Ranger Admin Portal是安全管理的中心接口。 用户可以创建和更新策略,这些策略存储在策略数据库中。 每个组件内的Plugins会定期轮询这些策略。Portal还包括一个审计服务器,它发送从插件收集的审计数据,以便存储在HDFS或关系数据库中
UserSync 同步实用工具来从Unix或LDAP或Active Directory中拉取用户和组。 用户或组信息存储在Ranger门户中,用于策略定义。
PlugIn 插件是嵌入每个集群组件进程的轻量级Java程序。 例如,Apache Hive的Apache Ranger插件嵌入在Hiveserver2中。 这些插件从中央服务器提取策略,并将它们本地存储在一个文件中。 当用户请求通过组件时,这些插件拦截请求并根据安全策略进行评估。 插件还可以从用户请求中收集数据,并按照单独的线程将此数据发送回审计服务器

  4、Ranger Admin

  Ranger admin它包含三个部分: Web页面、Rest消息处理服务以及数据库。 我们可以把它看成一个用来数据集中存储中心(所有的数据都集中存在这里,但是其它两个组件也可单独运行存在)。它的具体作用:
    1. 接收UserSync进程传过来的用户、组信息。 并将它们保存到MySql数据库中。 需要注意:这些用户信息在配置权限策略的时候需要使用。这个很容易理解,就象领物料的时候,管理员需要登记物料的领用人,如果不是本公司的人,肯定就不会让你领了。
    2. 提供创建policy策略的接口
    3. 提供外部REST消息的处理接口

  5、UserSync

  UserSync是Ranger提供的一个用户信息同步接口,可以用来同步Linux用户信息与LDAP用户信息。通过配置项:
  SYNC_SOURCE = LDAP/Unix
  来确认是LDAP还是Unix, 默认情况是同步Unix信息。 

  UserSync不是实时同步的

  6、Plugin

    1)NameNode启动时候,会创建一个Hdfs Plugin线程, 这个线程启动后就会读取配置信息

    2)同步完成后,hdfs plugin线程会每隔一段时间(30s)会往ranger admin发送一次消息,同步一次policy信息

二、安装服务

  1、登陆Ambari,通过点击首页左下角的Actions按钮我们会看到新建服务选项

  

   2、点击新建服务之后会进入新建服务向导页面。我们勾选Ranger和Ranger KMS这两个服务并点击下一步,如下图所示

  

   3、接着我们会看到一条提示信息,要求我们配置Ambari-Server的JDBC驱动信息,如下图所示。因为Ranger需要使用关系型数据库存储一些元数据信息,这里我们选择使用MySQL数据库。将MySQL驱动jar包上传到Ambari-Server所在的服务器,然后执行以下命令。  

  

   4、将3个服务安装在同一台机器上

  

   5、分配Tagsync,从客户端和客户端组件的分配。

  

   6、Ranger Admin的配置

[root@node101 ~]# mysql -uroot -pyinzhengjie
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 71
Server version: 5.6.42 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ambari             |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

mysql> CREATE DATABASE ranger;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON ranger.* TO 'ranger'@'%' IDENTIFIED BY 'admin123' WITH GRANT OPTION;       
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> select Host,User,Password from mysql.user where user='ranger';
+----------------------------+--------+-------------------------------------------+
| Host                       | User   | Password                                  |
+----------------------------+--------+-------------------------------------------+
| node101.yinzhengjie.org.cn | ranger | *BD0B1F48FDC55BD27555FC2F22FF29A68A25A1D7 |
+----------------------------+--------+-------------------------------------------+
1 row in set (0.00 sec)

mysql> quit
Bye
[root@node101 ~]# 
[root@node101 ~]# mysql -uroot -pyinzhengjie                              #登陆mysql进行授权操作
 
[root@node101 ~]# mysql -h node101.yinzhengjie.org.cn -uranger -pyinzhengjie
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 80
Server version: 5.6.42 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ranger             |
+--------------------+
2 rows in set (0.00 sec)

mysql> quit
Bye
[root@node101 ~]# 
[root@node101 ~]# mysql -h master -uranger -padmin123          #在mysql服务端授权成功之后,一定要进行测试!验证是否可以登陆数据库!

       

   7、Ranger的配置 ,也可以先关闭,等安装完成了,再去开启,填入配置

  

   8、配置RangerKMS

[root@node101 ~]# mysql -uroot -pyinzhengjie
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 84
Server version: 5.6.42 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE  rangerkms;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON rangerkms.* TO 'rangerkms'@'5' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> select Host,User,Password from mysql.user where user='rangerkms';
+----------------------------+-----------+-------------------------------------------+
| Host                       | User      | Password                                  |
+----------------------------+-----------+-------------------------------------------+
| node101.yinzhengjie.org.cn | rangerkms | *BD0B1F48FDC55BD27555FC2F22FF29A68A25A1D7 |
+----------------------------+-----------+-------------------------------------------+
1 row in set (0.00 sec)

mysql> quit
Bye
[root@node101 ~]# 
[root@node101 ~]# mysql -uroot -pyinzhengjie                                  #数据库授权
 
[root@node101 ~]# mysql -h node101.yinzhengjie.org.cn -urangerkms -pyinzhengjie
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 85
Server version: 5.6.42 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| rangerkms          |
+--------------------+
2 rows in set (0.00 sec)

mysql> quit
Bye
[root@node101 ~]# 
[root@node101 ~]# mysql -h master -urangerkms -p123456               #授权成功后,别忘记验证授权是否生效!

       

  9、接着往下拉,需要你输入一个密码,如下图所示,输入后点击下一步:

  

   10、配置完毕后,会弹出一个Dependent Configurations对话框,如下图所示,点击OK即可~ 

  

   11、忽略警告(我的电脑内存有限,分配的少点仅仅用于测试)

  

   12、确认配置无误后,点击Depoly按钮

  

   13、安装服务成功 

  

   14、点击完成

  

   15、安装完成后,需要陆续重启已经部署的服务

  

 三、配置服务

  1、安装完毕之后我们需要配置Ranger以让它能够正常工作,通过点击Configs按钮来到配置界面。如下图所示,Ranger到配置项有很多分为了六大类,他们分别是管理员配置,用户信息配置,插件配置,审计配置,标签同步配置和高级配置。这里我们主要关注插件配置和审计配置,其他配置项保持默认即可。、

  

   2、对Ranger的插件配置

  

   3、对Ranegr的审计配置

  

   4、点击ok,保存配置信息

  

   5、如下图所示,按照提示重启相应的服务即可

  

   6、重启相应的服务之后,我们就可以去看看Ranger的Web UI管理控制台啦

   

   7、Ranger功能介绍-查看Ranger用户

  如下图所示,通过Ambari的Quick Links功能进入Ranger的管理控制台,输入默认的用户名和密码进行登陆(默认的用户名和密码均为“admin”)。 

  

   8、单击Settings设置按钮进入Ranger用户管理界面 

  

   9、如下图所示,点击Setting之后,在这里可以看到Ranger的所有用户。我们发现Ranger已经预建好来一批用户,这些用户是不是很眼熟呢?他们是Ambari用户管理里面的集群组件用户如出一辙。没错,这些用户就是从Hadoop集群的Linux用户同步过来的。

  

   10、Ranger将用户分为两类来源,内部用户和外部扩展用户。

  内部用户:
      是指Ranger自己单方面创建的用户,主要用来做系统内部管理相关工作,与外部用户没有关联。
  外部用户:
      是指通过同步程序从集群服务中同步而来的用户,是Ranger用户和集群服务用户的一层映射,主要用于权限策略的分配。如上图所示,admin用户属于内部用户,而所有同步过来的集群服务用户均属于外部扩展用户。

四、Ranger功能介绍-权限策略

   1、现在我们开始介绍如何通过Ranger进行数据授权。如下图所示,首先单击“Access Manager”进入服务管理页面。

  

   2、如下图所示,我们会看到一个格栅布局的列表,他们是Ranger目前能够支持的所有子系统。因为在安装Ranger的时候已经开启了HDFS的插件,所以我们在HDFS组件下可以看到“hdp_hadoop”服务。它是Ranger根据开启的插件预建的服务项,以Ambari集群名称 + 组件名称的规则命名。

       

   3、点击上图中的“hdp_hadoop”进入HDFS的权限策略列表页面。如下图所示,这里可以查看,新建,修改根删除HDFS的权限策略,单击“Add New Pollicy”进入新建策略页面:

  

   4、点击上图中的“Add New Pollicy”按钮后,就可以进入下图的界面,授权策略页面分为Pollicy Detail和Allow Conditions两个部分,下图中针对各个参数都进行了标注

  

   5、如上图所示,点击“Add”后我们就会在HDFS的策略界面中看到对应的规则,如下图所示

  

   6、接下来我们需要验证下权限策略是否生效,首先通过ssh登陆到集群服务器并切换成ranger用户。具体操作如下:

[root@master ~]# su ranger
[ranger@master root]$ hdfs dfs -ls /                                                                   可以查看
Found 9 items
drwxrwxrwt   - yarn   hadoop          0 2020-11-18 14:46 /app-logs
drwxr-xr-x   - yarn   hadoop          0 2020-11-18 14:40 /ats
drwxr-xr-x   - hdfs   hdfs            0 2020-11-18 14:41 /atsv2
drwxr-xr-x   - hdfs   hdfs            0 2020-11-18 14:40 /hdp
drwxr-xr-x   - mapred hdfs            0 2020-11-18 14:40 /mapred
drwxrwxrwx   - mapred hadoop          0 2020-11-18 14:40 /mr-history
drwxr-xr-x   - hdfs   hdfs            0 2020-11-18 14:40 /ranger
drwxrwxrwx   - hdfs   hdfs            0 2020-11-18 14:42 /tmp
drwxr-xr-x   - hdfs   hdfs            0 2020-11-18 14:40 /user
[ranger@master root]$ hdfs dfs -mkdir /user/test1                                                       没有写的权限
mkdir: Permission denied: user=ranger, access=WRITE, inode="/":hdfs:hdfs:drwxr-xr-x

  7、接下来,我们需要编辑咱们之前自定义的策略,修改ranger用户的权限,如下图所示,首先点击编辑:添加上写的权限

  

[ranger@master root]$ hdfs dfs -mkdir /user/test1

五、Ranger功能介绍-审计日志

  作为一个企业大数据平台,它的基础服务会被大量上层应用使用(例如HDFS,HBase等)。对平台中基础组件对操作进行追溯也是一项必不可少对功能,Ranger就能帮助实现审计日志对功能。Ranger为我们提供了四类审计日志功能,即访问日志,管理员日志,登陆会话日志,插件日志。

   1、访问日志

  访问日志主要记录对是用户对资源对访问情况。还记得刚才使用ranger用户执行了那些HDFS操作吗?现在通过Audit审计菜单进入访问日志页面。

  

   2、管理员日志

  管理员日志主要记录的是管理员的操作,例如新建用户,新建或者修权限策略这些操作都会被管理员日志记录下来。

  

   3、登陆会话日志

  登陆会话日志会记录所有用户的登陆行为,包括登陆人,登陆方式,登陆时间,登陆人的IP地址等信息。

  

   4、插件日志

  Ranger的插件会定期从管理门户获取权限策略,插件日志就记录了这些插件同步策略的轨迹。什么插件在哪个时间点更新何种策略都能清晰的在日志中体现。

  

  推荐:需要租用云服务器,域名等其他服务的可以扫描下方二维码,价格优惠,华为云服务:

        

 

posted @ 2020-11-20 15:45  人走茶良  阅读(6766)  评论(0编辑  收藏  举报
推荐:华为云