GRANT <Berechtigungen> … TO APPLICATION ROLE

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

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

Variationen:

GRANT OWNERSHIP, REVOKE <Berechtigungen> FROM APPLICATION ROLE

Syntax

GRANT {
        { schemaPrivileges         | ALL [ PRIVILEGES ] } ON SCHEMA <schema_name>
        | { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
        | { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN SCHEMA <schema_name>
      }
    TO APPLICATION ROLE <name> [ WITH GRANT OPTION ]
Copy

Wobei:

schemaPrivileges ::=
ADD SEARCH OPTIMIZATION
| CREATE {
    ALERT | EXTERNAL TABLE | FILE FORMAT | FUNCTION
    | MATERIALIZED VIEW | PIPE | PROCEDURE
    | { MASKING | PASSWORD | ROW ACCESS | SESSION } POLICY
    | SECRET | SEQUENCE | 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, 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

ON FUTURE

Gibt an, dass Berechtigungen für neue (d. h. zukünftige) Schemaobjekte eines angegebenen Typs erteilt werden und nicht für vorhandene Objekte. Zukünftige Berechtigungszuweisungen können jederzeit mit REVOKE <Berechtigungen> FROM APPLICATION ROLE und den Schlüsselwörtern ON FUTURE widerrufen werden. Alle Berechtigungen, die vorhandenen Objekten erteilt wurden, bleiben erhalten. Weitere Informationen zu zukünftigen Zuweisungen finden Sie unter Zukünftige Zuweisungen für Schemaobjekte (unter diesem Thema).

WITH GRANT OPTION

Wenn angegeben, darf die Empfänger-Anwendungsrolle die Berechtigungen auch anderen Rollen zuweisen.

Standard: Kein Wert, was bedeutet, dass die Empfänger-Anwendungsrolle die Berechtigungen nicht anderen Rollen zuweisen darf.

Bemerkung

Die WITH GRANT OPTION-Klausel unterstützt nicht die Berechtigung IMPORTED PRIVILEGES. Weitere Informationen dazu finden Sie unter Erteilen von Berechtigungen für eine freigegebene Datenbank.

Nutzungshinweise

Sie müssen eine Anwendungsrolle verwenden, um Berechtigungen für Objekte in einer Anwendung erteilen und entziehen zu können.

Dieser Befehl unterliegt unterschiedlichen Einschränkungen, je nachdem, ob Sie der Anbieter oder der Verbraucher der Anwendung sind.

Der Verbraucher der Anwendung darf in Bezug zu einer Anwendungsrolle Folgendes nicht tun:

  • Erteilen oder Entziehen von Objektberechtigungen in Bezug zu einer Anwendungsrolle.

  • Zuweisen einer Anwendungsrolle zu einer Datenbank oder Freigabe bzw. Entziehen einer Anwendungsrolle von einer Datenbank oder Freigabe.

  • Zuweisen einer Anwendungsrolle zu derselben Anwendung oder zu einer anderen Anwendung bzw. Entziehen einer Anwendungsrolle von derselben Anwendung oder von einer anderen Anwendung.

Diese Elemente gelten für den Anbieter der Anwendung in Bezug zu einer Anwendungsrolle.

  • Um einer Anwendungsrolle die OWNERSHIP-Berechtigung für ein Objekt oder alle Objekte eines angegebenen Typs in einem Schema zu erteilen und damit die Eigentümerschaft an dem Objekt von einer Anwendungsrolle auf eine andere Anwendungsrolle zu übertragen, verwenden Sie stattdessen den Befehl GRANT OWNERSHIP.

  • Es können mehrere Berechtigungen für denselben Objekttyp in einer einzigen GRANT-Anweisung angegeben werden, wobei die einzelnen Berechtigungen durch Kommas getrennt sind.

    Allerdings können der Ziel-Anwendungsrolle nur Berechtigungen zugewiesen werden, die die Anwendungsrolle, die den Befehl GRANT ausführt, innehat und erteilen kann. Für alle Berechtigungen, die nicht zugewiesen werden konnten, wird eine Warnmeldung ausgegeben.

  • Berechtigungen, die einer bestimmten Anwendungsrolle erteilt werden, werden automatisch an alle anderen Anwendungsrollen vererbt, denen die Anwendungsrolle zugewiesen wird, sowie an alle anderen übergeordneten Anwendungsrollen innerhalb der Rollenhierarchie.

    Weitere Details dazu finden Sie unter Übersicht zur Zugriffssteuerung.

  • In verwalteten Zugriffsschemas:

    • Die Berechtigung OWNERSHIP für Objekte kann nur an eine untergeordnete Rolle des Schemaeigentümers übertragen werden.

    • Für Stagingbereiche:

      • USAGE gilt nur für externe Stagingbereiche.

      • READ

      • WRITE gilt nur für intern 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 und Anforderungen an die Zugriffssteuerung (unter diesem Thema).

  • Beim Erteilen von Berechtigungen für eine einzelne UDF oder gespeicherte Prozedur müssen Sie die Datentypen der Argumente, falls vorhanden, mit der unten dargestellten Syntax angeben:

    <udf_or_stored_procedure_name> ( [ <arg_data_type> [ , ... ] ] )
    
    Copy

    Snowflake verwendet Argumentdatentypen zur Auflösung von UDFs und gespeicherten Prozeduren, die innerhalb eines Schemas den gleichen Namen haben. Weitere Informationen dazu finden Sie unter Überladen von Prozeduren und Funktionen.

Anforderungen an die Zugriffssteuerung

  • Dieser Befehl kann nur innerhalb der Anwendung ausgeführt werden.

  • Berechtigungen können nur für Objekte erteilt oder entzogen werden, deren Eigentümer die Anwendung ist. Um diese Objekte zu ermitteln, verwenden Sie den Befehl SHOW OBJECTS:

    SHOW OBJECTS OWNED BY APPLICATION myapp;
    
    Copy
  • Hinweis zu verwalteten Zugriffsschemas:

    • 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 von Berechtigungen zu treffen.

      Die folgenden Rollen können Objekten in einem verwalteten Zugriffsschema Berechtigungen zuweisen:

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

      • Eine Rolle, die die Anwendungsrolle erbt.

      • Eine Rolle mit der globalen Berechtigung MANAGE GRANTS kann Objekten im Schema Berechtigungen erteilen.

        Eine Rolle mit der globalen Berechtigung MANAGE GRANTS kann der aktuellen (Berechtigungsgeber-)Rolle keine zusätzlichen Berechtigungen erteilen.

    • Unter Zukünftige Zuweisungen für Schemaobjekte (unter diesem Thema) finden Sie die Anforderungen an die Zugriffssteuerung für zukünftige Berechtigungszuweisungen in verwalteten Zugriffsschemas.

Zukünftige Berechtigungszuweisungen zu Schemaobjekten

Die Hinweise in diesem Abschnitt gelten für das Festlegen zukünftiger Berechtigungszuweisungen für Objekte in einem Schema (d. h. wenn Sie die Schlüsselwörter ON FUTURE verwenden).

Hinweise

  • Wenn zukünftige Berechtigungszuweisungen zu demselben Objekttyp sowohl für eine Datenbank als auch für ein Schema in dieser Datenbank definiert werden, haben die Zuweisungen auf Schemaebene Vorrang vor den Zuweisungen auf Datenbankebene, und die Zuweisungen auf Datenbankebene werden ignoriert. Dieses Verhalten gilt für Berechtigungen auf zukünftige Objekte, die einer Anwendungsrolle oder verschiedenen Anwendungsrollen erteilt werden.

Einschränkungen

  • Für jeden sicherungsfähigen Objekttyp ist nur eine zukünftige Berechtigungszuweisung der OWNERSHIP-Berechtigung zulässig.

  • Für Objekte der folgenden Typen können keine zukünftige Berechtigungszuweisungen definiert werden:

    • Computepool

    • Externe Funktion

    • Image-Repository

    • Richtlinienobjekte:

      • Maskierungsrichtlinie

      • Paketrichtlinie

      • Zeilenzugriffsrichtlinie

      • Sitzungsrichtlinie

    • Tag

  • Eine zukünftige Berechtigungszuweisungen von OWNERSHIP-Berechtigungen für Objekte eines angegebenen Typs in einer Datenbank gilt nicht für neue Objekte in einem verwalteten Zugriffsschema.

  • Die folgenden Einschränkungen gelten für zukünftige Berechtigungszuweisungen für Objekte in einem verwalteten Zugriffsschema:

    • Eine zukünftige Berechtigungszuweisung der OWNERSHIP-Berechtigung für Objekte kann nur auf eine untergeordnete Rolle des Schemaeigentümers angewendet werden (d. h. auf die Rolle, die die OWNERSHIP-Berechtigung für das Schema hat).

    • Bevor die Eigentümerschaft eines verwalteten Zugriffsschemas auf eine andere Rolle übertragen werden kann, müssen alle offenen zukünftigen Berechtigungszuweisungen der OWNERSHIP-Berechtigung unter Verwendung von REVOKE <Berechtigungen> und den Schlüsselwörtern ON FUTURE widerrufen werden.

  • Zukünftige Berechtigungszuweisungen werden nicht angewendet, wenn eine Tabelle umbenannt oder ausgetauscht wird.

  • Zukünftige Berechtigungszuweisungen werden für benannte Stagingbereiche mit den folgenden Einschränkungen unterstützt:

    • Die Berechtigung WRITE kann nicht ohne die Berechtigung READ angegeben werden.

    • Die Berechtigung READ kann nicht widerrufen werden, wenn die Berechtigung WRITE vorhanden ist.

    • Für interne Stagingbereiche werden nur zukünftige Berechtigungszuweisungen mit den Berechtigungen READ oder WRITE materialisiert.

    • Für externe Stagingbereiche werden nur zukünftige Berechtigungszuweisungen mit den USAGE-Berechtigungen materialisiert.

  • In einem verwalteten Zugriffsschema können die Anwendungsrolle und eine Rolle mit der globalen Berechtigung MANAGE GRANTS Berechtigungen für zukünftige Objekte im verwalteten Zugriffsschema erteilen.

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

Beispiel

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

GRANT SELECT ON VIEW data.views.credit_usage
  TO APPLICATION ROLE app_snowflake_credits;
Copy