Kategorien:

DDL für Benutzer und Sicherheit (Zugriffssteuerung)

GRANT OWNERSHIP

Überträgt das Eigentum an einem Objekt (oder allen Objekten eines bestimmten Typs in einem Schema) von einer Rolle auf eine andere Rolle. OWNERSHIP ist eine spezielle Art von Berechtigung, die nur von einer Rolle an eine andere Rolle vergeben werden kann; sie kann nicht widerrufen werden. Weitere Details dazu finden Sie unter Zugriffssteuerung in Snowflake.

Dieser Befehl ist eine Variation von GRANT <Berechtigungen> … TO ROLE.

Siehe auch:

REVOKE <Berechtigungen> … FROM ROLE

Syntax

GRANT OWNERSHIP
   ON { objectType <object_name> | ALL schemaObjectsType IN SCHEMA <schema_name> }
   TO ROLE <name>
   [ { REVOKE | COPY } CURRENT GRANTS ]

Wobei:

objectType ::=
  { ROLE | USER | WAREHOUSE | INTEGRATION | NETWORK POLICY | SESSION POLICY | DATABASE | SCHEMA | TABLE | VIEW | STAGE | FILE FORMAT | STREAM | TASK | MASKING POLICY | ROW ACCESS POLICY | PIPE | FUNCTION | PROCEDURE | SEQUENCE }
schemaObjectsType ::=
  { TABLES | VIEWS | MATERIALIZED VIEWS | STAGES | FILE FORMATS | FUNCTIONS | PROCEDURES | SEQUENCES | STREAMS | TASKS }

Erforderliche Parameter

objectType Objektname oder . ALL schemaObjectsType IN SCHEMA Schemaname

Gibt an, ob die Übertragung der Eigentümerschaft an ein einzelnes Objekt (des angegebenen Typs) oder an alle Schemaobjekte des angegebenen Typs (im angegebenen Schema) erfolgen soll:

  • Bei Einzelobjekten werden alle Objekttypen unterstützt.

  • Bei Schemaobjekten werden nur die folgenden Objekttypen unterstützt:

    TABLES | VIEWS | MATERIALIZED VIEWS | STAGES | FILE FORMATS | FUNCTIONS | PROCEDURES | SEQUENCES | STREAMS | TASKS

Name

Der Bezeichner der Rolle, an die der Objektbesitz übertragen wird.

Optionale Parameter

[ REVOKE | COPY ] CURRENT GRANTS

Gibt an, ob alle vorhandenen ausgehenden Berechtigungen für das Objekt entfernt oder übertragen werden sollen, wenn die Eigentümerschaft auf eine neue Rolle übertragen wird:

Bemerkung

Ausgehende Berechtigungen beziehen sich auf alle Berechtigungen, die für das einzelne Objekt erteilt werden, dessen Eigentümerschaft sich ändert.

Bei der Übertragung der Eigentümerschaft auf eine Rolle beziehen sich die aktuellen Berechtigungen auf alle Rollen, die der aktuellen Rolle erteilt wurden (um eine Rollenhierarchie zu erstellen). Wenn die Eigentümerschaft an einer Rolle übertragen wird, während die aktuellen Berechtigungen kopiert werden, zeigt die Ausgabe des Befehls SHOW GRANTS den neuen Eigentümer als Berechtigungsgeber aller untergeordneten Rollen der aktuellen Rolle an.

REVOKE

Setzt RESTRICT-Semantik durch, die das Entfernen aller ausgehenden Berechtigungen an einem Objekt erfordert, bevor die Eigentümerschaft auf eine neue Rolle übertragen wird. Dies soll die Rolle, die neuer Eigentümer ist, davor schützen, das Objekt unwissentlich mit bereits erteilten Berechtigungen zu erben.

Nach Übertragung der Eigentümerschaft müssen die Berechtigungen für das Objekt explizit neu an die Rolle vergeben werden.

Beachten Sie, dass das Schlüsselwort REVOKE nicht funktioniert, wenn Sie einer Rolle die Eigentümerschaft an zukünftigen Objekten eines bestimmten Typs in einer Datenbank oder einem Schema zuweisen (mit GRANT OWNERSHIP ON FUTURE <Objekttyp>).

COPY

