什么是 ANY FILE 权限?

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

ANY FILE 权限授予有权的主体直接访问云对象存储中的文件系统和数据,而不考虑在数据库对象(如架构或表)上设置的任何 Hive 表 ACL。 此访问遵循云对象存储中数据的旧访问模式,包括计算级别定义的装载和存储凭据。 请参阅配置对 Azure Databricks 云对象存储的访问权限

使用 Lakehouse 联合身份验证中不包含的自定义数据源或 JDBC 驱动程序时,还需要 ANY FILE 权限。 请参阅什么是 Lakehouse Federation

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

ANY FILE 权限仅适用于使用具有共享访问模式的 SQL 仓库或群集。

ANY FILE 如何与 Unity Catalog 配合使用?

访问不受 Unity Catalog 管理的存储路径或数据源时,仅对启用了 Unity 目录的共享群集和 SQL 仓库评估 ANY FILE 权限。 所有与 Unity Catalog 相关的权限后,都会评估 ANY FILE 权限,并充当存储路径和未使用 Unity Catalog 管理的连接器库的回退。

Databricks 建议使用 Lakehouse 联合身份验证配置对受支持的外部数据源的只读访问。 Lakehouse 联合身份验证从来不需要 ANY FILE。 请参阅什么是 Lakehouse Federation

Unity Catalog 卷和表为表格和非表格数据提供完全治理,并且不需要 ANY FILE。 不能使用 ANY FILE 权限来访问使用 URI 的 Unity Catalog 管理的任何数据。 请参阅使用 Unity Catalog 连接到云对象存储

下面是需要对启用了 Unity Catalog 的共享群集具有 ANY FILE 权限的数据源的示例:

  • 使用 URI 读取云对象存储。
  • 读取存储在 DBFS 根目录中或使用 DBFS 装载的数据。
  • 使用自定义库或驱动程序读取数据源。
  • 使用未配置 Lakehouse 联合身份验证的 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 是信息架构中未报告的旧特权。

无法列出已授予 ANY FILE 权限的所有用户。