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.
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 ]
Wobei:
schemaPrivileges ::=
ADD SEARCH OPTIMIZATION
| CREATE {
ALERT | EXTERNAL TABLE | FILE FORMAT | FUNCTION
| MATERIALIZED VIEW | PIPE | PROCEDURE
| { AGGREGATION | MASKING | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY
| SECRET | SEQUENCE | STAGE | STREAM
| TAG | TABLE | TASK | VIEW
}
| MODIFY | MONITOR | USAGE
[ , ... ]
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 { AGGREGATION | MASKING | PACKAGES | PASSWORD | PROJECTION | 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 } [ , ... ]
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> [ , ... ] ] )
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;
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:
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.
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;