前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Ranger对Kudu进行细粒度授权

使用Ranger对Kudu进行细粒度授权

作者头像
大数据杂货铺
发布2021-03-09 18:11:21
1.2K0
发布2021-03-09 18:11:21
举报
文章被收录于专栏:大数据杂货铺大数据杂货铺

在2017年,当Kudu作为CDH的一部分首次引入时,它不支持任何形式的授权,因此仅满足空白且不需要安全的用例。在CDH 5.11(Kudu 1.3.0)中添加了粗粒度的授权和身份验证,这使得可以仅对可以应用Apache Sentry策略的Apache Impala进行访问限制,从而启用了更多的用例。接着,Sentry直接集成在CDH 6.3中,使客户可以使用任何查询方法以相同的特权访问Kudu。最后,在CDP Private Cloud Base 7.1.5和7.2.6中,Kudu与Ranger完全集成。在本文中,我们将介绍其工作原理以及设置方法。

怎么运行的

Ranger由具有Web UI和REST API的管理服务器组成,管理员可以使用REST API创建策略。这些策略存储在数据库中,并由运行在Kudu Masters上的Ranger插件定期提取和缓存。

Ranger插件负责根据缓存的策略授权请求。Ranger插件仅在Java中可用,因为大多数Hadoop生态系统项目(包括Ranger)都是用Java编写的。与我们在C ++中重新实现的Sentry瘦客户端不同,Ranger插件本身在本地处理策略的评估(比Sentry策略更加丰富和复杂),因此我们决定不在C ++中重新实现。每个Kudu Master都产生一个JVM子进程,该子进程实际上是Ranger插件的包装,并通过命名管道与其进行通信。

使用Ranger设置Kudu

在Cloudera Manager中为Kudu设置Ranger授权非常简单。如果Ranger和Kudu都安装在CDP中,则需要在Kudu的配置中选择Ranger服务。

Cloudera Manager将自动为Kudu配置Ranger,反之亦然。其余的Ranger特定选项无需更改。在后台,为Kudu创建了几个可自定义的配置文件(ranger-kudu-security.xml,ranger-kudu-policymgr-ssl.xml和ranger-kudu-audit.xml)。

建立策略

设置完集成后,就该创建一些策略了,因为现在仅允许受信任的用户执行任何操作。其他所有人都被锁定。可以在Ranger中为Kudu设置基于资源的访问控制(RBAC)策略,但是Kudu当前不支持基于标签的策略、行级过滤或列掩码。

要创建您的第一个策略,请登录到Ranger Admin(可通过从Cloudera Manager导航到Ranger服务,然后在该服务的标签导航面板中单击“ Ranger Admin Web UI”来访问它),然后单击“ cm_kudu”服务,然后点击右上角的“添加新策略”按钮。您需要命名策略并设置将应用到的资源。Kudu不支持数据库,但是启用了Ranger集成后,它将把表名中第一个句点之前的部分作为数据库名,如果表名不包含句点,则默认为“默认”(这是可以使用“ gflagfile的主高级配置代码段(安全阀)”中的-ranger_default_database标志进行配置)。

资源中没有隐式层次结构,这意味着授予db = foo的特权并不意味着授予foo.bar的特权。要创建适用于foo数据库中所有表和所有列的策略,您需要为db = foo-> tbl = *-> col = *创建策略。要创建以foo开头的表,只需在db = foo上授予“ create”特权,并且不需要表级特权。仍应在db = foo-> tbl = *上授予元数据,因为需要检查新创建的表是否存在,这是表创建的最后一步。

有关执行操作所需特权的列表,请参阅我们的文档。

一旦在Ranger中设置了策略,Kudu将在使用任何客户端授权操作时应用这些策略。但是,Impala的工作原理有所不同。

在Impala中访问Kudu表

Impala不仅是Kudu客户端,它还是一个支持多个存储系统的分析数据库,包括但不限于Kudu。它还会在执行之前使用Ranger授权所有动作。因此,不需要第二个特定于Kudu的授权步骤,并且“ Impala”用户在Kudu中被列入白名单,从而在Impala尝试执行操作时绕过Kudu授权。

重要的是要注意,Kudu在内部存储其所有元数据,而Impala依赖于Hive Metastore。因此,Impala会针对Hadoop SQL存储库中的策略授权请求,包括对Kudu支持的表的请求。

让我们以一个常见用例为例:几个Apache Spark ETL作业在Kudu中存储数据。然后,其他Spark作业以及数据分析人员也会通过临时Impala查询访问此数据。在这种情况下,可以设置Kudu策略,以允许ETL用户读写所有表中的数据,并且为不同的人群定义了单独的Hadoop SQL策略,以通过Impala读取特定的数据库或表。

表的所有权

Ranger支持通过特殊的{OWNER}用户向表所有者授予特权。例如,您可以授予db = *-> table = *-> column = *上的{OWNER}的ALL特权并委派admin(更改表的所有者是必需的)。这样,您的用户将能够在他们创建的表上执行任何操作,而不必显式地为每个表分配特权。当然,他们将需要被授予db = *或特定数据库上的CREATE特权,才能真正创建自己的表。表是创建表的用户自动拥有的,尽管可以将其所有者更改为alter table操作的一部分。

结论

安全性是数据平台中非常重要的部分,我们在Cloudera,我们了解这些。我们一直在努力使CDP更加安全,并且在保持安全性的同时更易于管理。在Kudu中使用Ranger进行细粒度的授权是这项工作的最新步骤,并且在不久的将来还会有更多事情要做,因此请留意未来的帖子,我们将在其中分享有关下一步工作的更多信息。

原文作者:Attila Bukor

原文链接:https://blog.cloudera.com/fine-grained-authorization-with-apache-kudu-and-apache-ranger/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 怎么运行的
  • 使用Ranger设置Kudu
  • 建立策略
  • 在Impala中访问Kudu表
  • 表的所有权
  • 结论
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档