Hadoop生态圈-Ranger数据安全管理框架
Hadoop生态圈-Ranger数据安全管理框架
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.Ranger简介
Apache Ranger是一款被设计成全面掌握Hadoop生态系统的数据安全管理框架。它为Hadoop生态系统中众多的组件提供了一个统一的数据授权和管理界面。使得系统管理员只需面对Ranger一个系统,就能对Hadoop整个生态体系进行数据授权,数据管理与审计。详情请参考官网:http://ranger.apache.org/index.html。
Ranger从架构上看主要由三大部分组成:
1>.User sync:
Ranger系统有自己的内部用户,从门户系统的登陆到权限策略的分配都是基于这些内部用户进行的。Ranger是一个统一Hadoop生态系统的安全管理框架,所以它面对的是Hadoop生态的众多组件。而这些组件使用的是服务器上的Linux用户,所以我们需要映射一份linux用户数据成为Ranger的内部用户。用户同步服务就是专门来做这件事情的,Ranger 通过用户同步服务实时的从Linux服务器中同步用户数据。
2>.Admin Portol:
管理员门户是一个Web UI控制台,用户通过它可以创建和更新权限策略。每个组件(如HDFS,HBase等)的插件定期以轮询的方式查询这些策略。门户系统还包括一个审计系统,mooed组件的插件会定期向审计系统发送收集到的操作日志。
3>.Plugins:
Ranger通过插件机制来实现并扩展自己的能力,这些插件本质上一些嵌入在每个集群服务中的轻量级Java程序。例如Apache Hive的Ranger插件就是嵌入在HiveServer2里面。这些插件会拦截请求并进行权检查。同时这些插件还能收集用户的操作日志并发送给管理门户的审计系统。
二.安装Ranger
现在开始安装Ranger组件,我们依旧会借助Ambari来进行安装。
1>.登陆Ambari,通过点击首页左下角的Actions按钮我们会看到新建服务选项,如下图所示:
2>.点击新建服务之后会进入新建服务向导页面。我们勾选Ranger和Ranger KMS这两个服务并点击下一步,如下图所示:
3>.接着我们会看到一条提示信息,要求我们配置Ambari-Server的JDBC驱动信息,如下图所示。因为Ranger需要使用关系型数据库存储一些元数据信息,这里我们选择使用MySQL数据库。将MySQL驱动jar包上传到Ambari-Server所在的服务器,然后执行以下命令。
[root@node101 ~]# ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
Using python /usr/bin/python
Setup ambari-server
Copying /usr/share/java/mysql-connector-java.jar to /var/lib/ambari-server/resources
If you are updating existing jdbc driver jar for mysql with mysql-connector-java.jar. Please remove the old driver jar, from all hosts. Restarting services that need the driver, will automatically copy the new jar to the hosts.
JDBC driver was successfully initialized.
Ambari Server 'setup' completed successfully.
[root@node101 ~]#
[root@node101 ~]# ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar #这条命令的来源于下图的提示信息!
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
Server version: 5.6. MySQL Community Server (GPL) Copyright (c) , , 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 |
+--------------------+
rows in set (0.00 sec) mysql> CREATE DATABASE ranger;
Query OK, row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON ranger.* TO 'ranger'@'node101.yinzhengjie.org.cn' IDENTIFIED BY 'yinzhengjie' WITH GRANT OPTION;
Query OK, rows affected (0.01 sec) mysql> FLUSH PRIVILEGES;
Query OK, 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 |
+----------------------------+--------+-------------------------------------------+
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
Server version: 5.6. MySQL Community Server (GPL) Copyright (c) , , 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 |
+--------------------+
rows in set (0.00 sec) mysql> quit
Bye
[root@node101 ~]#
[root@node101 ~]# mysql -h node101.yinzhengjie.org.cn -uranger -pyinzhengjie #在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
Server version: 5.6. MySQL Community Server (GPL) Copyright (c) , , 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, row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON rangerkms.* TO 'rangerkms'@'node101.yinzhengjie.org.cn' IDENTIFIED BY 'yinzhengjie' WITH GRANT OPTION;
Query OK, rows affected (0.01 sec) mysql> FLUSH PRIVILEGES;
Query OK, 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 |
+----------------------------+-----------+-------------------------------------------+
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
Server version: 5.6. MySQL Community Server (GPL) Copyright (c) , , 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 |
+--------------------+
rows in set (0.00 sec) mysql> quit
Bye
[root@node101 ~]#
[root@node101 ~]# mysql -h node101.yinzhengjie.org.cn -urangerkms -pyinzhengjie #授权成功后,别忘记验证授权是否生效!
接着往下拉,需要你输入一个密码,如下图所示,输入后点击下一步:
9>.配置完毕后,会弹出一个Dependent Configurations对话框,如下图所示,点击OK即可~
10>.忽略警告(我的电脑内存有限,分配的少点仅仅用于测试)
11>.确认配置无误后,点击Depoly按钮
12>. 安装服务成功
13>.点击完成
14>.安装完成后,需要陆续重启已经部署的服务
三.配置服务
安装完毕之后我们需要配置Ranger以让它能够正常工作,通过点击Configs按钮来到配置界面。如下图所示,Ranger到配置项有很多分为了六大类,他们分别是管理员配置,用户信息配置,插件配置,审计配置,标签同步配置和高级配置。这里我们主要关注插件配置和审计配置,其他配置项保持默认即可。
1>.对Ranger的插件配置
2>.对Ranegr的审计配置
3>.保存配置信息
4>.点击保存
5>.点击Proceed Anyway
6>.点击ok
7>.如下图所示,按照提示重启相应的服务即可
8>.重启相应的服务之后,我们就可以去看看Ranger的Web UI管理控制台啦
四.Ranger功能介绍-查看Ranger用户
1>.如下图所示,通过Ambari的Quick Links功能进入Ranger的管理控制台,输入默认的用户名和密码进行登陆(默认的用户名和密码均为“admin”)。
2>.单击Settings设置按钮进入Ranger用户管理界面
3>.如下图所示,点击Setting之后,在这里可以看到Ranger的所有用户。我们发现Ranger已经预建好来一批用户,这些用户是不是很眼熟呢?他们是Ambari用户管理里面的集群组件用户如出一辙。没错,这些用户就是从Hadoop集群的Linux用户同步过来的。
Ranger将用户分为两类来源,内部用户和外部扩展用户。 内部用户:
是指Ranger自己单方面创建的用户,主要用来做系统内部管理相关工作,与外部用户没有关联。 外部用户:
是指通过同步程序从集群服务中同步而来的用户,是Ranger用户和集群服务用户的一层映射,主要用于权限策略的分配。如上图所示,admin用户属于内部用户,而所有同步过来的集群服务用户均属于外部扩展用户。
五.Ranger功能介绍-权限策略
1>.现在我们开始介绍如何通过Ranger进行数据授权。如下图所示,首先单击“Access Manager”进入服务管理页面。
2>.如下图所示,我们会看到一个格栅布局的列表,他们是Ranger目前能够支持的所有子系统。因为在安装Ranger的时候已经开启了HDFS的插件,所以我们在HDFS组件下可以看到“yinzhengjie_cluster_hadoop”服务。它是Ranger根据开启的插件预建的服务项,以Ambari集群名称 + 组件名称的规则命名。
3>.点击上图中的“yinzhengjie_cluster_hadoop”进入HDFS的权限策略列表页面。如下图所示,这里可以查看,新建,修改根删除HDFS的权限策略,单击“Add New Pollicy”进入新建策略页面:
4>.点击上图中的“Add New Pollicy”按钮后,就可以进入下图的界面,授权策略页面分为Pollicy Detail和Allow Conditions两个部分,下图中针对各个参数都进行了标注:
5>.如上图所示,点击“Add”后我们就会在HDFS的策略界面中看到对应的规则,如下图所示:
6>.接下来我们需要验证下权限策略是否生效,首先通过ssh登陆到集群服务器并切换成ranger用户。具体操作如下:
[root@node101 ~]# hostname
node101.yinzhengjie.org.cn
[root@node101 ~]#
[root@node101 ~]# id ranger
uid=(ranger) gid=(hadoop) groups=(hadoop),(ranger)
[root@node101 ~]#
[root@node101 ~]# su ranger
[ranger@node101 root]$
[ranger@node101 root]$ hdfs dfs -ls /
Found items
drwxrwxrwx - yarn hadoop -- : /app-logs
drwxr-xr-x - yarn hadoop -- : /ats
drwxr-xr-x - hdfs hdfs -- : /hdp
drwxr-xr-x - mapred hdfs -- : /mapred
drwxrwxrwx - mapred hadoop -- : /mr-history
drwxr-xr-x - hdfs hdfs -- : /ranger
drwxrwxrwx - hdfs hdfs -- : /tmp
drwxr-xr-x - hdfs hdfs -- : /user
drwxrwxrwx - hdfs hdfs -- : /yinzhengjie
[ranger@node101 root]$
[ranger@node101 root]$ hdfs dfs -mkdir /test
mkdir: Permission denied: user=ranger, access=WRITE, inode="/test":hdfs:hdfs:drwxr-xr-x #看到没?说是权限被拒绝!这是符合我们预期的,因为我们给他ranger用户授权仅仅授权了READ。创建文件属于写操作!
[ranger@node101 root]$
7>.接下来,我们需要编辑咱们之前自定义的策略,修改ranger用户的权限,如下图所示,首先点击编辑:
8>.修改ranger的策略为读写,如下图所示,别忘记点击保存哟!
9>.修改授权成功后,我们继续在之前的终端执行相同的操作(不需要退出之前的终端,只要授权修改后立即就生效啦!),发现可以成功创建文件和删除文件,具体操作如下:
[ranger@node101 root]$ hostname
node101.yinzhengjie.org.cn
[ranger@node101 root]$
[ranger@node101 root]$ hdfs dfs -mkdir /test
[ranger@node101 root]$
[ranger@node101 root]$ hdfs dfs -ls /
Found items
drwxrwxrwx - yarn hadoop -- : /app-logs
drwxr-xr-x - yarn hadoop -- : /ats
drwxr-xr-x - hdfs hdfs -- : /hdp
drwxr-xr-x - mapred hdfs -- : /mapred
drwxrwxrwx - mapred hadoop -- : /mr-history
drwxr-xr-x - hdfs hdfs -- : /ranger
drwxr-xr-x - ranger hdfs -- : /test
drwxrwxrwx - hdfs hdfs -- : /tmp
drwxr-xr-x - hdfs hdfs -- : /user
drwxrwxrwx - hdfs hdfs -- : /yinzhengjie
[ranger@node101 root]$
[ranger@node101 root]$ hdfs dfs -rm /test #注意这里删除目录时,我们千万别加“-R”参数,因为我们在给ranger用户授权时,指定的路径为根路径,并没有勾选递归按钮!
rm: `/test': Is a directory
[ranger@node101 root]$
[ranger@node101 root]$ hdfs dfs -ls /
Found items
drwxrwxrwx - yarn hadoop -- : /app-logs
drwxr-xr-x - yarn hadoop -- : /ats
drwxr-xr-x - hdfs hdfs -- : /hdp
drwxr-xr-x - mapred hdfs -- : /mapred
drwxrwxrwx - mapred hadoop -- : /mr-history
drwxr-xr-x - hdfs hdfs -- : /ranger
drwxr-xr-x - ranger hdfs -- : /test
drwxrwxrwx - hdfs hdfs -- : /tmp
drwxr-xr-x - hdfs hdfs -- : /user
drwxrwxrwx - hdfs hdfs -- : /yinzhengjie
[ranger@node101 root]$
六.Ranger功能介绍-审计日志
作为一个企业大数据平台,它的基础服务会被大量上层应用使用(例如HDFS,HBase等)。对平台中基础组件对操作进行追溯也是一项必不可少对功能,Ranger就能帮助实现审计日志对功能。Ranger为我们提供了四类审计日志功能,即访问日志,管理员日志,登陆会话日志,插件日志。
1>.访问日志
访问日志主要记录对是用户对资源对访问情况。还记得刚才使用ranger用户执行了那些HDFS操作吗?现在通过Audit审计菜单进入访问日志页面。
2>.管理员日志
管理员日志主要记录的是管理员的操作,例如新建用户,新建或者修权限策略这些操作都会被管理员日志记录下来。
3>.登陆会话日志
登陆会话日志会记录所有用户的登陆行为,包括登陆人,登陆方式,登陆时间,登陆人的IP地址等信息。
4>.插件日志
Ranger的插件会定期从管理门户获取权限策略,插件日志就记录了这些插件同步策略的轨迹。什么插件在哪个时间点更新何种策略都能清晰的在日志中体现。
Hadoop生态圈-Ranger数据安全管理框架的更多相关文章
- Hadoop生态圈-构建企业级平台安全方案
Hadoop生态圈-构建企业级平台安全方案 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 能看到这篇文章的小伙伴,估计你对大数据集群的部署对于你来说应该是手到擒来了吧.我之前分享过 ...
- 【】Apache Ranger剖析:Hadoop生态圈的安全管家
前言 2016年,Hadoop迎来了自己十周岁生日.过去的十年,Hadoop雄霸武林盟主之位,号令天下,引领大数据技术生态不断发展壮大,一时间百家争鸣,百花齐放.然而,兄弟多了不好管,为了抢占企业级市 ...
- hadoop生态圈介绍
原文地址:大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分 ...
- 大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
Technorati 标记: hadoop,生态圈,ecosystem,yarn,spark,入门 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用 ...
- Hortworks Hadoop生态圈简介
Hortworks 作为Apache Hadoop2.0社区的开拓者,构建了一套自己的Hadoop生态圈,包括存储数据的HDFS,资源管理框架YARN,计算模型MAPREDUCE.TEZ等,服务于数据 ...
- Hadoop生态圈-单点登录框架之CAS(Central Authentication Service)部署
Hadoop生态圈-单点登录框架之CAS(Central Authentication Service)部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.CAS简介 CAS( ...
- Hadoop生态圈-开启Ambari的Kerberos安全选项
Hadoop生态圈-开启Ambari的Kerberos安全选项 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在完成IPA-Server服务的安装之后,我们已经了解了他提供的基础功 ...
- Hadoop生态圈-Zookeeper的工作原理分析
Hadoop生态圈-Zookeeper的工作原理分析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 无论是是Kafka集群,还是producer和consumer都依赖于Zoo ...
- 【】Hadoop生态圈介绍
Technorati 标记: hadoop,生态圈,ecosystem,yarn,spark,入门 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用 ...
随机推荐
- EF code first出现错误:列名 Discriminator 无效
转载:https://blog.csdn.net/lanse_my/article/details/38128355 前几天使用code first碰到错误:列名 'Discriminator' 无效 ...
- Dirichlet's Theorem on Arithmetic Progressions POJ - 3006 线性欧拉筛
题意 给出a d n 给出数列 a,a+d,a+2d,a+3d......a+kd 问第n个数是几 保证答案不溢出 直接线性筛模拟即可 #include<cstdio> #inclu ...
- bzoj 3674: 可持久化并查集加强版 (启发式合并+主席树)
Description Description:自从zkysb出了可持久化并查集后……hzwer:乱写能AC,暴力踩标程KuribohG:我不路径压缩就过了!ndsf:暴力就可以轻松虐!zky:…… ...
- requirements文件
将一个环境中安装的所有的包在另一个环境中安装 1.生成文件列表 pip freeze > requirements.txt 2.将该文件放入到新环境中,安装 pip install -r req ...
- Hdoj 1548.A strange lift 题解
Problem Description There is a strange lift.The lift can stop can at every floor as you want, and th ...
- SCOI2008着色方案(记忆化搜索)
有n个木块排成一行,从左到右依次编号为1~n.你有k种颜色的油漆,其中第i 种颜色的油漆足够涂ci 个木块.所有油漆刚好足够涂满所有木块,即 c1+c2+...+ck=n.相邻两个木块涂相同色显得很难 ...
- 关于一些没做出来的SBCF题
这里是一些我SB没做出来的CF水题. 其实这些题思维量还不错,所以写在这里常来看看…… 不一定每题代码都会写. CF1143C Queen 其实只要注意到如果一个点开始能被删,那一直就能被删:一个点开 ...
- goroutine与调度器
29 November 2013 by skoo 我们都知道Go语言是原生支持语言级并发的,这个并发的最小逻辑单元就是goroutine.goroutine就是Go语言提供的一种用户态线程,当然这种用 ...
- spring代码异常捕获到logback logging.config=logback-spring.xml文件中不能输出异常e.printStackTrace
在spring中使用logging.config=logback-spring.xml将日志转存到了文件中.但是代码中的捕获的异常无法用 e.printStackTrace 打印到文件中.使用如下方法 ...
- js 刷新
方法一: location.reload 重新加载 location.reload(); 如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来 ...