管理外部位置
本文介绍如何列出、查看、更新、授予权限以及删除外部位置。
注意
Databricks 建议使用卷管理文件访问。 请参阅“什么是 Unity Catalog 卷?”。
描述外部位置
若要查看外部位置的属性(包括权限和工作区访问权限),可以使用目录资源管理器或 SQL 命令。
目录资源管理器
- 在边栏中,单击 “目录”。
- 在“快速访问”页中,单击“外部数据>”按钮,然后转到“外部位置”选项卡。
- 单击外部位置的名称以查看其属性。
SQL
在笔记本或 Databricks SQL 编辑器中运行以下命令。 将 <location-name>
替换为外部位置的名称。
DESCRIBE EXTERNAL LOCATION <location-name>;
显示外部位置的授予
若要在外部位置显示授予,请使用如下命令。 你可以选择筛选结果以只显示指定主体的授权。
SHOW GRANTS [<principal>] ON EXTERNAL LOCATION <location-name>;
替换占位符值替:
<location-name>
:授权读取和写入云租户中存储容器路径的外部位置的名称。<principal>
:帐户级用户的电子邮件地址或帐户级组的名称。
注意
如果组或用户名包含空格或 @
符号,请在其周围使用反勾(而不是撇号)。 例如,
财务团队
。
授予对外部位置的权限
本部分介绍如何使用目录资源管理器和笔记本或 SQL 查询中的 SQL 命令授予和撤销对外部位置的权限。 有关改用 Databricks CLI 或 Terraform 的信息,请参阅 Databricks Terraform 文档和什么是 Databricks CLI?。
你可以在外部位置授予以下权限:
CREATE EXTERNAL TABLE
CREATE EXTERNAL VOLUME
CREATE MANAGED STORAGE
必需的权限:对元存储和外部位置中引用的存储凭据拥有 CREATE EXTERNAL LOCATION
特权。 默认情况下,元存储管理员对元存储具有 CREATE EXTERNAL LOCATION
。
授予使用外部位置的权限:
目录资源管理器
- 在边栏中,单击 “目录”。
- 在“快速访问”页中,单击“外部数据>”按钮,然后转到“外部位置”选项卡。
- 单击外部位置的名称以打开其属性。
- 单击“权限”。
- 若要向用户或组授予权限,请选择每个标识,然后单击“授予”。
- 若要撤销用户或组的权限,请选择每个标识,然后单击“撤销”。
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 权限如何。
- 阻止用户在这些外部位置创建托管表或卷。
- 使系统能够在创建时正确验证外部位置。
创建外部位置时,可以将外部位置标记为只读。
还可使用目录资源管理器在创建外部位置后更改只读状态:
- 在边栏中,单击 “目录”。
- 在“快速访问”页中,单击“外部数据>”按钮,然后转到“外部位置”选项卡。
- 选择外部位置,单击“测试连接”按钮旁边的 “操作”菜单,然后选择“编辑”。
- 在“编辑”对话框中,单击“高级选项”并选择“限制为只读使用”选项。
- 单击“更新”。
修改外部位置
外部位置的所有者可以更改外部位置的名称、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>;