什么是 ANY FILE 安全对象?

ANY FILE 安全对象的权限向有资格的主体授予对云对象存储中文件系统和数据的直接访问权限,而不管对数据库对象(例如架构或表)设置了哪种 Hive 表 ACL。

ANY FILE 的权限

可以使用旧版 Hive 表访问控制列表 (ACL) 向任何服务主体、用户或组授予对 ANY FILE 安全对象的 MODIFYSELECT 权限。 默认情况下,所有工作区管理员都对 ANY FILE 拥有 MODIFY 权限。 拥有 MODIFY 权限的任何用户都可以授予或撤销对 ANY FILE 的权限。

使用未包含在 Lakehouse Federation 中的自定义数据源或 JDBC 驱动程序时,必须对 ANY FILE 安全对象拥有权限。 请参阅“什么是 Lakehouse Federation?”。

ANY FILE 安全对象的权限无法替代 Unity Catalog 权限,且不会授予或扩展对 Unity Catalog 治理的数据对象的权限。 某些驱动程序和自定义安装的库可能会通过将所有用户的数据存储在一个通用临时目录中来破坏用户隔离。

仅当以共享访问模式使用 SQL 仓库或群集时,ANY FILE 安全对象的权限才适用。

ANY FILE 遵循云对象存储中数据的旧访问模式,包括在计算级别定义的装载和存储凭据。 请参阅配置对 Azure Databricks 云对象存储的访问权限

ANY FILE 如何与 Unity Catalog 交互?

在使用已启用 Unity Catalog 的共享群集或 SQL 仓库的情况下,在访问不受 Unity Catalog 治理的存储路径或数据源时,将评估 ANY FILE 安全对象的权限ANY FILE 安全对象的权限在所有 Unity Catalog 相关的权限之后进行评估,并充当不是使用 Unity Catalog 管理的存储路径和连接器库的回退机制。

Databricks 建议使用 Lakehouse 联合身份验证配置对受支持的外部数据源的只读访问。 Lakehouse Federation 永不需要 ANY FILE 安全对象的权限。 请参阅“什么是 Lakehouse Federation?”。

Unity Catalog 卷和表提供对表格和非表格数据的全面治理,并且不需要 ANY FILE 安全对象的权限。

使用 URI 访问 Unity Catalog 治理的任何数据时都不能使用 ANY FILE 安全对象的权限。 请参阅使用 Unity Catalog 连接到云对象存储和服务

必须拥有 ANY FILE 安全对象的 SELECT 权限,才能在已启用 Unity Catalog 的共享群集上使用以下模式进行读取:

  • 使用 URI 的云对象存储。
  • 数据存储在 DBFS 根目录中或使用 DBFS 装载。
  • 使用自定义库或驱动程序的数据源。
  • 未使用 Lakehouse Federation 配置的 JDBC 驱动程序。
  • 不受 Unity Catalog 治理的外部数据源。
  • 流式处理数据源,由 Unity Catalog 治理的表和卷以及使用注册到 Hive 元存储的表名称的流除外。

有关 ANY FILE 安全对象权限的潜在问题

ANY FILE 安全对象的权限实质上会绕过在数据库对象上设置的旧版 Hive 表 ACL。 如果尚未将所有表完全迁移到 Unity Catalog 并且仍然依赖于旧版 Hive 表 ACL 来管理数据访问,则在授予 ANY FILE 安全对象的权限时请保持谨慎。

授予对 ANY FILE 安全对象的权限永远不会绕过 Unity Catalog 数据治理。 但是,对 ANY FILE 安全对象拥有权限的用户具有更大的能力,可以配置和访问不受 Unity Catalog 治理的数据源。

ANY FILE 的限制

ANY FILE 是信息架构中未报告的旧安全对象。