REVOKE <Berechtigungen> FROM APPLICATION

Entzieht einer Anwendungsrolle ein oder mehrere Zugriffsrechte auf ein sicherungsfähiges Objekt aus einer Anwendung. 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 <Berechtigungen> … TO APPLICATION

Syntax

REVOKE {  { globalPrivileges } ON ACCOUNT
        | { accountObjectPrivileges  | ALL [ PRIVILEGES ] } ON { USER | RESOURCE MONITOR | WAREHOUSE | COMPUTE POOL | DATABASE | INTEGRATION | CONNECTION | FAILOVER GROUP | REPLICATION GROUP | EXTERNAL VOLUME } <object_name>
        | { schemaPrivileges         | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
        | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
       }
     FROM APPLICATION <name>
Copy

Wobei:

globalPrivileges ::=
  {
      CREATE {
       COMPUTE POOL | DATABASE | WAREHOUSE
      }
      | BIND SERVICE ENDPOINT
      | EXECUTE MANAGED TASK
      | MANAGE WAREHOUSES
      | READ SESSION
  }
  [ , ... ]
Copy
accountObjectPrivileges ::=
-- For COMPUTE POOL
   { MODIFY | MONITOR | OPERATE | USAGE } [ , ... ]
-- For CONNECTION
   { FAILOVER } [ , ... ]
-- For DATABASE
   { APPLYBUDGET | CREATE { DATABASE ROLE | SCHEMA }
   | IMPORTED PRIVILEGES | MODIFY | MONITOR | USAGE } [ , ... ]
-- For EXTERNAL VOLUME
   { USAGE } [ , ... ]
-- For FAILOVER GROUP
   { FAILOVER | MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For INTEGRATION
   { USAGE | USE_ANY_ROLE } [ , ... ]
-- For REPLICATION GROUP
   { MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For RESOURCE MONITOR
   { MODIFY | MONITOR } [ , ... ]
-- For USER
   { MONITOR } [ , ... ]
-- For WAREHOUSE
   { APPLYBUDGET | MODIFY | MONITOR | USAGE | OPERATE } [ , ... ]
Copy
schemaPrivileges ::=
ADD SEARCH OPTIMIZATION
| CREATE {
    ALERT | EXTERNAL TABLE | FILE FORMAT | FUNCTION
    | IMAGE REPOSITORY | MATERIALIZED VIEW | PIPE | PROCEDURE
    | { AGGREGATION | MASKING | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY
    | SECRET | SEQUENCE | SERVICE | SNAPSHOT | STAGE | STREAM
    | TAG | TABLE | TASK | VIEW
  }
| MODIFY | MONITOR | USAGE
[ , ... ]
Copy
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, SEQUENCE, or SNAPSHOT
     USAGE [ , ... ]
  -- For IMAGE REPOSITORY
     { READ, WRITE } [ , ... ]
  -- For PIPE
     { APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
  -- For { MASKING | PACKAGES | PASSWORD | ROW ACCESS | SESSION } POLICY or TAG
     APPLY [ , ... ]
  -- For SECRET
     READ, USAGE [ , ... ]
  -- For SERVICE
     { MONITOR | OPERATE } [ , ... ]
  -- 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 Berechtigungen, die für jeden Objekttyp unterstützt werden, 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).

Massenerteilung von Berechtigungen auf Pipes ist nicht zulässig.

name

Gibt den Bezeichner für die Empfängeranwendung an (die Rolle, der die Berechtigungen gewährt werden).

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.

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

Nutzungshinweise

  • Berechtigungen für beliebige Klassen können nicht direkt erteilt oder entzogen werden. Sie können jedoch eine Instanz einer Klasse erstellen und einer Kontorolle die Instanzrollen entziehen. Entziehen Sie die Berechtigung CREATE <class_name> für das Schema, damit eine Rolle keine Instanz einer Klasse erstellen kann.

  • Eine Berechtigung kann einer Rolle mehrfach von unterschiedlichen Berechtigungsgebern erteilt werden. Eine REVOKE <Berechtigung>-Anweisung widerruft 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.

    Beachten Sie außerdem, dass eine REVOKE <Berechtigung>-Anweisung auch dann erfolgreich ist, 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.

  • 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 ] erteilt 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.

    Sie können dieses Schlüsselwort nicht für Tags angeben.

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

  • Für Schemas und Objekte in Schemas wird eine Option angeboten, um Berechtigungen für alle Objekte desselben Typs innerhalb des Containers (Datenbank oder Schema) zu vergeben. Dies ist eine praktische Option; intern wird der Befehl in eine Folge von einzelnen 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.

  • Wenn Sie Berechtigungen für eine einzelne UDF vergeben, müssen Sie die Datentypen für die Argumente, falls vorhanden, für die UDF in der Form 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 Details dazu finden Sie unter Überblick über benutzerdefinierte Funktionen.

  • 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, in der Form 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.

    Weitere Informationen dazu finden Sie unter verwaltete Zugriffsschemas.

Beispiel

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

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