2. HWC 授权
《CDP企业数据云平台从入门到实践》——CDP之数据仓库(3) https://developer.aliyun.com/article/1226342?groupCode=ClouderaCDP
配置 Hive 仓库连接器(HWC)的方式会影响查询授权过程和您的安全性。通过 HWC访问 Hive 有多种方法,并非所有操作都通过 HiveServer(HS2)。一些操作,例如Spark Direct Reader 和 Hive Streaming,通过 HMS 直接进入 Hive,其中通常适用基于存储的权限。
作为客户端用户,您必须在使用 HWC 之前使用 kerberos 登录。您需要适当的存储权限才能写入目标分区或表位置。您需要配置 HWC 读取选项。HWC 读取配置选项如下表所示:
这些读取配置选项需要连接到不同的 Hive 组件:
• 直接阅读配置:连接到 Hive Metastore(HMS)
• JDBC 配置:连接到 HiveServer(HS2)
• 安全访问配置:连接到 HiveServer(HS2)
Ranger 授权通过 HiveServer(HS2)或 Hive metastore API(HMS API)从 Spark
访问 Hive 表。
要将 ACID 管理的表从 Spark 写入 Hive,您必须使用 HWC。要将外部表从 Spark 写
入 Hive,您可以使用原生 Spark 或 HWC。
下图展示了典型的读授权流程:
下图展示了典型的写授权流程:
在编写时,HWC 始终通过 HiveServer(HS2)强制执行授权。在 JDBC 模式下读取托管表会强制执行 Ranger 授权,包括列映射等细粒度功能。在 Direct Reader 模式下,Ranger 和 HMS 集成提供授权。
外部表查询通过 HMS API 进行,该 API 也与 Ranger 集成。如果您不使用 HWC,则与 Ranger 集成的 Hive metastore(HMS)API 会授权外部表访问。HMS API-Ranger集成在这种情况下强制执行 Ranger Hive ACL。使用 HWC 时,DROP TABLE 等查询会影响文件系统数据以及 HMS 中的元数据。
使用 Direct Reader 选项,SparkSQL 查询直接从 HMS 读取托管表元数据,但前提是您有权访问文件系统上的文件。您不能使用 Direct Reader 选项写入托管表。
• 托管表授权
Spark 作业在尝试访问 Apache Hive 托管表时模拟最终用户。作为最终用户,您无权访问 Hive 仓库中的托管文件。托管表具有默认文件系统权限,不允许最终用户访问,包括 Spark 用户访问。
作为管理员,当您为 JDBC 读取配置 HWC 时,您可以在 Ranger 中设置访问托管表的权限。您可以微调 Ranger 以保护特定数据。例如,您可以屏蔽某些列中的数据,或设置基于标签的访问控制。
当您为 Direct Reader 模式配置 HWC 时,您不能以这种方式使用 Ranger。您必须为托管表设置对文件系统位置的读取访问权限。您必须对 Hive 仓库位置(hive.metastore.warehouse.dir)具有读取和执行权限。
• 外部表授权
支持外部表读写 Ranger 授权。您需要在 Cloudera Manager 中配置一些属性以授权外部表写入。您必须被授予对外部表文件的文件系统权限,以允许 Spark 直接访问实际的表数据,而不仅仅是表元数据。
1) 直接读取授权限制
由于 Spark 允许用户运行任意代码,Ranger 细粒度的访问控制,例如行级过滤或列级屏蔽,在 Spark 本身是不可能的。此限制扩展到使用 Direct Reader 读取的数据。
要在细粒度级别限制数据访问,请使用支持 Ranger 的读取选项。如果不需要细粒度访问,仅考虑使用 Direct Reader 选项从 Spark 读取 Hive 数据。例如,将 Direct Reader 用于 ETL 用例。
《CDP企业数据云平台从入门到实践》——CDP之数据仓库(5) https://developer.aliyun.com/article/1226326?groupCode=ClouderaCDP