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 Sentry为Apache Hive和Apache Impala等Hadoop SQL组件以及Apache Solr、Apache Kafka和HDFS(仅限于Hive表数据)等其他服务提供了一个独立的授权模块。Sentry 依靠 Hue 进行可视化策略管理,依靠 Cloudera Navigator 来审计 CDH 平台中的数据访问。
另一方面,Apache Ranger 提供了一个全面的安全框架来启用、管理和监控整个 Hadoop 平台的数据安全。它提供了一个集中式平台,可以跨 Sentry 保护的所有 Hadoop 组件以及 Apache Hadoop生态系统中的其他服务(如 Apache HBase、YARN、Apache 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 之间功能的详细比较。
2. Sentry到Ranger——一些行为改变
如上所述,Sentry 和 Ranger 是完全不同的产品,在架构和实现上有很大的不同。下面列出了当您从 CDH 的 Sentry 迁移到 CDP 中的 Ranger 时的一些显着行为变化。
· Sentry 中的继承模型与 Ranger 中的显式模型
o 在 Sentry 中,对层次结构中的容器对象授予的任何权限都会由其中的基础对象自动继承。例如,如果用户对数据库范围拥有 ALL 权限,则该用户对包含在该范围内的所有基础对象(如表和列)拥有 ALL 权限。因此,授予数据库用户的一项授权将授予对数据库中所有对象的访问权限。
o 在 Ranger 中,应存在具有必要权限的显式 Hadoop SQL 策略,以便用户访问对象。这意味着,Ranger提供了更细粒度的访问控制。在数据库级别拥有访问权限不会在表级别授予相同的访问权限。并且在表级别获得访问权限不会在列级别授予相同的访问权限。例如,使用 Ranger Hadoop SQL 策略,要向用户授予对所有表和列的访问权限,请使用通配符创建策略,例如 – 数据库→ <数据库名称>、表→ * 和列 → *。
· 访问控制实施——Sentry与Ranger
o Hive的 Sentry 授权处理通过 HiveServer2 执行的语义钩子发生。每次访问请求都会返回 Sentry Server 进行验证。Impala 中的访问控制检查与 Hive 中的类似。Impala 中的主要区别在于 Impala Catalog 服务器对 Sentry 元数据(权限)的缓存。
o CDP Private Cloud Base 中支持基于 Ranger 授权的所有服务都有一个关联的 Ranger 插件。这些 Ranger 插件在客户端缓存访问权限和标签。他们还定期轮询特权和标签存储以了解任何更改。当检测到更改时,缓存会自动更新。这样的实现模型使 Ranger 插件能够完全在服务守护进程内处理授权请求,从而显着提高性能,并在面对服务外的故障时具有弹性。
· 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权限
§ 允许用户自助创建自己的数据库
§ 默认数据库表列⇒public⇒create权限
§ 允许用户在默认数据库中自助创建表
§ 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 中存在额外的细化权限
§ Drop、Alter、Index、Lock等。
· 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 和相关功能的更多信息,以下是一些有用的资源:
原文作者:Kiran Anand
原文链接:https://blog.cloudera.com/sentry-to-ranger-a-concise-guide/