REVOKE <Berechtigungen> FROM APPLICATION ROLE

Entzieht einer Anwendungsrolle ein oder mehrere Zugriffsrechte auf ein sicherungsfähiges Objekt auf Schemaebene. Die Berechtigungen, die entzogen werden können, sind objektspezifisch.

Weitere Informationen zu Rollen und zu sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Variationen:

GRANT OWNERSHIP, GRANT <Berechtigungen> … TO APPLICATION ROLE

Syntax

Kontorollen:

REVOKE [ GRANT OPTION FOR ]
    {
    | { 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 APPLICATION ROLE <name> [ RESTRICT | CASCADE ]
Copy

Wobei:

schemaObjectPrivileges ::=
  -- For ALERT
     { MONITOR | OPERATE } [ , ... ]
  -- For DYNAMIC TABLE
     OPERATE, SELECT [ , ...]
  -- For EVENT TABLE
     { INSERT | SELECT } [ , ... ]
  -- For FILE FORMAT, FUNCTION (UDF or external function), PROCEDURE, SECRET, or SEQUENCE
     USAGE [ , ... ]
  -- For PIPE
     { APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
  -- For { MASKING | PACKAGES | PASSWORD | ROW ACCESS | SESSION } POLICY or TAG
     APPLY [ , ... ]
  -- For SECRET
     READ, USAGE [ , ... ]
  -- For external STAGE
     USAGE [ , ... ]
  -- For internal STAGE
     READ [ , WRITE ] [ , ... ]
  -- For STREAM
     SELECT [ , ... ]
  -- For TABLE
     { APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
  -- For TAG
     READ
  -- For TASK
     { APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
  -- For VIEW
     { REFERENCES | SELECT } [ , ... ]
  -- For MATERIALIZED VIEW
     { APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
Copy

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

Erforderliche Parameter

object_name

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

object_type

Gibt den Typ des Objekts für Objekte auf Schemaebene an.

  • ALERT

  • DYNAMIC TABLE

  • EVENT TABLE

  • EXTERNAL TABLE

  • FILE FORMAT

  • FUNCTION

  • MASKING POLICY

  • MATERIALIZED VIEW

  • NETWORK RULE

  • PACKAGES POLICY

  • PASSWORD POLICY

  • PIPE

  • PROCEDURE

  • ROW ACCESS POLICY

  • SECRET

  • SESSION POLICY

  • SEQUENCE

  • STAGE

  • STREAM

  • TABLE

  • TAG

  • TASK

  • VIEW

object_type_plural

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

Beachten Sie, dass die Massenerteilung von Berechtigungen auf Pipes nicht zulässig ist.

name

Gibt den Bezeichner für die Empfänger-Anwendungsrolle an (d. h. die Rolle, der die Berechtigungen erteilt werden).

Optionale Parameter

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 Operation zum Entziehen der Berechtigungen erfolgreich ist oder fehlschlägt, basierend darauf, ob die Berechtigungen einer anderen Anwendungsrolle erneut erteilt wurden.

RESTRICT

Wenn die entzogene Berechtigung einer anderen Anwendungsrolle erneut erteilt wurde, schlägt der Befehl REVOKE fehl.

CASCADE

Wenn die entzogene Berechtigung einer anderen Rolle erneut erteilt wurde, schlägt der Befehl REVOKE fehl. Wenn der Zielrolle von einem anderen Berechtigungsgeber (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

Entziehen von Berechtigungen für einzelne Objekte:

Um anderen Anwendungsrollen die Berechtigungen für ein Objekt zu entziehen, können Sie eine übergeordnete Rolle verwenden oder eine aktive Rolle, die eines der folgenden Kriterien erfüllt:

  • Die Rolle wird in der GRANTED_BY-Spalte der Ausgabe von SHOW GRANTS als Berechtigungsgeber de Berechtigung identifiziert.

    Wenn Sie für das angegebene Objekt mehrere Instanzen einer Berechtigung erteilt haben, werden nur die von der aktiven Berechtigungsgeberrolle erteilten Berechtigungsinstanzen entzogen.

  • Die Rolle hat die globale Berechtigung MANAGE GRANTS.

    Wenn Sie für das angegebene Objekt mehrere Instanzen einer Berechtigung erteilt haben, werden alle Berechtigungsinstanzen entzogen.

    Beachten Sie, dass nur die Systemrolle SECURITYADMIN und höhere Rollen standardmäßig über die Berechtigung MANAGE GRANTS verfügen. Die Berechtigung kann jedoch auch kundenspezifischen Rollen erteilt werden.

Die folgenden Rollen können Objekten in einem verwalteten Zugriffsschema (d. h. Schemas, die mit der Syntax CREATE SCHEMA … WITH MANAGED ACCESS erstellt wurden) Berechtigungen entziehen:

  • Die Anwendungsrolle, denn diese Rolle ist der Schemaeigentümer (d. h. sie hat die Berechtigung OWNERSHIP für das Schema).

  • Eine Rolle mit der globalen MANAGE GRANTS-Berechtigung.

Entziehen von Berechtigungszuweisungen für zukünftige Objekte eines bestimmten Typs:

In verwalteten Zugriffsschemas kann entweder die Anwendungsrolle oder eine Rolle mit der globalen Berechtigung MANAGE GRANTS Berechtigungen für zukünftige Objekte des Schemas entziehen.

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

Nutzungshinweise

  • Eine Berechtigung kann einer Anwendungsrolle mehrfach von unterschiedlichen Berechtigungsgebern erteilt werden. Eine REVOKE <Berechtigung>-Anweisung entzieht nur Berechtigungszuweisungen, bei denen die aktive Rolle oder eine niedrigere Rolle in einer Hierarchie der Berechtigungsgeber ist. Jede weitere Berechtigungszuweisung einer bestimmten Berechtigung durch andere Berechtigungsgeber wird ignoriert.

    Eine REVOKE <Berechtigung>-Anweisung ist auch dann erfolgreich, wenn keine Berechtigungen entzogen werden. Eine REVOKE <Berechtigung>-Anweisung gibt nur dann einen Fehler zurück, wenn eine angegebene Berechtigung abhängige Berechtigungszuweisungen hat und in der Anweisung die CASCADE-Klausel fehlt.

  • Wenn Sie Berechtigungen für eine einzelne UDF entziehen, müssen Sie die Datentypen für die Argumente, falls vorhanden, für die UDF im Format udf_name ( [ arg_data_type , ... ] ) angeben. Dies ist erforderlich, da Snowflake Argumentdatentypen zur Auflösung von UDFs verwendet, die innerhalb eines Schemas den gleichen Namen haben. Weitere Informationen dazu finden Sie unter Übersicht zu benutzerdefinierten Funktionen.

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

  • Zukünftige Berechtigungszuweisungen: Durch das Entziehen von zukünftige Berechtigungszuweisungen werden nur Zuweisungen von Berechtigungen für zukünftige Objekte eines bestimmten Typs gelöscht. Berechtigungen, die vorhandenen Objekten erteilt werden, bleiben erhalten.

    Weitere Informationen dazu finden Sie unter verwaltete Zugriffsschemas.

Beispiel

Entziehen Sie einer Anwendungsrolle die SELECT-Berechtigung für eine Ansicht:

REVOKE SELECT ON VIEW data.views.credit_usage
  FROM APPLICATION ROLE app_snowflake_credits;
Copy