蜂巢metastore特权和可获得的对象(遗留)

本文描述了遗留数据砖蜂巢metastore特权模式,是建立在每个砖工作区。它也描述了如何格兰特,否认和撤销权限对象的内置蜂巢metastore。统一目录使用不同的模型授予特权。看到统一目录权限和可获得的对象

请注意

表的数据访问控制管理的蜂巢metastore遗留数据治理模型。砖建议你表由蜂巢metastore升级到统一目录metastore。统一目录简化了数据的安全性和治理提供一个中心位置管理和审计数据访问跨多个工作空间在您的帐户。了解更BOB低频彩多关于如何遗留权限模型不同于统一目录权限模型,明白了统一目录和遗留蜂巢metastore一起工作

需求

请注意

  • 数据访问控制总是使在砖SQL即使表访问控制未启用的工作空间。

  • 如果表的访问控制是指定工作区和您已经启用了acl(允许和拒绝特权)在工作区中,这些acl尊重在砖SQL。

蜂巢metastore管理对象上的特权

数据对象上的特权管理的蜂巢metastore可以授予一个工作区管理或者一个对象的所有者。你可以管理权限蜂巢metastore对象通过使用SQL命令。

在SQL管理特权,你使用格兰特,撤销,否认,MSCK,秀奖助金语句在笔记本或砖SQL查询编辑器,使用的语法:

格兰特privilege_typesecurable_object主要

地点:

关于管理权限对象的更多信息在蜂房里metastore,明白了在蜂巢metastore特权和可获得的对象

对象所有权

当启用访问控制表在集群或SQL仓库,用户创建一个模式,表、视图或函数成为它的主人。所有者授予所有特权和权限授予其他用户。

组可能的对象,在这种情况下,所有成员的组织被认为是主人。

一个对象的所有者或工作区管理可以使用的对象的所有权转移改变<对象>老板' <用户名> @ <用户域>。com”命令。

可获得的蜂巢metastore中的对象

可获得的对象是:

  • 目录:控制访问整个数据目录。

    • 模式:控制访问模式。

      • :控制访问管理或外部表。

      • 视图:控制访问SQL视图。

      • 函数:控制访问命名函数。

  • 匿名函数:控制访问匿名的或临时的功能

    请注意

    匿名函数对象不支持在砖SQL。

  • 任何文件:控制访问底层文件系统。

    警告

    用户授权访问任何文件可以绕过这些限制的目录、模式、表和视图通过阅读直接从文件系统。

权限可以授予蜂巢metastore对象

  • 选择:给对象的读访问权。

  • 创建:给有能力创建一个对象(例如,一个表在模式)。

  • 修改:给能够添加、删除和修改数据或从一个对象。

  • 使用:不给任何的能力,但是是一个额外的需求模式对象上执行任何操作。

  • READ_METADATA:给视图对象及其元数据的能力。

  • CREATE_NAMED_FUNCTION:提供能力在现有的目录中创建一个名为UDF或模式。

  • MODIFY_CLASSPATH:给文件添加到火花类路径的能力。

  • 所有特权:给所有特权(翻译成所有上面的特权)。

请注意

MODIFY_CLASSPATH特权在砖不支持SQL。

使用特权

执行一个动作在蜂巢metastore模式对象,用户必须有使用特权模式上除了特权执行该动作。任何一个下面的满足使用要求:

  • 是一个工作空间管理

  • 使用特权模式或一组的使用的特权模式

  • 使用上的特权目录或在一群的使用特权

  • 模式的所有者或拥有一组模式

即使是一个对象的所有者必须在一个模式使用特权来使用它。

特权等级

当启用访问控制表工作区和所有集群,砖的SQL对象继承层次和特权。这意味着允许或拒绝的特权目录自动授予或拒绝目录中的所有模式的特权。同样,特权授予一个schema对象继承了所有对象的模式。这种模式适用于所有可获得的对象。

如果你拒绝一个用户权限表,用户看不到试图列出所有表的表模式。如果你拒绝一个用户权限模式,模式存在的用户看不到试图列出目录中的所有模式。

动态视图功能

砖包括两个用户功能,允许你表达列和行级权限体内动态的视图定义由蜂巢metastore管理。

  • current_user ():返回当前用户的名称。

  • is_member ():判断当前用户属于一个特定的砖集团

请注意

在砖使用这些函数运行时7.3 LTS,你必须设置火花配置spark.databricks.userInfoFunctions.enabled真正的。他们在所有支持的砖默认启用运行时版本高于7.3。

下面的例子结合函数来确定用户拥有适当的组成员:

——返回:如果用户是一个成员,如果他们不是假的选择current_user作为用户,——检查当前用户是否属于“经理”。is_member(“经理”)作为管理

列级权限

您可以使用动态视图来限制列一个特定的组或用户可以看到。考虑下面的例子只属于用户审计人员集团能够看到的电子邮件地址sales_raw表。在分析时引发取代了情况下语句和文字“修订”或列电子邮件。这种行为让所有常见的性能优化提供的火花。

——别名字段“电子邮件”本身(如电子邮件)预防——允许逻辑从直接出现在列名的结果。创建视图sales_redacted作为选择user_id,情况下is_member(“审计师”)然后电子邮件其他的“修订”结束作为电子邮件,国家,产品,sales_raw

行级权限

使用动态视图可以指定权限的行或领域的水平。考虑下面的例子,只有属于用户经理组能够看到事务量(列)大于1000000美元:

创建视图sales_redacted作为选择user_id,国家,产品,sales_raw在哪里情况下is_member(“经理”)然后真正的其他的< =1000000结束;

数据屏蔽

如前面的示例所示,您可以实现列级屏蔽,以防止用户看到特定的列数据,除非他们在正确的组。因为这些观点是标准的火花SQL,你能做的更高级类型的掩蔽与更复杂的SQL表达式。下面的例子可以让所有用户对邮件执行分析领域,但允许的成员审计人员组看到用户的完整的电子邮件地址。

——regexp_extract函数接受一个电子邮件地址等——user.x.lastname@example.com和提取“例子”,允许——分析师查询域名创建视图sales_redacted作为选择user_id,地区,情况下is_member(“审计师”)然后电子邮件其他的regexp_extract(电子邮件,“^ * @ (. *)$。”,1)结束sales_raw