Kategorien:

DDL für Benutzer und Sicherheit (Zugriffssteuerung)

REVOKE <Berechtigungen> … FROM ROLE

Entfernt eine oder mehrere Berechtigungen für ein sicherungsfähiges Objekt von einer Rolle. Die Berechtigungen, die widerrufen werden können, sind objektspezifisch und in folgende Kategorien unterteilt:

  • Globale Berechtigungen.

  • Berechtigungen für Kontoobjekte (Ressourcenmonitore, virtuelle Warehouses und Datenbanken).

  • Berechtigungen für Schemata.

  • Berechtigungen für Schemaobjekte (Tabellen, Ansichten, Stagingbereiche, Dateiformate, UDFs und Sequenzen).

Weitere Informationen zu Rollen und zu sicherbaren Objekten finden Sie unter Zugriffssteuerung in Snowflake.

Siehe auch:

GRANT <Berechtigungen> … TO ROLE, GRANT OWNERSHIP

REVOKE <Berechtigung> … FROM SHARE

Syntax

REVOKE [ GRANT OPTION FOR ]
    {
       { globalPrivileges         | ALL [ PRIVILEGES ] } ON ACCOUNT
     | { accountObjectPrivileges  | ALL [ PRIVILEGES ] } ON { RESOURCE MONITOR | WAREHOUSE | DATABASE | INTEGRATION } <object_name>
     | { schemaPrivileges         | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
     | { schemaPrivileges         | ALL [ PRIVILEGES ] } ON { FUTURE SCHEMAS IN DATABASE <db_name> }
     | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN SCHEMA <schema_name> }
     | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
    }
  FROM [ ROLE ] <role_name> [ RESTRICT | CASCADE ]

Wobei:

globalPrivileges ::=
  { { CREATE { ROLE | USER | WAREHOUSE | DATABASE | INTEGRATION } } | APPLY MASKING POLICY | EXECUTE TASK | MANAGE GRANTS | MONITOR { EXECUTION | USAGE }  } [ , ... ]
accountObjectPrivileges ::=
-- For RESOURCE MONITOR
  { MODIFY | MONITOR } [ , ... ]
-- For WAREHOUSE
  { MODIFY | MONITOR | USAGE | OPERATE } [ , ... ]
-- For DATABASE
  { MODIFY | MONITOR | USAGE | CREATE SCHEMA | IMPORTED PRIVILEGES } [ , ... ]
-- For INTEGRATION
  { USAGE | USE_ANY_ROLE } [ , ... ]
schemaPrivileges ::=
  { MODIFY | MONITOR | USAGE | CREATE { TABLE | EXTERNAL TABLE | VIEW | MATERIALIZED VIEW | MASKING POLICY | FILE FORMAT | STAGE | PIPE | STREAM | TASK | FUNCTION | PROCEDURE | SEQUENCE } } [ , ... ]
schemaObjectPrivileges ::=
-- For TABLE
  { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES } [ , ... ]
-- For VIEW
    SELECT
-- For MATERIALIZED VIEW
    SELECT
-- For internal STAGE
    READ [ , WRITE ]
-- For external STAGE
    USAGE
-- For FILE FORMAT, FUNCTION (UDF or external function), or SEQUENCE
    USAGE
-- For STREAM
    SELECT
-- For TASK
   { MONITOR | OPERATE } [ , ... ]
-- For MASKING POLICY
    APPLY

Weitere Informationen zu den für jeden Objekttyp unterstützten Berechtigungen finden Sie unter Zugriffssteuerungsrechte.

Erforderliche Parameter

Objektname

Gibt den Bezeichner für das Objekt an, dem die Berechtigungen entzogen werden.

Objekttyp

Gibt den Typ des Objekts an (bei Schemaobjekten):

TABLE | EXTERNAL TABLE | VIEW | MATERIALIZED VIEW | STAGE | FILE FORMAT | FUNCTION | PROCEDURE | SEQUENCE | STREAM | TASK

