GRANT <Berechtigungen>

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

Weitere Informationen zum Erteilen von Berechtigungen für sicherungsfähige Objekte an eine Freigabe finden Sie unter GRANT <Berechtigung> … TO SHARE.

Rollen:

Die Berechtigungen, die Rollen erteilt werden können, sind in die folgenden Kategorien unterteilt:

  • Globale Berechtigungen.

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

  • Berechtigungen für Schemas.

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

Datenbankrollen:

Die Berechtigungen, die Datenbankrollen erteilt werden können, sind in die folgenden Kategorien unterteilt:

  • Berechtigungen für die Datenbank, die die Datenbankrolle enthält.

  • Berechtigungen für Schemas der Datenbank, die die Datenbankrolle enthält.

  • Berechtigungen für Schemaobjekte wie Tabellen, Ansichten, Stagingbereiche, Dateiformate, UDFs und Sequenzen in der Datenbank, die die Datenbankrolle enthält.

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

Variationen:

GRANT OWNERSHIP, GRANT <Berechtigung> … TO SHARE

Siehe auch:

REVOKE <Berechtigungen>

Syntax

Kontorollen:

GRANT {  { globalPrivileges         | ALL [ PRIVILEGES ] } ON ACCOUNT
       | { accountObjectPrivileges  | ALL [ PRIVILEGES ] } ON { USER | RESOURCE MONITOR | WAREHOUSE | COMPUTE POOL | DATABASE | INTEGRATION | FAILOVER GROUP | REPLICATION GROUP | EXTERNAL VOLUME } <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 { DATABASE <db_name> | SCHEMA <schema_name> } }
       | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
      }
  TO [ ROLE ] <role_name> [ WITH GRANT OPTION ]
Copy

Datenbankrollen:

GRANT {  { CREATE SCHEMA | MODIFY | MONITOR | USAGE } [ , ... ] } ON DATABASE <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 { DATABASE <db_name> | SCHEMA <schema_name> } }
       | { schemaObjectPrivileges   | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
      }
  TO DATABASE ROLE <database_role_name> [ WITH GRANT OPTION ]
Copy

Wobei:

