特权和安全对象 (Databricks SQL)

特权是指授予主体安全对象进行操作的权利。

安全对象

安全对象是在元存储中定义的对象,可以在其上向主体授予特权。

要管理任何对象的权限,你必须是其所有者或管理员。

语法

securable_object
  { ANONYMOUS FUNCTION |
    ANY FILE |
    CATALOG [ catalog_name ] |
    { SCHEMA | DATABASE } schema_name |
    EXTERNAL LOCATION location_name |
    FUNCTION function_name |
    STORAGE CREDENTIAL credential_name |
    [ TABLE ] table_name |
    VIEW view_name }

参数

  • ANONYMOUS FUNCTION

    你可以从匿名函数将特权授予 SELECT

  • ANY FILE

    你可以向文件系统中的任何文件授予 SELECTMODIFY 特权。

  • CATALOGcatalog_name

    你可以对目录授予 CREATEUSAGE。 默认目录名称是 hive_metastore。 如果目录名称为 hive_metastore,则还可以授予 SELECTREAD_METADATAMODIFY,并将这些特权授予目录中任何现有和将来的安全对象。

  • { SCHEMA | DATABASE }schema_name

    你可以对架构授予 CREATECREATE_NAMED_FUNCTIONUSAGE

    你还可以授予 SELECTREAD_METADATAMODIFY,以对目录中任何现有和将来的安全对象授予这些特权。

  • EXTERNAL LOCATIONlocation_name

    你可以对外部位置授予 CREATE TABLEREAD FILESWRITE FILES

  • FUNCTIONfunction_name

    可以对用户定义函数授予 SELECT

  • STORAGE CREDENTIAL credential_name

    可以对存储凭据授予 CREATE TABLEREAD FILESWRITE FILES

  • [ TABLE ]table_name

    可以对表授予 SELECTMODIFY

    要使主体在表上使用 SELECTMODIFY,它还必须对表的架构和目录具有 USAGE 特权。

  • VIEWview_name

    你可以对视图授予 SELECT

    要让主体从视图中使用 SELECT,主体还必须对视图的架构和目录具有 USAGE 特权。

权限类型

  • CREATE

    在目录或架构中创建对象。

  • CREATE TABLE

    使用存储凭据外部位置创建外部表

  • MODIFY

    对表执行 COPY INTOUPDATEDELETEINSERTMERGE INTO

    如果 securable_object 是 hive_metastore 或其中的架构,则授予 MODIFY 将对安全对象中所有当前和将来的表和视图授予 MODIFY

  • READ_METADATA

    SHOW 中发现安全对象,并在 DESCRIBE 中询问该对象

    如果安全对象是 hive_metastore 目录或其中的架构,则授予 READ_METADATA 将对安全对象内所有当前和将来的表和视图授予 READ_METADATA

  • READ FILES

    直接使用存储凭据外部位置查询文件。

  • SELECT

    查询表或视图,调用用户定义的函数或匿名函数,或者选择 ANY FILE。 用户需要对表、视图或函数的 SELECT,还需要对对象的架构和目录的 USAGE

    如果安全对象是 hive_metastore 或其中的架构,则授予 SELECT 将在安全对象内的所有当前和将来的表和视图上授予 SELECT

  • USAGE

    必需,但不足以引用目录或架构中的任何对象。 主体还需要对各个安全对象具有特权。

  • WRITE FILES

    直接对外部凭据外部位置治理的文件执行 COPY INTO

特权矩阵

下表显示了哪些特权与哪些安全对象相关联。

权限类型 ANY FILE CATALOG SCHEMA EXTERNAL LOCATION FUNCTION 存储凭据 TABLE VIEW
CREATE
CREATE TABLE
MODIFY HMS HMS
READ_METADATA HMS HMS HMS HMS
READ FILES
SELECT HMS HMS
USAGE
WRITE FILES

HMS 此特权仅适用于 hive_metastore 目录中的安全对象。

示例

-- Grant a privilege to the user alf@melmak.et
> GRANT SELECT ON TABLE t TO `alf@melmak.et`;

-- Revoke a privilege from the general public group.
> REVOKE USAGE ON SCHEMA some_schema FROM `alf@melmak.et`;