Bootstrap

ranger_Apache Ranger插件的美丽简洁

ranger

ranger

如果您在这里,您已经知道什么是Apache Ranger 。 它是在Hadoop框架中管理安全性的最流行(即使不是唯一)的方法。 它与Active Directory,Kerberos和其他各种身份验证集成在一起,但是我认为最有趣的功能是其授权支持。 作为Hadoop生态系统的一部分,人们会对它对Hadoop生态系统中的大多数框架(Hive,HBase,HDFS等)具有内建的支持(通过插件)感到惊讶,但是,我发现旋转它实际上非常容易自己的游侠自定义插件。

这篇文章将重点介绍Ranger插件中设计的简单性,并展示为自己构建一个插件有多么容易。 作为示例,我们将构建一个Ranger插件,用于管理对使用Akka HTTP编写的简单HTTP服务的访问。

Note : You are not required to know about Akka HTTP to follow this post. All you needed to know is that Akka HTTP is just a way (albeit, a great way) to build HTTP services

这篇文章后面的代码分为两个存储库:

  1. Ranger HTTP插件
  2. 护林员托管的Akka HTTP服务

写一个插件

为了重申我们在这里试图做的事情,我们将编写一个REST服务,并让Ranger管理它的授权。

编写Ranger插件实际上是两部分的问题–编写服务器端组件应用程序端组件

  1. 服务器端组件是驻留在Ranger端的代码/配置。
  2. 应用程序端组件是驻留在我们的REST服务中的代码,该代码调用Ranger服务并检查应用程序的最终用户是否有权访问他所请求的资源。

我们将详细研究这两件事。 让我们尝试首先编写服务器端组件。

1.服务器端组件:

作为启发,如果我们打开Ranger代码库,我们可以看到一些内置插件。

Apache Ranger插件

如图所示,在Ranger代码库中,我们有许多插件,我们想添加自己的插件。

Apache Ranger插件

放大上图,插件上的服务器端组件将意味着编写一个

  1. servicedef配置
  2. 继承RangerBaseService的类

因此,实际上需要在服务器端实现“一个”配置和“一个”类。

Apache Ranger插件
1. SERVICEDEF配置

让我们看一下Hive的servicedef配置:

;