Plural_des_Objekttyps

Pluralform von Objekttyp (z. B. TABLES, VIEWS).

Rollenname

Gibt den Bezeichner für die Empfängerrolle an (d. h. die Rolle, der die Berechtigungen entzogen werden).

Optionale Parameter

GRANT OPTION FOR

Entfernt, falls angegeben, die Möglichkeit, dass die Empfängerrolle die Berechtigungen einer anderen Rolle erteilt.

Standard: Kein Wert

ON FUTURE

Wenn angegeben, werden nur Berechtigungen entfernt, die für neue (d. h. zukünftige) Schemaobjekte eines angegebenen Typs (z. B. Tabellen oder Ansichten) und nicht für vorhandene Objekte erteilt wurden. Beachten Sie, dass alle Berechtigungen für vorhandene Objekte beibehalten werden.

RESTRICT | CASCADE

Ermittelt, falls angegeben, ob die Widerrufsoperation für die Berechtigungen erfolgreich ist oder fehlschlägt, basierend darauf, ob die Berechtigungen einer anderen Rolle erneut erteilt wurden.

  • RESTRICT: Wenn die zu widerrufende Berechtigung einer anderen Rolle erneut erteilt wurde, schlägt der Befehl REVOKE fehl.

  • CASCADE: Wenn die zu widerrufende Berechtigung erneut erteilt wurde, widerruft der Befehl REVOKE diese abhängigen Berechtigungen rekursiv. Wenn der Zielrolle von einem anderen Berechtigten (parallele Erteilung) die gleiche Berechtigung für ein Objekt erteilt wurde, ist diese Erteilung nicht betroffen und die Zielrolle behält die Berechtigung.

Standard: RESTRICT

Nutzungshinweise

  • Mehrere Berechtigungen für den gleichen Objekttyp können in einer einzigen GRANT-Anweisung angegeben werden (wobei jede Berechtigung durch Kommas getrennt wird). Alle anwendbaren Berechtigungen für den angegebenen Objekttyp können auch mit dem speziellen Schlüsselwort ALL [ PRIVILEGES ] vergeben werden. Beachten Sie jedoch, dass nur Berechtigungen, die die Rolle innehat und erteilen kann, die den Befehl GRANT ausführt, tatsächlich der Zielrolle gewährt werden. Für alle Berechtigungen, die nicht gewährt werden konnten, wird eine Warnmeldung ausgegeben.

  • Berechtigungen, die einer bestimmten Rolle erteilt werden, werden automatisch an alle anderen Rollen vererbt, denen die Rolle zugewiesen wird, sowie an alle anderen übergeordneten Rollen innerhalb der Rollenhierarchie. Weitere Details dazu finden Sie unter Zugriffssteuerung in Snowflake.

  • Bei Datenbanken gilt die Berechtigung IMPORTED PRIVILEGES nur für gemeinsam genutzte Datenbanken (d. h. Datenbanken, die aus einer Freigabe erstellt wurden). Weitere Details dazu finden Sie unter Datenverbraucher.

  • Für Schemata und Objekte in Schemata wird eine Option angeboten, um Berechtigungen für alle Objekte desselben Typs innerhalb des Containers (d. h. Datenbank oder Schema) zu vergeben. Dies ist eine praktische Option; intern wird der Befehl in eine Reihe von individuellen GRANT-Befehlen für jedes Objekt erweitert. Es sind nur Objekte betroffen, die derzeit innerhalb des Containers vorhanden sind.

    Beachten Sie jedoch, dass im Snowflake-Modell die Massenerteilung von Berechtigungen keine empfohlene Praxis ist. Stattdessen empfiehlt Snowflake, eine gemeinsame Rolle anzulegen und mit dieser Rolle Objekte zu erstellen, die automatisch für alle Benutzer zugänglich sind, denen die Rolle zugewiesen wurde.

  • Für Stagingbereiche:

    • USAGE gilt nur für externe Stagingbereiche.

    • READ | WRITE gilt nur für interne Stagingbereiche. Um die WRITE-Berechtigung für einen internen Stagingbereich erteilen zu können, muss zuerst die READ-Berechtigung für den Stagingbereich erteilt werden.

    Weitere Informationen zu externen und internen Stagingbereichen finden Sie unter CREATE STAGE.

  • Bei der Erteilung von Berechtigungen für eine einzelne UDF müssen Sie für die UDF ggf. die Datentypen für die Argumente angeben (in Form von UDF-Name ( [ Argumentdatentyp , ... ] )). Dies ist erforderlich, da Snowflake Argumentdatentypen zur Auflösung von UDFs verwendet, die innerhalb eines Schemas den gleichen Namen haben. Ein Beispiel dazu finden Sie unter Beispiele (unter diesem Thema). Weitere Details dazu finden Sie unter Übersicht zu UDFs.

  • Wenn Sie Berechtigungen für eine einzelne gespeicherte Prozedur vergeben, müssen Sie für die Prozedur die Datentypen für die Argumente, falls vorhanden, angeben (in Form von Prozedurname ( [ Argumentdatentyp , ... ] )). Dies ist erforderlich, da Snowflake Argumentdatentypen zur Auflösung von gespeicherten Prozeduren verwendet, die innerhalb eines Schemas den gleichen Namen haben.

  • Sicherheitsadministratoren, denen die Berechtigung MANAGE GRANTS erteilt wurde, können alle Zuweisungen für Erteilungen im System anzeigen und ändern.

