大数据运维---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的插件会定期从管理门户获取权限策略,插件日志就记录了这些插件同步策略的轨迹。什么插件在哪个时间点更新何种策略都能清晰的在日志中体现。
推荐:需要租用云服务器,域名等其他服务的可以扫描下方二维码,价格优惠,华为云服务: