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
这篇文章后面的代码分为两个存储库:
写一个插件
为了重申我们在这里试图做的事情,我们将编写一个REST服务,并让Ranger管理它的授权。
编写Ranger插件实际上是两部分的问题–编写服务器端组件和应用程序端组件。
- 服务器端组件是驻留在Ranger端的代码/配置。
- 应用程序端组件是驻留在我们的REST服务中的代码,该代码调用Ranger服务并检查应用程序的最终用户是否有权访问他所请求的资源。
我们将详细研究这两件事。 让我们尝试首先编写服务器端组件。
1.服务器端组件:
作为启发,如果我们打开Ranger代码库,我们可以看到一些内置插件。
如图所示,在Ranger代码库中,我们有许多插件,我们想添加自己的插件。
放大上图,插件上的服务器端组件将意味着编写一个
- servicedef配置
- 继承
RangerBaseService
的类
因此,实际上需要在服务器端实现“一个”配置和“一个”类。
1. SERVICEDEF配置
让我们看一下Hive的servicedef配置: