Sentry到Ranger—简明指南

本文涉及的产品
访问控制,不限时长
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Cloudera Data Platform (CDP)通过合并来自Cloudera Enterprise Data Hub (CDH)和Hortonworks Data Platform (HDP)这两个传统平台的技术,为客户带来了许多改进。CDP 包括新功能以及一些先前存在的安全和治理功能的替代方案。CDH 用户的一项重大变化是将 Sentry 替换为 Ranger 以进行授权和访问控制。

Cloudera Data Platform (CDP)通过合并来自Cloudera Enterprise Data Hub (CDH)Hortonworks Data Platform (HDP)这两个传统平台的技术,为客户带来了许多改进。CDP 包括新功能以及一些先前存在的安全和治理功能的替代方案。CDH 用户的一项重大变化是将 Sentry 替换为 Ranger 以进行授权和访问控制。

对于像 Cloudera 堆栈这样的大数据平台,由多个业务部门和多个用户使用,即使升级小版本也必须是一项精心策划的活动,以减少对用户和业务的影响。因此,在 CDP 中升级到新的主要版本可能会引起犹豫和担忧。访问正确的信息集有助于用户提前准备并消除升级过程中的任何障碍。这篇博文向 CDH 用户提供了 Ranger 作为 CDP Hadoop SQL 策略的 Sentry 替代品的快速概述。

1. 为什么要切换到Ranger

Apache Sentry Hadoop 中特定组件的基于角色的授权模块。它在为 Hadoop 集群上的用户定义和实施不同级别的数据权限时很有用。在CDH中,Apache SentryApache HiveApache ImpalaHadoop SQL组件以及Apache SolrApache KafkaHDFS(仅限于Hive表数据)等其他服务提供了一个独立的授权模块。Sentry 依靠 Hue 进行可视化策略管理,依靠 Cloudera Navigator 来审计 CDH 平台中的数据访问。

另一方面,Apache Ranger 提供了一个全面的安全框架来启用、管理和监控整个 Hadoop 平台的数据安全。它提供了一个集中式平台,可以跨 Sentry 保护的所有 Hadoop 组件以及 Apache Hadoop生态系统中的其他服务(如 Apache HBaseYARNApache NiFi)一致地定义、管理和管理安全策略。此外,Apache Ranger 现在支持公共云对象存储,如 Amazon S3 Azure Data Lake Store (ADLS)Ranger 还通过实时跟踪所有访问请求的集中审核位置,为安全管理员提供对其环境的深入了解。

Apache Ranger 拥有自己的 Web 用户界面 (Web UI),它是通过 Hue 服务提供的 Sentry Web 界面的更好替代方案。Ranger Web UI 也可用于安全密钥管理,使用 Ranger KMS 服务的密钥管理员可以单独登录。Apache Ranger 还提供了非常需要的安全功能,例如开箱即用的列掩码和行过滤。另一个重要因素是 Ranger 中的访问策略可以使用不同的属性(如地理区域、一天中的时间等)在动态上下文中进行自定义。下表给出了 Sentry Ranger 之间功能的详细比较。

图片 1.png

 

2. SentryRanger——一些行为改变

如上所述,Sentry Ranger 是完全不同的产品,在架构和实现上有很大的不同。下面列出了当您从 CDH Sentry 迁移到 CDP 中的 Ranger 时的一些显着行为变化。

·       Sentry 中的继承模型与 Ranger 中的显式模型

o   Sentry 中,对层次结构中的容器对象授予的任何权限都会由其中的基础对象自动继承。例如,如果用户对数据库范围拥有 ALL 权限,则该用户对包含在该范围内的所有基础对象(如表和列)拥有 ALL 权限。因此,授予数据库用户的一项授权将授予对数据库中所有对象的访问权限。

o   Ranger 中,应存在具有必要权限的显式 Hadoop SQL 策略,以便用户访问对象。这意味着,Ranger提供了更细粒度的访问控制。在数据库级别拥有访问权限不会在表级别授予相同的访问权限。并且在表级别获得访问权限不会在列级别授予相同的访问权限。例如,使用 Ranger Hadoop SQL 策略,要向用户授予对所有表和列的访问权限,请使用通配符创建策略,例如数据库→ <数据库名称>、表→ * 和列 → *

图片 2.png

 

·       访问控制实施——SentryRanger

o  Hive Sentry 授权处理通过 HiveServer2 执行的语义钩子发生。每次访问请求都会返回 Sentry Server 进行验证。Impala 中的访问控制检查与 Hive 中的类似。Impala 中的主要区别在于 Impala Catalog 服务器对 Sentry 元数据(权限)的缓存。

图片 3.png

o  CDP Private Cloud Base 中支持基于 Ranger 授权的所有服务都有一个关联的 Ranger 插件。这些 Ranger 插件在客户端缓存访问权限和标签。他们还定期轮询特权和标签存储以了解任何更改。当检测到更改时,缓存会自动更新。这样的实现模型使 Ranger 插件能够完全在服务守护进程内处理授权请求,从而显着提高性能,并在面对服务外的故障时具有弹性。

图片 4.png

 

·       HDFS 访问同步实现——Sentry Vs Ranger

o  Sentry有一个选项可以自动转换 SQL 权限以提供对 HDFS 的访问。这是通过 HDFS-Sentry 插件实现的,该插件允许您为特定 HDFS 目录配置 Sentry 权限与 HDFS ACL 的同步。启用同步后,Sentry 会将数据库和表的权限转换为 HDFS 中底层文件的相应 HDFS ACL。并且可以通过使用 HDFS 命令列出扩展 ACL 来查看这些对 HDFS 文件添加的访问权限。

o   CDP Private Cloud Base 7.1.5 起,引入了一个功能 Ranger Resource Mapping Server (RMS),用于相同的目的。请注意,RMS CDP Private Cloud Base 7.1.4 中作为技术预览可用。Sentry HDFS ACL 同步的实现与 Ranger RMS 处理从 Hive HDFS 的访问策略自动转换的方式不同。但是表级访问的底层概念和授权决策是相同的。请重新阅读这篇Ranger RMS导读博文,以了解有关此新功能的更多信息。

·       SQL HDFS 位置的访问权限 – Sentry Vs Ranger

o   Sentry 中,以下操作需要某个位置的 URI 权限

§ 显式设置表的位置——创建外部表

§ 更改表的位置更改表

§ 从带有位置的表中导入和导出

§   jar 文件创建一个函数

o   Ranger 中,Hadoop SQL 中的“URL”策略或Hive 对象使用的位置的 HDFS 策略可用于此类使用位置的活动的相同效果。要创建函数,需要在 Hadoop SQL 中的“udf”策略中具有适当的权限。

·       Ranger中的特殊实体

o  “public”- 这是 Ranger 中的一个特殊内部组,由系统上存在的任何经过身份验证的用户组成。成员身份是隐含的和自动的。应该注意的是,所有用户都将成为该组的一部分,并且授予该组的任何策略都为每个人提供访问权限。以下是授予此特殊组“public”权限的默认策略。根据安全要求,可以从这些默认策略中删除“public”以进一步限制用户访问。

§  全部数据库 public create权限

§  允许用户自助创建自己的数据库

§  默认数据库表列publiccreate权限

§  允许用户在默认数据库中自助创建表

§  Information_schema 数据库表列 public select权限

§  允许用户查询有关表、视图、列和您的 Hive 权限的信息

o  特殊对象{OWNER} 这应该被视为 Ranger 中的一个特殊实体,它会根据用户的行为附加到用户身上。使用这个特殊对象可以显着简化策略结构。例如,如果用户“bob”创建了一个表,那么“bob”将成为该表的 {OWNER},并且将在所有策略中获得在该表上提供给 {OWNER} 的任何权限。以下是对 {OWNER} 具有权限的默认策略。尽管不建议这样做,但基于安全要求,可以更改对该特殊实体的访问权限。删除默认的 {OWNER} 权限可能需要为每个对象所有者添加额外的特定策略,这会增加策略管理的操作负担。

§ all – 数据库、表、列 {OWNER} 所有权限

§ all – 数据库、表 {OWNER} 所有权限

§ all – 数据库,udf {OWNER} 所有权限

§  all – 数据库{OWNER} 所有权限

o  特殊对象{USER} 这应该被视为 Ranger 中的一个特殊实体,意思是当前用户。使用此特殊对象可以显着简化策略结构,其中数据资源包含用户名属性值。例如,授予对 HDFS 路径/home/{USER} 上的 {USER} 的访问权限将授予用户“bob”“/home/bob”的访问权限,以及用户“kiran”“/home/kiran”的访问权限。同样,授予对数据库 db_{USER} 上的 {USER} 的访问权限,将为用户“bob”提供对“db_bob”的访问权限,以及用户“kiran”“db_kiran”的访问权限。

3. 此更改如何影响我的环境?

·       迁移到Ranger

o  Cloudera提供了一个自动化工具authzmigrator,用于从 Sentry 迁移到 Ranger

o  该工具转换 Hive 对象的权限和 URL 权限(即 Sentry 中的URI)以及 CDH 集群中Sentry 中的 Kafka 权限

