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:
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;
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;
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;
- 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:
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.
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