GRANT <Berechtigungen> … TO USER¶
Gewährt einem Benutzer ein oder mehrere Zugriffsrechte auf ein sicherungsfähiges Objekt. Die Berechtigungen, die erteilt werden können, sind objektspezifisch.
Weitere Informationen zu Rollen und zu sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Weitere Informationen über Berechtigungen finden Sie unter Zugriffssteuerungsrechte.
Syntax¶
GRANT { { globalPrivileges | ALL [ PRIVILEGES ] } 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> } }
}
TO [ USER ] <user_name> [ WITH GRANT OPTION ]
Wobei:
globalPrivileges ::=
{
| ATTACH POLICY | AUDIT | BIND SERVICE ENDPOINT
| APPLY {
{ AGGREGATION | AUTHENTICATION | JOIN | MASKING | PACKAGES | PASSWORD
| PROJECTION | ROW ACCESS | SESSION } POLICY
| TAG }
| EXECUTE { ALERT | DATA METRIC FUNCTION | MANAGED ALERT | MANAGED TASK | TASK }
| IMPORT SHARE
| MANAGE { ACCOUNT SUPPORT CASES | EVENT SHARING | GRANTS | LISTING AUTO FULFILLMENT | ORGANIZATION SUPPORT CASES | USER SUPPORT CASES | 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
| READ SESSION
}
[ , ... ]
accountObjectPrivileges ::=
-- For COMPUTE POOL
{ MODIFY | MONITOR | OPERATE | USAGE } [ , ... ]
-- For CONNECTION
{ FAILOVER } [ , ... ]
-- For DATABASE
{ APPLYBUDGET
| 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 } [ , ... ]
schemaPrivileges ::=
ADD SEARCH OPTIMIZATION | APPLYBUDGET
| MODIFY | MONITOR | USAGE
[ , ... ]
schemaObjectPrivileges ::=
-- For ALERT
{ MONITOR | OPERATE } [ , ... ]
-- For DATA METRIC FUNCTION
USAGE [ , ... ]
-- For DYNAMIC TABLE
MONITOR, OPERATE, SELECT [ , ...]
-- For EVENT TABLE
{ APPLYBUDGET | DELETE | REFERENCES | SELECT | TRUNCATE } [ , ... ]
-- For FILE FORMAT, FUNCTION (UDF or external function), MODEL, PROCEDURE, SECRET, SEQUENCE, or SNAPSHOT
USAGE [ , ... ]
-- For GIT REPOSITORY
{ READ, WRITE } [ , ... ]
-- For HYBRID TABLE
{ APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For IMAGE REPOSITORY
{ READ, WRITE } [ , ... ]
-- For ICEBERG TABLE
{ APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For MATERIALIZED VIEW
{ APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
-- For PIPE
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For { AGGREGATION | AUTHENTICATION | MASKING | JOIN | PACKAGES | PASSWORD | PRIVACY | PROJECTION | ROW ACCESS | SESSION } POLICY or TAG
APPLY [ , ... ]
-- For SECRET
{ READ | USAGE } [ , ... ]
-- For SEMANTIC VIEW
REFERENCES [ , ... ]
-- For SERVICE
{ 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 } [ , ... ]
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.
AGGREGATION POLICY
ALERT
AUTHENTICATION POLICY
CORTEX SEARCH SERVICE
DATA METRIC FUNCTION
DATASET
DYNAMIC TABLE
EVENT TABLE
EXTERNAL TABLE
FILE FORMAT
FUNCTION
GIT REPOSITORY
IMAGE REPOSITORY
ICEBERG TABLE
JOIN POLICY
MASKING POLICY
MATERIALIZED VIEW
MODEL
MODEL MONITOR
NETWORK RULE
NOTEBOOK
PACKAGES POLICY
PASSWORD POLICY
PIPE
PRIVACY POLICY
PROCEDURE
PROJECTION POLICY
ROW ACCESS POLICY
SECRET
SEMANTIC VIEW
SERVICE
SESSION POLICY
SEQUENCE
SNAPSHOT
STAGE
STREAM
STREAMLIT
TABLE
TAG
TASK
VIEW
object_type_plural
Pluralform von
object_type
(zum BeispielTABLES
,VIEWS
).Beachten Sie, dass die Massenerteilung von Berechtigungen auf Pipes nicht zulässig ist.
user_name
Gibt den Bezeichner für den empfangenden Benutzer an (der Benutzer, dem die Berechtigungen gewährt werden).
Optionale Parameter¶
WITH GRANT OPTION
Falls angegeben, kann der empfangende Benutzer die Berechtigungen an andere Rollen oder Benutzer weitergeben.
Standard: Kein Wert, was bedeutet, dass die Empfängerrolle die Berechtigungen nicht anderen Rollen oder Benutzern 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 importierte Datenbank.
Nutzungshinweise¶
Direkt an Benutzer vergebene Berechtigungen sind nur wirksam, wenn der Benutzer alle Sekundärrollen aktiviert hat.
Die direkte Erteilung von Berechtigungen an Benutzer kann das Ausufern von Berechtigungen in Ihrem Konto erhöhen. Außerhalb des Szenarios der gemeinsamen Nutzung unter Personen empfehlen wir Ihnen, Berechtigungen für Rollen zu vergeben, um den Zugriff zu verwalten, den Benutzer in Snowflake benötigen.
Die Funktion Zukünftige Berechtigungszuweisungen ist nicht verfügbar.
Die CREATE und OWNERSHIP-Berechtigungen können für Benutzer nicht vergeben werden.
Berechtigungen für beliebige Klassen können nicht direkt erteilt oder entzogen werden.
Es können mehrere Berechtigungen für denselben Objekttyp in einer einzigen GRANT-Anweisung angegeben werden, wobei die einzelnen Berechtigungen durch Kommas getrennt sind. Alternativ kann das spezielle Schlüsselwort
ALL [ PRIVILEGES ]
verwendet werden, um alle anwendbaren Berechtigungen für den angegebenen Objekttyp zu gewähren.Bemerkung
Nur Berechtigungen, die der Benutzer innehat und erteilen kann, der den Befehl GRANT ausführt, werden der Zielrolle tatsächlich gewährt. Für nicht gewährte Berechtigungen wird eine Warnmeldung ausgegeben.
Sie können für Tags nicht
ALL [ PRIVILEGES ]
angeben.ALL [ PRIVILEGES ]
gewährt keine Berechtigungen für eine Klasse, wenn Sie versuchen,ALL [ PRIVILEGES ]
für ein Schema zu gewähren.
Für Schemas und Objekte in Schemas wird die Option
ALL object_type_plural IN container
angeboten, um Berechtigungen für alle Objekte desselben Typs innerhalb des Containers (d. h. eine Datenbank oder ein Schema) zu vergeben. Diese Option bietet Komfort. Intern wird der Befehl in eine Folge von einzelnen GRANT-Befehlen für jedes Objekt erweitert. Diese Option wirkt sich nur auf Objekte aus, die sich derzeit im Container befinden.Bemerkung
Die massenhafte Erteilung von Berechtigungen ist im Snowflake-Modell nicht zu empfehlen. Snowflake empfiehlt stattdessen, eine gemeinsame Rolle zu erstellen und mit dieser Rolle Objekte zu erstellen, auf die alle Benutzer, denen diese Rolle zugewiesen wurde, automatisch zugreifen können.
Sie können ALL TAGS oder ALL MASKING POLICIES nicht angeben.
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 oder gespeicherte Prozedur erteilen, müssen Sie die Datentypen der Argumente, falls vorhanden, mit einer Syntax wie
udf_or_stored_procedure_name ( [ arg_data_type [ , ... ] ] )
angeben. 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 der empfangende Benutzer ü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.
Wenn Sie Berechtigungen für eine einzelne UDF erteilen, müssen Sie die Datentypen für die Argumente, falls vorhanden, für die UDF mit einer Syntax wie
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 Überblick über benutzerdefinierte Funktionen.Wenn Sie Berechtigungen für eine einzelne gespeicherte Prozedur erteilen, müssen Sie die Datentypen für die Argumente, falls vorhanden, für die Prozedur mit einer Syntax wie
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.
Anforderungen an die Zugriffssteuerung¶
- Erteilen von Berechtigungen für einzelne Objekte:
Im Allgemeinen kann eine Rolle oder ein Benutzer mit einer der folgenden Berechtigungen anderen Benutzern Berechtigungen für ein Objekt erteilen:
Die globale
MANAGE GRANTS
-Berechtigung.Nur die Systemrollen SECURITYADMIN und ACCOUNTADMIN haben die Berechtigung MANAGE GRANTS; die Berechtigung kann jedoch auch kundenspezifischen Rollen oder Benutzern gewährt werden.
Die OWNERSHIP-Berechtigung.
Die Rolle mit der Berechtigung OWNERSHIP für das Objekt.
Die USAGE-Berechtigung. Beim Erteilen von Berechtigungen für Schemaobjekte (z. B. Tabelle und Ansichten) muss die Rolle oder der Benutzer außerdem über die Berechtigung USAGE für die übergeordnete Datenbank und das übergeordnete Schema verfügen.
Wenn einem Benutzer mit dem Befehl
GRANT privileges ... TO USER WITH GRANT OPTION
eine Berechtigung erteilt wurde, kann dieser Benutzer diese Berechtigung anderen Benutzern oder Rollen erneut erteilen.In verwalteten Zugriffsschemas (Schemas, die mit der Syntax
CREATE SCHEMA ... WITH MANAGED ACCESS
erstellt wurden), verlieren die Objekteigentümer die Möglichkeit, Entscheidungen über das Erteilen von Berechtigungen zu treffen. Nur der Schemaeigentümer (die Rolle mit der OWNERSHIP-Berechtigung für das Schema) oder eine Rolle mit der Berechtigung MANAGE GRANTS kann Berechtigungen für Objekte in diesem Schema erteilen.Bemerkung
Eine Rolle mit der globalen Berechtigung MANAGE GRANTS kann der aktuellen (Berechtigungsgeber-)Rolle oder dem entsprechenden Benutzer keine zusätzlichen Berechtigungen erteilen.
Beispiele¶
Um einem bestimmten Benutzer joe
die Berechtigung USAGE für eine Streamlit-Anwendung zu erteilen:
GRANT USAGE ON STREAMLIT streamlit_db.streamlit_schema.streamlit_app TO USER joe;
Um einem bestimmten Benutzer user1
die Berechtigung USAGE für eine Prozedur zu erteilen:
GRANT USAGE ON PROCEDURE mydb.myschema.myprocedure(number) TO USER user1;