Ranger简述


发布于 2024-04-06 / 111 阅读 / 0 评论 /
官网介绍:Apache Ranger is a framework to enable, monitor and manage comprehensive data security across the Hadoop platform.

1.Ranger概述

Apache Ranger提供集中式的权限管理框架,可以对Hadoop生态中的各个组件进行细粒度的权限访问控制,并且提供了Web UI方便管理员操作。

Ranger主要有以下功能:

(1)提供细粒度的权限控制,可到列级。

(2)基于访问策略的权限模型。

(3)权限控制插件式,统一方便的策略管理。

(4)支持审计日志,可以记录各种操作的审计日志,提供统一的查询接口和界面。

(5)丰富的组件支持(HDFS、HBASE、HIVE、YARN、KAFKA、STORM等)

(6)支持和Kerberos的集成。

(7)提供了Rest接口供二次开发。

2.Ranger架构

Ranger的总体架构如下图所示:

从上图可看出,Ranger主要由三个组件组成:

(1)Ranger Admin:您可以创建和更新安全访问策略,这些策略被存储在数据库中。各个组件的Plugin定期对这些策略进行轮询。

(2)Ranger Plugins:Plugin嵌入在各个集群组件的进程里,是一个轻量级的Java程序。例如,Ranger对Hive的组件,就被嵌入在Hiveserver2里。这些Plugin从Ranger Admin服务端拉取策略,并把它们存储在本地文件中。当接收到来自组件的用户请求时,对应组件的Plugin会拦截该请求,并根据安全策略对其进行评估。

(3)Ranger UserSync:Ranger提供了一个用户同步工具。您可以从Unix或者LDAP中拉取用户和用户组的信息。这些用户和用户组的信息被存储在Ranger Admin的数据库中,可以在定义策略时使用。

2.1.Ranger Plugin

系统插件主要负责三件事:定期从RangerAdmin拉取策略;根据策略执行访问决策树;实时记录访问审计。

多数的系统在实现时都有考虑功能扩展形的问题,一般会为核心的模块暴露出可扩展的接口,访问控制模块也不例外。Ranger Plugin正是通过实现访问控制接口,将自己的逻辑嵌入到各个系统中。下表列出了Ranger Plugin对所支持的紫铜的扩展接口。

Service

Extensible Interface

Ranger Implement Class

HDFS

org.apache.hadoop.hdfs.server.namenode.INodeAttributeProvider

org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer

HBase

org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interface

org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor

Hive

org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizerFactory

org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory

Sqoop

org.apache.sqoop.security.AuthorizationValidator

org.apache.ranger.authorization.sqoop.authorizer.RangerSqoopAuthorizer

Storm

org.apache.storm.security.auth.IAuthorizer

org.apache.ranger.authorization.storm.authorizer.RangerStormAuthorizer

Solr

org.apache.solr.security.AuthorizationPlugin

org.apache.ranger.authorization.solr.authorizer.RangerSolrAuthorizer

Kafka

kafka.security.auth.Authorizer

org.apache.ranger.authorization.kafka.authorizer.RangerKafkaAuthorizer

Knox

org.apache.knox.gateway.deploy.ProviderDeploymentContributorBase

org.apache.ranger.authorization.knox.deploy.RangerPDPKnoxDeploymentContributor

Kylin

org.apache.kylin.rest.security.ExternalAclProvider

org.apache.ranger.authorization.kylin.authorizer.RangerKylinAuthorizer

YARN

org.apache.hadoop.yarn.security.YarnAuthorizationProvider

org.apache.ranger.authorization.yarn.authorizer.RangerYarnAuthorizer

Atlas

org.apache.atlas.authorize.AtlasAuthorizer

org.apache.ranger.authorization.atlas.authorizer.RangerAtlasAuthorizer

各个Ranger Plugin的安装也有所不同:HDFS安装插件在NameNode节点;HBase安装插件在MasterServer和RegionServer;Hive安装在HiveServer2……。

2.2.辅助组件

Ranger架构中还包含KMS和TAG。

2.2.1.KMS

Hadoop透明加密,全称Hadoop Key Management Serve。是一个基于HadoopKeyProvider API编写的密钥管理服务器。RangerKMS就是对KMS的策略管理和密钥管理,使用keyadmin用户登录。

2.2.2.TAG

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

3.权限模型

访问权限无非是定义了“用户-资源-权限”这三者之间的关系,Ranger基于策略来抽象这种关系,进而延伸出自己的权限模型。

3.1.用户

由User或Group来表达,User代表访问资源的用户,Group代表用户所属的用户组。

3.2.资源

不同的组件对应的业务资源是不一样的。比如:HDFS的FilePath;HBase的Table、Column-family、Column;Hive的Database、Table、Column;Yarn的是Queue。

3.3.权限

由(AllowACL, DenyACL)来表达,类似白名单和黑名单机制,AllowACL用来描述允许访问的情况,DenyACL用来描述拒绝访问的情况,不同的组件对应的权限也是不一样的。如下表所示:

插件

权限列表

HDFS

Read、Write、Execute

HBase

Read、Write、Create、Admin

Hive

Select、Create、Update、Drop、Alter、Index、Lock、Read、Write、ALL

Yarn

submit-app、admin-queue

不同插件对应不同的权限项,具体可查看Ranger Plugin源码。

3.4.权限管理流程

Ranger权限管理遵循以下流程,主要包含六项工作:

(1)Ranger Admin创建服务service。

(2)Ranger Admin创建策略policy。

(3)Ranger Plugin插件拉取策略。

(4)Ranger Plugin对用户访问请求鉴权:show connector。

(5)Ranger Plugin插件记录审计日志audit。

(6)Ranger Admin查看审计日志audio。