globalPrivileges ::=
  {
      CREATE {
                ACCOUNT | COMPUTE POOL | DATA EXCHANGE LISTING | DATABASE | FAILOVER GROUP | INTEGRATION
                | NETWORK POLICY | EXTERNAL VOLUME | REPLICATION GROUP | ROLE | SHARE
                | USER | WAREHOUSE
      }
      | APPLY { { AGGREGATION | AUTHENTICATION | MASKING | PACKAGES | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY | TAG }
      | ATTACH POLICY | AUDIT | BIND SERVICE ENDPOINT
      | EXECUTE { ALERT | TASK }
      | IMPORT SHARE
      | MANAGE { GRANTS | LISTING AUTO FULFILLMENT | WAREHOUSES }
      | MODIFY { LOG LEVEL | TRACE LEVEL | SESSION LOG LEVEL | SESSION TRACE LEVEL }
      | MONITOR { EXECUTION | SECURITY | USAGE }
      | OVERRIDE SHARE RESTRICTIONS | PURCHASE DATA EXCHANGE LISTING | RESOLVE ALL
  }
  [ , ... ]
Copy
accountObjectPrivileges ::=
-- For COMPUTE POOL
   { MODIFY | MONITOR | OPERATE | USAGE } [ , ... ]
-- 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
| APPLYBUDGET

| CREATE {
      ALERT | DYNAMIC TABLE | EXTERNAL TABLE | FILE FORMAT | FUNCTION | HYBRID TABLE | IMAGE REPOSITORY |
      | ICEBERG TABLE | MATERIALIZED VIEW | MODEL | NETWORK RULE | PIPE | PROCEDURE
      | { AGGREGATION | AUTHENTICATION | MASKING | PACKAGES | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY | SERVICE
      | SECRET | SEQUENCE | STAGE | STREAM | STREAMLIT
      | SNOWFLAKE.CORE.BUDGET |
      | SNOWFLAKE.ML.ANOMALY_DETECTION | SNOWFLAKE.ML.FORECAST
      | TAG | TABLE | TASK | VIEW
  }
| MODIFY | MONITOR | USAGE
[ , ... ]
Copy
schemaObjectPrivileges ::=
  -- For ALERT
     { MONITOR | OPERATE } [ , ... ]
  -- For DYNAMIC TABLE
     MONITOR, OPERATE, SELECT [ , ...]
  -- For EVENT TABLE
     { INSERT | SELECT } [ , ... ]
  -- For FILE FORMAT, FUNCTION (UDF or external function), MODEL, PROCEDURE, SECRET, or SEQUENCE
     USAGE [ , ... ]
  -- For HYBRID TABLE
     { INSERT | SELECT | UPDATE } [ , ... ]
  -- For IMAGE REPOSITORY
     { READ, WRITE } [ , ... ]
  -- For ICEBERG TABLE
     { APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
  -- For PIPE
     { APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
  -- For { AGGREGATION | AUTHENTICATION | MASKING | PACKAGES | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY or TAG
     APPLY [ , ... ]
  -- For SECRET
     READ, USAGE [ , ... ]
  -- For SERVICE
     { USAGE | MONITOR | OPERATE } [ , ... ]
  -- For external STAGE
     USAGE [ , ... ]
  -- For internal STAGE
     READ [ , WRITE ] [ , ... ]
  -- For STREAM
     SELECT [ , ... ]
  -- For STREAMLIT
     USAGE [ , ... ]
  -- 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.

  • AGGREGATION POLICY

  • ALERT

  • AUTHENTICATION POLICY

  • DYNAMIC TABLE

  • EVENT TABLE

  • EXTERNAL TABLE

  • FILE FORMAT

  • FUNCTION

  • HYBRID TABLE

  • IMAGE REPOSITORY

  • ICEBERG TABLE

  • MASKING POLICY

  • MATERIALIZED VIEW

  • MODEL

  • NETWORK RULE

  • PACKAGES POLICY

  • PASSWORD POLICY

  • PIPE

  • PROCEDURE

  • PROJECTION POLICY

  • ROW ACCESS POLICY

  • SECRET

  • SERVICE

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

role_name

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

database_role_name

Gibt den Bezeichner für die Empfänger-Datenbankrolle an (d. h. die Rolle, der die Berechtigungen erteilt werden). Wenn der Bezeichner nicht im Format db_name.database_role_name vollqualifiziert ist, sucht der Befehl die Datenbankrolle in der aktuellen Datenbank der Sitzung.

Alle Berechtigungen sind auf die Datenbank beschränkt, die die Datenbankrolle enthält, sowie auf andere Objekte in derselben Datenbank.

Optionale Parameter

FUTURE

Gibt an, dass Berechtigungen für neue (d. h. zukünftige) Datenbank- oder Schemaobjekte eines angegebenen Typs (z. B. Tabellen oder Ansichten) und nicht für vorhandene Objekte erteilt werden. Beachten Sie, dass zukünftige Berechtigungszuweisungen jederzeit mit REVOKE <Berechtigungen> und den Schlüsselwörtern ON FUTURE widerrufen werden können. Alle Berechtigungen, die für vorhandene Objekte erteilt wurden, bleiben erhalten. Weitere Informationen zu zukünftigen Berechtigungszuweisungen finden Sie unter Zukünftige Berechtigungszuweisungen zu Datenbank- oder Schemaobjekten (unter diesem Thema).

WITH GRANT OPTION

Wenn angegeben, erlaubt es der Empfängerrolle, die Berechtigungen auch anderen Rollen zu erteilen.

Standard: Kein Wert, was bedeutet, dass die Empfängerrolle die Berechtigungen nicht anderen Rollen zuweisen kann.

Bemerkung

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

Nutzungshinweise

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

  • Um einer Rolle die OWNERSHIP-Berechtigung für ein Objekt (oder alle Objekte eines bestimmten Typs in einem Schema) zu erteilen und damit den Besitz des Objekts von einer Rolle auf eine andere Rolle zu übertragen, verwenden Sie stattdessen GRANT OWNERSHIP. Der Befehl GRANT OWNERSHIP hat eine andere Syntax.

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

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

    • Dieses Schlüsselwort erteilt keine Berechtigungen für eine Klasse, wenn Sie versuchen, ALL-Berechtigungen für ein Schema zu erteilen. Um einer Rolle zu erlauben, Instanzen einer bestimmten Klasse zu erstellen, erteilen Sie die CREATE-Berechtigung direkt, wie im Beispiel Klassen gezeigt.

  • 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 Übersicht zur Zugriffssteuerung.

  • 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 Verwenden von freigegebenen Daten. Beachten Sie, dass die Berechtigung IMPORTED PRIVILEGES einer Datenbankrolle nicht erteilt werden kann.

  • Für Schemas und Objekte in Schemas wird eine Option ALL object_type_plural in container 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 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.

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

  • 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 oder gespeicherten Prozeduren, die innerhalb eines Schemas den gleichen Namen haben. Weitere Informationen dazu finden Sie unter Überladen von Prozeduren und Funktionen.

  • Bei dynamischen Tabellen muss die empfangende Rolle über die USAGE-Berechtigung für die Datenbank und das Schema, die/das die dynamische Tabelle enthält, sowie für das Warehouse verfügen, das zur Aktualisierung der Tabelle verwendet wird. Weitere Informationen dazu finden Sie unter Zugriffssteuerung für dynamische Tabellen.

Anforderungen an die Zugriffssteuerung

Erteilen von Berechtigungen für einzelne Objekte:

Im Allgemeinen kann eine Rolle mit einer der folgenden Berechtigungen anderen Rollen Berechtigungen für ein Objekt erteilen:

  • Die globale Berechtigung MANAGE GRANTS

    Nur die Systemrollen SECURITYADMIN und ACCOUNTADMIN haben die MANAGE GRANTS-Berechtigung. Diese Berechtigung kann jedoch kundenspezifischen Rollen erteilt werden.

  • Die OWNERSHIP-Berechtigung für das Objekt. Beim Erteilen von Berechtigungen für Schemaobjekte (z. B. Tabelle und Ansichten) muss die Rolle außerdem über die Berechtigung USAGE für die übergeordnete Datenbank und das übergeordnete Schema verfügen.

  • Wenn einer Rolle eine Berechtigung erteilt wurde und dabei in der GRANT <Berechtigungen> … TO ROLE-Anweisung der Parameter WITH GRANT OPTION enthalten war, kann die Rolle diese Berechtigung auch anderen Rollen erteilen.

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. 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 erteilen.

Beachten Sie, dass eine Rolle mit der globalen Berechtigung MANAGE GRANTS der aktuellen (Berechtigungsgeber-)Rolle keine zusätzlichen Berechtigungen erteilen kann.

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. Nur die Systemrollen SECURITYADMIN und ACCOUNTADMIN haben die MANAGE GRANTS-Berechtigung. Diese Berechtigung kann jedoch kundenspezifischen Rollen erteilt werden.

Schemaebene

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

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

Weitere Informationen zum Definieren von Zuweisungen für zukünftige Objekte eines bestimmten Typs finden Sie unter Zukünftige Berechtigungszuweisungen zu Datenbank- oder Schemaobjekten (unter diesem Thema).

Zukünftige Berechtigungszuweisungen zu Datenbank- oder Schemaobjekten

Die Hinweise in diesem Abschnitt gelten für das Festlegen zukünftiger Berechtigungszuweisungen zu Objekten in einem Schema oder einer Datenbank, d. h. wenn Sie das Schlüsselwort ON FUTURE verwenden.

Weitere Informationen dazu finden Sie unter verwaltete Zugriffsschemas.

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 Rolle oder verschiedenen Rollen erteilt werden.

    Mit den folgenden Anweisungen werden beispielsweise unterschiedliche Berechtigungen für Objekte desselben Typs auf Datenbank- und Schemaebene erteilt.

    Der Rolle r1 wird die SELECT-Berechtigung für alle zukünftigen Schemas der Datenbank d1 erteilt:

    GRANT SELECT ON FUTURE TABLES IN DATABASE d1 TO ROLE r1;
    
    Copy

    Der Rolle r2 werden die Berechtigungen INSERT und DELETE für alle zukünftigen Tabellen erteilt, die im Schema d1.s1 erstellt werden:

    GRANT INSERT,DELETE ON FUTURE TABLES IN SCHEMA d1.s1 TO ROLE r2;
    
    Copy

    Die zukünftigen Berechtigungszuweisungen der Rolle r1 werden vollständig ignoriert. Wenn im Schema d1.s1 eine neue Tabelle erstellt wird, kommen nur die zukünftigen Berechtigungszuweisungen zur Anwendung, die für Tabellen der Rolle r2 definiert wurden.

  • Zukünftige Berechtigungszuweisungen auf Datenbankebene gelten sowohl für reguläre als auch für verwaltete Zugriffsschemas.

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:

      • Aggregationsrichtlinie

      • Maskierungsrichtlinie

      • Paketrichtlinie

      • Projektionsrichtlinie

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

Beispiele

Rollen

Erteilen Sie der analyst-Rolle die erforderlichen Berechtigungen zur Steuerung (d. h. Anhalten und Fortsetzen) des report_wh-Warehouse:

GRANT OPERATE ON WAREHOUSE report_wh TO ROLE analyst;
Copy

Wie im vorherigen Beispiel, aber erlaubt der Rolle analyst auch das Erteilen von Berechtigungen für andere Rollen:

GRANT OPERATE ON WAREHOUSE report_wh TO ROLE analyst WITH GRANT OPTION;
Copy

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

GRANT SELECT ON ALL TABLES IN SCHEMA mydb.myschema to ROLE analyst;
Copy

Erteilen Sie der Rolle analyst alle Berechtigungen an zwei UDFs im Schema mydb.myschema:

GRANT ALL PRIVILEGES ON FUNCTION mydb.myschema.add5(number) TO ROLE analyst;

GRANT ALL PRIVILEGES ON FUNCTION mydb.myschema.add5(string) TO ROLE analyst;
Copy

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 benutzerdefinierten Funktionen.

Erteilen Sie der Rolle analyst die Nutzungsberechtigung für eine im Schema mydb.myschema gespeicherte Prozedur:

GRANT USAGE ON PROCEDURE mydb.myschema.myprocedure(number) TO ROLE analyst;
Copy

Beachten Sie, dass Namen von gespeicherten Prozeduren (wie UDF-Namen) überladen werden können. Daher müssen Sie den Datentyp des/der Argumente(s) angeben. Weitere Informationen zum Überladen von Namen finden Sie unter Überladen von Prozeduren und Funktionen.

Erteilen Sie die Berechtigung für das Erstellen von materialisierte Ansichten im angegebenen Schema:

GRANT CREATE MATERIALIZED VIEW ON SCHEMA mydb.myschema TO ROLE myrole;
Copy

Erteilen Sie der Rolle role1 die Berechtigungen SELECT und INSERT für alle zukünftigen Tabellen, die im mydb.myschema-Schema erstellt werden:

GRANT SELECT,INSERT ON FUTURE TABLES IN SCHEMA mydb.myschema
TO ROLE role1;
Copy

Erteilen Sie der Rolle role1 die Berechtigung USAGE für alle zukünftigen Schemas in der mydb-Datenbank:

use role accountadmin;

grant usage on future schemas in database mydb to role role1;
Copy

Datenbankrollen

Erteilen Sie der Datenbankrolle mydb.dr1 die SELECT-Berechtigung für alle vorhandenen Tabellen im mydb.myschema-Schema:

GRANT SELECT ON ALL TABLES IN SCHEMA mydb.myschema
  TO DATABASE ROLE mydb.dr1;
Copy

Erteilen Sie der Datenbankrolle mydb.dr1 alle Berechtigungen an zwei UDFs im Schema mydb.myschema:

GRANT ALL PRIVILEGES ON FUNCTION mydb.myschema.add5(number)
  TO DATABASE ROLE mydb.dr1;

GRANT ALL PRIVILEGES ON FUNCTION mydb.myschema.add5(string)
  TO DATABASE ROLE mydb.dr1;
Copy

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 benutzerdefinierten Funktionen.

Erteilen Sie der Datenbankrolle mydb.dr1 die Nutzungsberechtigung an einer im Schema mydb.myschema gespeicherten Prozedur:

GRANT USAGE ON PROCEDURE mydb.myschema.myprocedure(number)
  TO DATABASE ROLE mydb.dr1;
Copy

Beachten Sie, dass Namen von gespeicherten Prozeduren (wie UDF-Namen) überladen werden können. Daher müssen Sie den Datentyp des/der Argumente(s) angeben. Weitere Informationen zum Überladen von gespeicherten Prozeduren finden Sie unter Überladen von Prozeduren und Funktionen.

Erteilen Sie der Datenbankrolle mydb.dr1 die Berechtigung zum Erstellen von materialisierte Ansichten im angegebenen Schema:

GRANT CREATE MATERIALIZED VIEW ON SCHEMA mydb.myschema
  TO DATABASE ROLE mydb.dr1;
Copy

Erteilen Sie der Datenbankrolle mydb.dr1 die Berechtigungen SELECT und INSERT für alle zukünftigen Tabellen, die im Schema mydb.myschema erstellt werden:

GRANT SELECT,INSERT ON FUTURE TABLES IN SCHEMA mydb.myschema
  TO DATABASE ROLE mydb.dr1;
Copy

Erteilen Sie der Rolle role1 die Berechtigung USAGE für alle zukünftigen Schemas in der mydb-Datenbank:

USE ROLE ACCOUNTADMIN;

GRANT USAGE ON FUTURE SCHEMAS IN DATABASE mydb
  TO DATABASE ROLE mydb.dr1;
Copy

Klassen

Um einer Kontorolle zu erlauben, Budgets in einem Schema zu erstellen, erteilen Sie der Rolle die CREATE SNOWFLAKE.CORE.BUDGET-Berechtigung für das Schema:

USE ROLE ACCOUNTADMIN;

GRANT CREATE SNOWFLAKE.CORE.BUDGET ON SCHEMA budgets_db.budgets_schema
  TO ROLE budget_admin;
Copy

Um einer Kontorolle zu erlauben, ein Modell für ML-gestützte Snowflake Cortex-Funktionen (Prognose, Anomalieerkennung oder Klassifizierung) in einem Schema zu erstellen, erteilen Sie der Rolle die entsprechende Berechtigung für das Schema. Die folgenden Berechtigungen sind verfügbar.

  • CREATE SNOWFLAKE.ML.ANOMALY_DETECTION

  • CREATE SNOWFLAKE.ML.CLASSIFICATION

  • CREATE SNOWFLAKE.ML.FORECAST