o  目前该工具不包括通过 Sentry for Cloudera Search (Solr) 启用的授权权限

o  该工具有一个明确定义的两步过程 - (1) Source 中的Sentry 导出权限 (2) 将导出的文件摄取到 CDP 中的 Ranger 服务中

o  该工具适用于从 CDH CDP 的直接升级和 side-car 迁移方法

§ 在直接升级的情况下,整个过程是自动化的

§   side-car 迁移的情况下,为authzmigrator工具定义了一个手动程序

·       Ranger 中的对象权限

o  Sentry中的插入权限现在映射到 Ranger Hadoop SQL 策略中的更新权限

o  Sentry中的“URI”权限现在映射到 Ranger Hadoop SQL 中的“URL”策略

o  Ranger Hadoop SQL 中存在额外的细化权限

§  DropAlterIndexLock等。

·       Hive-HDFS 访问同步与 Ranger

o  需要部署新服务 Ranger RMS

o  Ranger RMS 连接到 Ranger 使用的同一个数据库

o  Ranger RMS 当前仅适用于表级同步,而不适用于数据库级(即将推出)

·       Hive 中使用 Ranger 创建外部表

o   Hive 中使用自定义 LOCATION 子句创建外部表时,需要以下附加访问之一 (1) (2)

§  (1) 用户应具有对 HDFS 位置的直接读写访问权限

§  这可以通过 Ranger 中的 HDFS Policy HDFS POSIX 权限或 HDFS ACL 提供

§  (2) Ranger Hadoop SQL 策略中的一个 URL 策略,为用户提供对表定义的 HDFS 位置的读写权限

§ URL不应包含尾部斜杠字符 (“/”)

§  如果用户不拥有位置路径,请确保配置“ranger.plugin.hive.urlauth.filesystem.schemes”设置为“file:”而不是“hdfs:,file:”(这是默认设置) ) Hive Hive on Tez 服务中

o  用户“hive”应该拥有表的 HDFS 位置的所有权限

4. 总结

Apache Ranger 支持授权作为共享数据体验 (SDX) 的一部分,这是 Cloudera 数据平台架构的基础部分,对数据管理和数据治理至关重要。在 CDP 中,Ranger 提供了 Apache Sentry CDH 堆栈中提供的所有功能。Ranger 是一个全面的解决方案,可以在整个 CDP 生态系统中启用、管理和监控数据安全。它还提供额外的安全功能,如数据过滤和屏蔽。Ranger 将授权和审计结合在一起,增强了 CDP 的数据安全策略,并提供了卓越的用户体验。除了这些授权和审核增强功能之外,Ranger Web UI 还可以用于安全密钥管理,使用 Ranger KMS 服务的密钥管理员可以单独登录。

要了解有关 Ranger 和相关功能的更多信息,以下是一些有用的资源:

Apache Ranger 授权

Apache Ranger 审计

升级到 CDP

CDP 知识中心

原文作者:Kiran Anand

原文链接:https://blog.cloudera.com/sentry-to-ranger-a-concise-guide/

 

相关文章
|
SQL 分布式计算 资源调度
在CDH7.1.1上为Ranger集成OpenLDAP认证
在CDH7.1.1上为Ranger集成OpenLDAP认证
249 0
|
机器学习/深度学习 Ubuntu Unix
配置工具篇(tmux+ranger+lazygit)
配置工具篇(tmux+ranger+lazygit)
145 0
配置工具篇(tmux+ranger+lazygit)
|
开发工具 数据安全/隐私保护 git
sentry 服务的搭建(上)
sentry 服务的搭建(上)
|
资源调度 JavaScript 前端开发
sentry 服务的搭建(下)
sentry 服务的搭建(下)
|
存储 消息中间件 监控
Sentry 10 升级到 Sentry 20
Sentry 是一个用于监控前后端出错和统计上报分析一体的一个开源软件系统。 Sentry 适合中等规模以上的网站的开发及生产线上出错管理。Sentry可以适应多租户多项目的管理。功能很完善。
860 0
Sentry 10 升级到 Sentry 20
|
SQL 消息中间件 分布式计算
Presto集成到Ambari介绍
在Ambari中集成Presto,能在Ambari UI中方便地安装部署Presto到集群,并能方便修改Presto相关配置
653 0
|
SQL 安全 分布式数据库
配置安全的Impala集群集成Sentry
本文主要记录配置安全的Impala集群集成Sentry的过程。Impala集群上配置了Kerberos认证,并且需要提前配置好Hive与Kerberos和Sentry的集成: 使用yum安装CDH Hadoop集群 Hive配置kerberos认证 Impala配置kerberos认证 配置
5581 5