Catalog-linked database: USAGE privilege on CATALOG INTEGRATION and EXTERNAL VOLUME required for database owner role for all operations (Pending)¶
此行为变更修改了访问目录关联数据库中表的要求。它影响目录关联数据库中的以下操作,这些操作需要访问数据库的目录集成和外部卷:
数据库内对象的任何 DML 操作
数据库内对象的任何 DDL 操作
自动表格发现
数据库中表的自动或手动刷新
读取数据库中的表
- 变更前:
要访问目录关联数据库中的表,以下任一角色必须拥有外部卷的 USAGE 权限,并在拥有数据库目录集成的 USAGE 权限:
拥有目录关联数据库 OWNERSHIP 权限的角色。
拥有目录关联数据库内某表 OWNERSHIP 权限的角色。
会话中处于激活状态的任意角色。
- 变更后:
要访问目录关联数据库中的表,以下角色必须拥有外部卷的 USAGE 权限,并在拥有数据库目录集成的 USAGE 权限:
拥有目录关联数据库 OWNERSHIP 权限的角色。
例如,ALTER 命令仅在数据库所有者角色可以访问目录集成和外部卷时才会成功。如果尝试运行 ALTER 命令,但数据库所有者角色无法访问目录集成,将收到以下错误:
SQL access control error: Insufficient privileges to operate on integration '<name of catalog integration>'.
如果尝试运行 ALTER 命令,但数据库所有者角色无法访问外部卷,将收到以下错误:
SQL access control error: Insufficient privileges to operate on external volume '<name of external volume>').
如有必要,请向拥有目录关联数据库的角色授予所需的 USAGE 权限。
在以下示例中,data_engineer 角色拥有目录关联数据库的 OWNERSHIP 权限,并被授予必要的 USAGE 权限,以便访问目录关联数据库中的表。
GRANT USAGE ON INTEGRATION glueCatalogInt TO ROLE data_engineer; GRANT USAGE ON EXTERNAL VOLUME exvol TO ROLE data_engineer;
此更改通过将所有管理操作集中到目录关联数据库的所有者,从而使目录关联数据库中 Apache Iceberg™ 表的访问管理更高效。
备注
如果您使用目录提供的凭证,则在更改前后都不需要拥有外部卷的 USAGE 权限。
参考:2114