Beispiele

Widerrufen Sie für die Rolle analyst die erforderlichen Berechtigungen zur Steuerung (d. h. Anhalten und Fortsetzen) des report_wh-Warehouse:

REVOKE OPERATE ON WAREHOUSE report_wh FROM ROLE analyst;

Wie im vorherigen Beispiel, aber der Rolle analyst wird auch nicht erlaubt, die Berechtigung anderen Rollen zu erteilen:

REVOKE GRANT OPTION FOR OPERATE ON WAREHOUSE report_wh FROM ROLE analyst;

Widerrufen Sie für die Rolle analyst die Berechtigung SELECT für alle vorhandenen Tabellen im mydb.myschema-Schema:

REVOKE SELECT ON ALL TABLES IN SCHEMA mydb.myschema from ROLE analyst;

Widerrufen Sie für die Rolle analyst alle Berechtigungen für zwei UDFs (mit dem gleichen Namen im aktuellen Schema):

REVOKE ALL PRIVILEGES ON FUNCTION add5(number) FROM ROLE analyst;

REVOKE ALL PRIVILEGES ON FUNCTION add5(string) FROM ROLE analyst;

Beachten Sie, dass die UDFs unterschiedliche Argumente haben, sodass Snowflake UDFs mit gleichem Namen eindeutig identifizieren kann. Weitere Informationen zur Benennung von UDFs finden Sie unter Übersicht zu UDFs.

Widerrufen Sie alle Berechtigungen für zwei gespeicherte Prozeduren (mit dem gleichen Namen im aktuellen Schema) der Rolle analyst:

REVOKE ALL PRIVILEGES ON PROCEDURE clean_schema(string) FROM ROLE analyst;

REVOKE ALL PRIVILEGES ON procedure clean_schema(string, string) FROM ROLE analyst;

Beachten Sie, dass die beiden gespeicherten Prozeduren unterschiedliche Argumente haben, sodass Snowflake Prozeduren mit dem gleichen Namen eindeutig identifizieren kann.

Widerrufen Sie die Berechtigungen für SELECT und INSERT, die allen zukünftigen Tabellen erteilt wurden, die im mydb.myschema-Schema von der Rolle role1 erstellt werden:

REVOKE SELECT,INSERT ON FUTURE TABLES IN SCHEMA mydb.myschema
FROM ROLE role1;