文章目录

  • 1.Ranger简介
  • 2.Ranger构成
  • 2.1 内部依赖
  • 2.2 内部组件
  • 2.3 Ranger插件(version-2.0)
  • 3.Ranger架构
  • 4.Ranger+Knox+Kerberos架构
  • 5.Ranger权限模型
  • 6.Ranger策略评估
  • 7.Ranger编译、打包、集成
  • 8.Ranger API
  • 9.Ranger权限映射表
  • 10.Ranger技术体系梳理


1.Ranger简介

  • Apache Ranger是大数据领域一个集中式安全管理框架,并解决授权和审计,是Hadoop生态的综合安全管理组件。
  • 通过制定策略(policies)实现对诸如HDFS、Yarn、Hive、Kafka、HBase、Storm等组件进行细粒度的权限控制
  • 通过Ranger控制台,管理员通过配置策略来控制用户访问权限,比如,可以控制用户读取HDFS文件权限,甚至可以控制用户对Hive某列的访问权限。

2.Ranger构成

2.1 内部依赖

依赖

描述

JDK8

支持RangerAdmin、RangerKMS正常执行

Python2.7

Ranger自动化安装

Maven3.3

Ranger编译环境

RDMS

存储Ranger授权策略、用户/组、审核日志信息

Ambari Infra(Solr)HDFS

(可选)存储审计日志

Kerberos

(可选)认证系统

注: 1

2.2 内部组件

组件

描述

Ranger Admin

用户管理策略,提供WebUI和RestFul接口

Ranger UserSync

用于从Unix系统、FILE、LDAP/AD用户/组,同步用户/组到RangerAdmin

Ranger TagSync

同步Atlas中的Tag信息,基于标签的权限管理,当一个用户的请求涉及到多个应用系统中的多个资源的权限时,可以通过只配置这些资源的tag方便快速的授权

Ranger KMS

管理Ranger密钥信息

cenyos 为hadoop用户增加管理员权限 hadoop权限管理组件_HDFS

2.3 Ranger插件(version-2.0)

组件

版本

插件安装节点

资源类型

权限类型

HDFS

3.1.1

Name Node

Path

Read,Write,Execute

HBASE

2.0.2

Master,Regional Server

Table,Column-family,Column

Read,Write,Create,Admin

HIVE

3.1.0

HiveServer2

database,table,Column

select,update,Create,Drop,Alter,Index,Lock,All,

Read,Write,ReplAdmin,Service Admin,Temporary UDF Admin,Refresh

YARN

3.1.3

Resource Manager

Queue

submit-app,admin-queue

KNOX

1.2.0

Knox gateway

STORM(授权需要Kerberos认证)

1.2.0

ALL/Cluster

Topology

Submit Topology,File Upload,File Download,Kill Topology,

Rebalance,Activate,Deactivate,Get Topology Conf,Get Topology,Get User Topology,Get Topology Info,Update New Credential

SOLR(授权需要Kerberos认证)

7.7.1

ALL/Cluster

KAFKA(授权需要Kerberos认证,

删除all-topic策略中public组)

2.0.0

ALL/Cluster

topoc

Publish,Consume,Configure,Describe,

Create,Delete,Describe Configs,Alter Configs

NIFI

1.8.0(未在pom.xml找到,参考ranger1.1.0支持版本)

NA

KYLIN

2.5.0

ALL/Stand-alone

NIFI-REGISTRY

(未在pom.xml找到)

-

SQOOP

1.99.7

ALL/Stand-alone

ATLAS

2.0.0

ALL/Stand-alone

ELASTICSEARCH

6.2.2

ALL/Cluster

PRESTO

310

-

OZONE

0.4.0

-

注: Apache atlas 是Hadoop社区为解决Hadoop生态系统的元数据治理问题而产生的开源项目,它为Hadoop集群提供了包括数据分类、集中策略引擎、数据血缘、安全和生命周期管理在内的元数据治理核心能力。

ranger-release-ranger-2.0.0/pom.xml 显示依赖组件版本

cenyos 为hadoop用户增加管理员权限 hadoop权限管理组件_白名单_02

3.Ranger架构

Ranger授权本质上是:通过读取安装组件时生成的配置文件及组件自带的jar包,通过hook方式调用各个组件服务达到权限管理
在安装服务组件插件过程中,当执行./enable-xxx-plugin.sh时,主要执行了以下三个步骤:

第一,将插件自带的conf更新到系统安装的服务conf下;
第二,将插件自带的lib更新到系统安装的服务lib下;
第三,将install.properties生成.xml文件,更新到系统安装的服务conf下;

cenyos 为hadoop用户增加管理员权限 hadoop权限管理组件_Ranger_03

4.Ranger+Knox+Kerberos架构

cenyos 为hadoop用户增加管理员权限 hadoop权限管理组件_HDFS_04


参考:https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=57901344

5.Ranger权限模型

权限模型

描述

用户

User/Group,User代表访问资源的用户,Group代表用户所属的用户组

资源

Resource,不同组件资源差异

HDFS:Resource Path;

HBase:[Table,Column-family,Column]

权限

AllowACL/DenyACL类似白名单和黑名单机制,AllowACL用来描述允许访问的情况,DenyACL用来描述拒绝访问的情况,不同的组件对应的权限也是不一样的

Service = List<Policy>
Policy =  List<Resource> + AllowACL + DenyACL
AllowACL = List<AccessItem> allow + List<AccssItem> allowException
DenyACL = List<AccessItem> deny + List<AccssItem> denyException
AccessItem = List<User/Group> + List<AccessType>

一条Policy有四组AccessItem:allow、allowException、deny、denyException,优先级由高到低依次是:

denyException >> deny >> allowException >> allow
黑名单排除优先级 >> 黑名单 >> 白名单排除优先级 >> 白名单
黑名单优先级高于白名单,黑名单排除优先级高于黑名单,白名单排除优先级高于白名单

6.Ranger策略评估

cenyos 为hadoop用户增加管理员权限 hadoop权限管理组件_Ranger_05


注: Ranger的联合授权模型-[HDFS+Yarn]参考:

https://blog.csdn.net/Happy_Sunshine_Boy/article/details/103368889https://cwiki.apache.org/confluence/display/RANGER/Deny-conditions+and+excludes+in+Ranger+policies

7.Ranger编译、打包、集成

  • 以下两篇博客,详细描述了Ranger 编译、打包、集成Ambari的过程
  • Ranger0.7.0 编译、打包参考:
  • Ranger2.0.0 编译参考:
  • Ambari2.7.3-HDP3.0.1-Ranger版本1.1.0升级2.0.0:

8.Ranger API

  • 《Apache Ranger Public REST APIs-Server-Policy使用Postman测试》描述了Ranger中对应服务和策略的REST API
  • 《Apache Ranger Public REST APIs-User-Group使用Postman测试》 描述了Ranger中对应用户和用户组的REST API

9.Ranger权限映射表

Hadoop Component Commands to Ranger Permission Mapping

  • Ambari2.7.3+HDP3.0.1 大数据集群组件命令与Ranger权限映射表: