概述
安全是 Kyuubi 用于企业级部署的基础特性之一。当部署 Kyuubi 对接安全集群时,默认启用的是基于存储的授权,它仅提供文件级别的粗粒度授权模式。当需要行级、列级的细粒度访问控制时,可以使用 Kyuubi Spark AuthZ 插件来增强数据访问模型。
Kyuubi 中的授权
基于存储的授权
由于 Kyuubi 支持多租户,租户只能访问被授权的资源,包括计算资源、数据等。大多数文件系统(如 HDFS)都支持基于文件和目录的 ACL 管理。
Kyuubi 默认支持所谓的基于存储的授权模式。在该模型中,元数据层的所有对象(如数据库、表、分区)都会映射到存储层中的文件夹或文件及其权限。
基于存储的授权为用户提供数据库、表和分区级别的粗粒度访问控制。
基于 Ranger 的 SQL 标准授权
SQL 标准授权通常提供行级、列级的细粒度访问控制,以满足现实世界中的数据安全需求。
Apache Ranger 是一个用于在整个 Hadoop 平台上启用、监控和管理综合数据安全性的框架。该插件为 Kyuubi 提供了面向 Spark SQL 引擎的数据和元数据访问控制能力,包括:
- 列级细粒度授权
- 行级细粒度授权,也称为行级过滤
- 数据脱敏
插件本身
Kyuubi Spark AuthZ 插件本身在使用 Spark SQL 时,为数据和元数据的 ACL 管理提供了通用功能。它不必与 Kyuubi 服务器和引擎一起部署,也可以作为任何 Spark SQL 作业的扩展使用。不过,授权始终需要一个健壮的认证层和多租户支持,因此 Kyuubi 与之是绝佳的搭配。
限制安全配置
最终用户可以通过修改 Spark 的配置来禁用 AuthZ 插件。例如:
select * from parquet.`/path/to/table`set spark.sql.optimizer.excludedRules=org.apache.kyuubi.plugin.spark.authz.ranger.RuleAuthorizationKyuubi 提供了一种机制,用于禁用安全相关的配置,从而增强生产环境的安全性。
注意
关于如何修改 Spark 引擎的配置,请参阅文档 Spark Configurations
限制会话级配置
你可以指定配置 kyuubi.session.conf.ignore.list 的值和配置 kyuubi.session.conf.restrict.list 的值,以便在服务端禁用对会话级配置的修改。例如:
kyuubi.session.conf.ignore.list spark.driver.memory,spark.sql.optimizer.excludedRuleskyuubi.session.conf.restrict.list spark.driver.memory,spark.sql.optimizer.excludedRules限制操作级配置
你可以通过指定 spark.kyuubi.conf.restricted.list 的值,来禁止在引擎侧修改操作级配置。这意味着,处于受限列表中的配置项无法通过 SET 语法进行动态配置设置。例如:
spark.kyuubi.conf.restricted.list spark.sql.adaptive.enabled,spark.sql.adaptive.skewJoin.enabledNote
- 请注意,配置
spark.sql.runSQLOnFiles的取值以及配置spark.sql.extensions的取值默认都在引擎的限制配置列表中。 - 键等于
spark.sql.optimizer.excludedRules、且取值包含org.apache.kyuubi.plugin.spark.authz.ranger.*的SET语句同样不允许修改。
评论
登录后参与评论
KnowForge