Datenbank-Rollen: Freigeben von Datenbankrollen mit zukünftige Berechtigungszuweisungen nicht zulässig

Achtung

Diese Verhaltensänderung ist in Bundle 2023_05 enthalten.

Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.

Das Verhalten von zukünftige Berechtigungszuweisungen und Datenbankrollen ist wie folgt:

Bisher

Sie können einer Datenbankrolle zukünftige Berechtigungen erteilen und die Datenbankrolle einer Freigabe zuweisen. Es gibt zwei Szenarios:

  1. Der Datenbankrolle werden die Berechtigungen erteilt, und dann wird der Freigabe die Datenbankrolle zugewiesen.

    GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1;
    GRANT DATABASE ROLE dbr1 TO SHARE myshare;
    
    Copy
  2. Der Freigabe wird die Datenbankrolle zugewiesen, und dann werden der Datenbankrolle die zukünftigen Berechtigungen erteilt.

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

Sie können die folgenden Befehle verwenden, um festzustellen, ob Sie über Datenbankrollen verfügen, die von den anstehenden Änderungen betroffen sind:

SHOW FUTURE GRANTS IN DATABASE parent_db;
SHOW FUTURE GRANTS IN shared_schema;
Copy
Jetzt

Sie können keine zukünftigen Berechtigungszuweisungen zu Objekten erteilen, wenn die Datenbankrolle einer Freigabe zugewiesen ist. Snowflake gibt je nach Szenario, das Sie testen, eine eindeutige Fehlermeldung zurück:

  1. Bei Szenario 1 lautet die Fehlermeldung:

    Cannot share a database role with future grants to it.
    

    Verwenden Sie eine REVOKE <Berechtigungen>-Anweisung, um der Datenbankrolle die zukünftige Berechtigungszuweisungen zu entziehen. Aktualisieren Sie ggf. die GRANT <Berechtigungen>-Anweisung, sodass sie keine zukünftigen Berechtigungszuweisungen angibt. Weisen der Freigabe schließlich die Datenbankrolle zu.

  2. Bei Szenario 2 lautet die Fehlermeldung:

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

    Ändern Sie die GRANT <Berechtigungen>-Anweisung so, dass sie keine zukünftigen Berechtigungszuweisungen angibt.

Ref.: 1144