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

Unter diesem Thema:

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, PROCEDURE, 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

Sicherheitsanforderungen

Erteilen von Berechtigungen für einzelne Objekte

Im Allgemeinen kann entweder ein Objekteigentümer (d. h. die Rolle mit der Berechtigung OWNERSHIP für das Objekt) oder eine Rolle mit der globalen Berechtigung MANAGE GRANTS anderen Rollen die Berechtigungen für das Objekt entziehen.

In verwalteten Zugriffsschemas (d. h. Schemas, die mit der CREATE SCHEMA … WITH MANAGED ACCESS-Syntax erstellt wurden) verlieren Objekteigentümer die Möglichkeit, Entscheidungen über das Erteilen oder Entziehen von Berechtigungen zu treffen. Nur der Schemaeigentümer (d. h. die Rolle mit der OWNERSHIP-Berechtigung für das Schema) oder eine Rolle mit der Berechtigung MANAGE GRANTS kann Berechtigungen für Objekte im Schema entziehen.

Definieren von Zuweisungen für zukünftige Objekte eines bestimmten Typs

Datenbankebene

Die globale Berechtigung MANAGE GRANTS ist erforderlich, um Berechtigungen für zukünftige Objekte einer Datenbank zu erteilen oder zu entziehen. Nur die Systemrollen SECURITYADMIN und ACCOUNTADMIN haben die MANAGE GRANTS-Berechtigung. Diese Berechtigung kann jedoch benutzerdefinierten Rollen erteilt werden.

Schemaebene

In verwalteten Zugriffsschemas (d. h. Schemas, die mit der CREATE SCHEMA … WITH MANAGED ACCESS-Syntax erstellt wurden) kann nur der Schemaeigentümer (d. h. die Rolle mit der Berechtigung OWNERSHIP für das Schema) Berechtigungen für zukünftige Objekte des Schemas erteilen oder entziehen.

Bei Standardschemas ist die globale Berechtigung MANAGE GRANTS erforderlich, um Berechtigungen für zukünftige Objekte des Schemas zu erteilen oder zu entziehen.

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.

Beispiele

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

REVOKE OPERATE ON WAREHOUSE report_wh FROM ROLE analyst;

Entziehen Sie der Rolle analyst nur die Zuweisungsoption für die OPERATE-Berechtigung für das Warehouse report_wh. Die Rolle behält die OPERATE-Berechtigung, kann aber anderen Rollen nicht mehr die OPERATE-Berechtigung für das Warehouse 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;