管理外部位置

本文介绍如何列出、查看、更新、授予权限以及删除外部位置

注意

Databricks 建议使用卷管理文件访问。 请参阅“什么是 Unity Catalog 卷?”。

描述外部位置

若要查看外部位置的属性(包括权限和工作区访问权限),可以使用目录资源管理器或 SQL 命令。

目录资源管理器

  1. 在边栏中,单击 “目录”图标目录”。

  2. 在“目录”窗格顶部,单击 齿轮图标 齿轮图标,然后选择“外部位置”

    也可在“快速访问”页中单击“外部数据”>按钮,然后转到“外部位置”选项卡。

  3. 单击外部位置的名称以查看其属性。

SQL

在笔记本或 Databricks SQL 编辑器中运行以下命令。 将 <location-name> 替换为外部位置的名称。

DESCRIBE EXTERNAL LOCATION <location-name>;

显示外部位置的授予

若要在外部位置显示授予,请使用如下命令。 你可以选择筛选结果以只显示指定主体的授权。

SHOW GRANTS [<principal>] ON EXTERNAL LOCATION <location-name>;

替换占位符值替:

  • <location-name>:授权读取和写入云租户中存储容器路径的外部位置的名称。
  • <principal>:帐户级用户的电子邮件地址或帐户级组的名称。

注意

如果组名包含空格,请在其周围使用反勾(而不是撇号)。

对外部位置授予权限

本部分介绍如何使用目录资源管理器和笔记本或 Databricks SQL 查询中的 SQL 命令授予和撤销对外部位置的权限。 有关改用 Databricks CLI 或 Terraform 的信息,请参阅 Databricks Terraform 文档什么是 Databricks CLI?

你可以在外部位置授予以下权限:

  • CREATE EXTERNAL TABLE
  • CREATE EXTERNAL VOLUME
  • CREATE MANAGED STORAGE

必需的权限:对元存储和外部位置中引用的存储凭据拥有 CREATE EXTERNAL LOCATION 特权。 默认情况下,元存储管理员对元存储具有 CREATE EXTERNAL LOCATION

授予使用外部位置的权限:

目录资源管理器

  1. 在边栏中,单击 “目录”图标目录”。

  2. 在“目录”窗格顶部,单击 齿轮图标 齿轮图标,然后选择“外部位置”

    也可在“快速访问”页中单击“外部数据”>按钮,然后转到“外部位置”选项卡。

  3. 单击外部位置的名称以打开其属性。

  4. 单击“权限”。

  5. 若要向用户或组授予权限,请选择每个标识,然后单击“授予”。

  6. 若要撤销用户或组的权限,请选择每个标识,然后单击“撤销”。

SQL

在笔记本或 SQL 查询编辑器中运行以下 SQL 命令。 此示例授予创建引用外部位置的外部表的能力:

GRANT CREATE EXTERNAL TABLE ON EXTERNAL LOCATION <location-name> TO <principal>;

替换占位符值替:

  • <location-name>:授权读取和写入云租户中存储容器路径的外部位置的名称。
  • <principal>:帐户级用户的电子邮件地址或帐户级组的名称。

注意

如果组名包含空格,请在其周围使用反勾(而不是撇号)。

更改外部位置的所有者

外部位置的创建者是它的初始所有者。 若要将所有者更改为其他帐户级别的用户或组,请在笔记本或 Databricks SQL 编辑器中运行以下命令,或使用目录资源管理器。 替换占位符值替:

  • <location-name>:该凭据的名称。
  • <principal>:帐户级用户的电子邮件地址或帐户级组的名称。
ALTER EXTERNAL LOCATION <location-name> OWNER TO <principal>

将外部位置标记为只读

如果希望用户对外部位置具有只读访问权限,可以使用目录资源管理器将外部位置标记为只读。

将外部位置标记为只读:

  • 阻止用户写入这些外部位置中的文件,而不考虑存储凭据的 Azure 托管标识授予的任何写入权限,也不管对该外部位置授予的 Unity Catalog 权限如何。
  • 阻止用户在这些外部位置创建托管表或卷。
  • 使系统能够在创建时正确验证外部位置。

创建外部位置时,可以将外部位置标记为只读。

还可使用目录资源管理器在创建外部位置后更改只读状态:

  1. 在边栏中,单击 “目录”图标目录”。

  2. 在“目录”窗格顶部,单击 齿轮图标 齿轮图标,然后选择“外部位置”

    也可在“快速访问”页中单击“外部数据 >”按钮,然后转到“外部位置”选项卡

  3. 选择外部位置,单击Kebab 菜单“测试连接”按钮旁边的 kebab 菜单,然后选择“编辑”。

  4. 在“编辑”对话框中,单击“高级选项”并选择“限制为只读使用”选项。

  5. 单击“更新” 。

修改外部位置

外部位置的所有者可以更改外部位置的名称、URI 和存储凭据。

若要重命名外部位置,请执行以下操作:

在笔记本或 Databricks SQL 编辑器中运行以下命令。 替换占位符值替:

  • <location-name>:位置的名称。
  • <new-location-name>:位置的新名称。
ALTER EXTERNAL LOCATION <location-name> RENAME TO <new-location-name>;

若要更改云租户中外部位置指向的 URI,请执行以下操作:

在笔记本或 Databricks SQL 编辑器中运行以下命令。 替换占位符值替:

  • <location-name>:外部位置的名称。
  • <url>:该位置应该授权你的云租户访问的新存储 URL。
ALTER EXTERNAL LOCATION location_name SET URL '<url>' [FORCE];

即使外部表依赖于外部位置,FORCE 选项也会更改 URL。

若要更改外部位置使用的存储凭据,请执行以下操作:

在笔记本或 Databricks SQL 编辑器中运行以下命令。 替换占位符值替:

  • <location-name>:外部位置的名称。
  • <credential-name>:允许访问云租户中位置 URL 的存储凭据的名称。
ALTER EXTERNAL LOCATION <location-name> SET STORAGE CREDENTIAL <credential-name>;

删除外部位置

若要删除某个外部位置,你必须是其所有者。 若要删除外部位置,请执行以下操作:

在笔记本或 Databricks SQL 编辑器中运行以下命令。 括号中的项是可选的。 将 <location-name> 替换为外部位置的名称。

DROP EXTERNAL LOCATION [IF EXISTS] <location-name>;