数据库角色:不允许共享具有未来授权的数据库角色

注意

此行为变更在 2023_05 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

未来授权和数据库角色的行为如下:

之前:

您可以向数据库角色授予未来权限,并将数据库角色授予共享。有两种情景:

  1. 向数据库角色授予权限,然后将数据库角色授予共享。

    GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1;
    GRANT DATABASE ROLE dbr1 TO SHARE myshare;
    
    Copy
  2. 将数据库角色授予共享,然后将未来权限授予数据库角色。

    GRANT DATABASE ROLE dbr1 TO SHARE myshare;
    GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1;
    
    Copy

您可以使用以下命令来确定您的数据库角色是否受到待定更改的影响:

SHOW FUTURE GRANTS IN DATABASE parent_db;
SHOW FUTURE GRANTS IN shared_schema;
Copy
现在:

将数据库角色授予共享时,您将无法向对象授予未来授权。根据您尝试的场景不同,Snowflake 会返回唯一的错误消息:

  1. 对于场景一,错误消息为:

    Cannot share a database role with future grants to it.
    

    使用 REVOKE <privileges> 语句撤消来自数据库角色的未来授予。如有必要,请更新 GRANT <privileges> 语句,使其不会指定未来授权。最后,将数据库角色授予共享。

  2. 对于场景二,错误消息为:

    Cannot grant future grants to a database role that is granted to a share.
    

    修改 GRANT <privileges> 语句,使其不会指定未来授权。

参考:1144

语言: 中文