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 | DATABASE | SCHEMA | TABLE | VIEW | STAGE | FILE FORMAT | STREAM | TASK | PIPE | INTEGRATION | FUNCTION | PROCEDURE | SEQUENCE }
schemaObjectsType ::=
  { TABLES | VIEWS | STAGES | FILE FORMATS | FUNCTIONS | PROCEDURES | SEQUENCES | STREAMS | TASKS }

Erforderliche Parameter

objectType Objektname oder . ALL schemaObjectsType IN SCHEMA Schemaname

Gibt an, ob der Besitz an einem einzelnen Objekt (des angegebenen Typs) oder an allen Schema-Objekten des angegebenen Typs (im angegebenen Schema) übertragen werden soll:

  • Bei Einzelobjekten werden alle Objekttypen unterstützt:

    ROLE | USER | WAREHOUSE | DATABASE | SCHEMA | TABLE | VIEW | STAGE | FILE FORMAT | STREAM | TASK | PIPE | FUNCTION | PROCEDURE | SEQUENCE

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

    TABLES | 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 der Besitzt auf eine neue Rolle übertragen wird:

REVOKE

Setzt RESTRICT-Semantik durch, die das Entfernen aller ausgehenden Berechtigungen an einem Objekt erfordert, bevor der Besitz auf eine neue Rolle übertragen wird. Dies kann durch die besitzende Rolle (oder eine höhere Rolle) für das Objekt erreicht werden. Dies soll die neue besitzende Rolle davor schützen, das Objekt unwissentlich mit bereits gewährten Berechtigungen zu erben.

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

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.

Standard: REVOKE CURRENT GRANTS

Bemerkung

Eine Rolle, die die Berechtigung MANAGE GRANTS besitzt, kann den Besitz eines Objekts auf eine beliebige Rolle übertragen. Eine Rolle, die die Berechtigung MANAGE GRANTS nicht besitzt, kann hingegen nur den Besitz von sich selbst auf eine untergeordnete Rolle innerhalb einer Rollenhierarchie übertragen.

Nutzungshinweise

  • Die Eigentumsübertragung betrifft nur bestehende Objekte zum Zeitpunkt der Befehlserteilung. Alle Objekte, die nach der Ausgabe des Befehls erstellt werden, sind Eigentum der Rolle, die bei der Erstellung des Objekts verwendet wurde.

  • Wenn Sie sich nicht ausdrücklich dafür entscheiden, alle aktuellen Berechtigungen in die neue Eigentümerrolle zu kopieren (mit der Option COPY CURRENT GRANTS), müssen Sie die folgenden Aufgaben ausführen, um das Eigentum zu übertragen:

    1. Führen Sie REVOKE <Berechtigungen> … FROM ROLE für die Objekte aus.

    2. Führen Sie GRANT OWNERSHIP für die Objekte aus.

    3. Verwenden Sie GRANT <Berechtigungen> … TO ROLE, um der neuen Eigentümerrolle die Berechtigungen für das/die Objekt(e), falls angemessen/erwünscht, erneut zu gewähren.

    Dies ist der (empfohlene) Standardprozess, der befolgt werden muss, um die Zugriffsrechte bei der Eigentumsübertragung explizit zu steuern.

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 vorhandenen Tabellen im mydb.public-Schema und übertragen Sie das Eigentum 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 das Eigentum an der mydb.public.mytable-Tabelle an die analyst-Rolle zusammen mit einer Kopie aller aktuellen ausgehenden Berechtigungen an der Tabelle:

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