Überträgt den Besitz an einem Objekt zusammen mit einer Kopie aller vorhandenen ausgehenden Berechtigungen auf das Objekt. Nach der Übertragung wird der neue Inhaber im System als Verleiher der kopierten Ausgangsberechtigungen identifiziert (d. h. in der Ausgabe SHOW GRANTS für das Objekt wird der neue Inhaber in der Spalte GRANTED_BY für alle Berechtigungen aufgeführt). Infolgedessen sind alle Berechtigungen, die später vor dem Eigentümerwechsel wieder vergeben werden, nicht mehr von der ursprünglichen Rolle des Berechtigungsgebers abhängig.

Der Widerruf einer Berechtigung unter Verwendung von REVOKE <Berechtigungen> … FROM ROLE mit der Option CASCADE führt nicht zum rekursiven Widerruf dieser ehemals abhängigen Berechtigungen. Die Berechtigungen müssen ausdrücklich widerrufen werden.

Dieser Parameter erfordert, dass die Rolle, die den Befehl GRANT OWNERSHIP ausführt, über die Berechtigung MANAGE GRANTS für das Konto verfügt.

Standard: REVOKE CURRENT GRANTS

Nutzungshinweise

  • Eine Rolle, die die Berechtigung MANAGE GRANTS hat, kann die Eigentümerschaft an einem Objekt auf eine beliebige Rolle übertragen. Eine Rolle, die die Berechtigung MANAGE GRANTS nicht hat, kann hingegen die Eigentümerschaft nur von sich selbst auf eine untergeordnete Rolle innerhalb der Rollenhierarchie übertragen.

  • Die GRANT OWNERSHIP-Anweisung wird blockiert, wenn ausgehende (d. h. abhängige) Berechtigungen an dem Objekt existieren. Der Objekteigentümer (oder eine höhere Rolle) kann explizit alle aktuellen Berechtigungen auf die Rolle, die neuer Eigentümer ist, kopieren (mit der Option COPY CURRENT GRANTS) oder alle ausgehenden Berechtigungen an dem Objekt zurücknehmen, bevor die Eigentümerschaft übertragen wird (mit der Option REVOKE CURRENT GRANTS).

  • Die Übertragung der Eigentümerschaft betrifft nur die zum Ausführungszeitpunkt des Befehls vorhandenen Objekte. Alle Objekte, die nach Ausführung des Befehls erstellt werden, befinden sich im Eigentum der Rolle, die bei der Erstellung des Objekts verwendet wurde.

  • Die Übertragung der Eigentümerschaft an Objekte der folgenden Typen ist gesperrt, es sei denn, folgende zusätzliche Bedingungen sind erfüllt:

    Pipes

    Die Pipe muss angehalten sein.

    Aufgaben

    Die geplante Aufgabe (d. h. die eigenständige Aufgabe oder die Stammaufgabe in einem Strukturbaum) muss angehalten sein. Beachten Sie, dass alle Aufgaben im Container automatisch angehalten werden, wenn alle Aufgaben in einer bestimmten Datenbank oder einem bestimmten Schema auf eine andere Rolle übertragen werden.

Beispiele

Entziehen Sie alle ausgehenden Berechtigungen an der mydb Datenbank, die derzeit der manager-Rolle gehört, bevor das Eigentum auf die analyst-Rolle übertragen wird:

REVOKE ALL PRIVILEGES ON DATABASE mydb FROM ROLE manager;

GRANT OWNERSHIP ON DATABASE mydb TO ROLE analyst;

GRANT ALL PRIVILEGES ON DATABASE mydb TO ROLE analyst;

Beachten Sie, dass dieses Beispiel den standardmäßigen (und empfohlenen) mehrstufigen Prozess der Eigentumsübertragung veranschaulicht.

Entziehen Sie in einem einzigen Schritt alle Berechtigungen an den im Schema mydb.public befindlichen Tabellen, und übertragen Sie die Eigentümerschaft an den Tabellen (zusammen mit einer Kopie ihrer aktuellen Berechtigungen) auf die Rolle analyst:

GRANT OWNERSHIP ON ALL TABLES IN SCHEMA mydb.public TO ROLE analyst COPY CURRENT GRANTS;

Übertragen Sie die Eigentümerschaft an der Tabelle mydb.public.mytable zusammen mit einer Kopie aller aktuellen ausgehenden Berechtigungen an der Tabelle an die Rolle analyst:

GRANT OWNERSHIP ON TABLE mydb.public.mytable TO ROLE analyst COPY CURRENT GRANTS;