SHOW GRANTS¶
Listet alle Zugriffssteuerungsrechte auf, die Rollen, Benutzern und Freigaben explizit erteilt wurden.
Weitere Informationen zu Berechtigungen und Rollen finden Sie unter Übersicht zur Zugriffssteuerung.
Weitere Informationen zu Freigaben finden Sie unter Einführung in Secure Data Sharing.
Bemerkung
SHOW GRANTS ist eine spezielle Variante, die eine andere Syntax als alle anderen SHOW <Objekte>-Befehle verwendet.
Syntax¶
SHOW GRANTS [ LIMIT <rows> ]
SHOW GRANTS ON ACCOUNT [ LIMIT <rows> ]
SHOW GRANTS ON <object_type> <object_name> [ LIMIT <rows> ]
SHOW GRANTS TO {
APPLICATION <app_name>
| APPLICATION ROLE [ <app_name>. ]<app_role_name>
| <class_name> ROLE <instance_name>!<instance_role_name>
| ROLE <role_name>
| SHARE <share_name> [ IN APPLICATION PACKAGE <app_package_name> ]
| USER <user_name>
} [ LIMIT <rows> ]
SHOW GRANTS OF { APPLICATION ROLE <app_role_name>| ROLE <role_name> } [ LIMIT <rows> ]
SHOW GRANTS OF SHARE <share_name> [ LIMIT <rows> ]
SHOW FUTURE GRANTS IN SCHEMA { <schema_name> } [ LIMIT <rows> ]
SHOW FUTURE GRANTS IN DATABASE { <database_name> } [ LIMIT <rows> ]
SHOW FUTURE GRANTS TO ROLE <role_name> [ LIMIT <rows> ]
SHOW FUTURE GRANTS TO DATABASE ROLE <database_role_name>
Varianten¶
SHOW GRANTS
Syntaktisch äquivalent zu
SHOW GRANTS TO USER current_user
. Listet alle dem aktuellen Benutzer zugewiesenen Rollen auf.
LIMIT rows
Begrenzt optional die maximale Anzahl der zurückgegebenen Zeilen. Die tatsächliche Anzahl der zurückgegebenen Zeilen kann geringer sein als das angegebene Limit. Beispielsweise ist die Anzahl der vorhandenen Objekte geringer als das angegebene Limit.
Standard: Kein Wert (die Ausgabe wird nicht begrenzt).
SHOW GRANTS ON ...
ACCOUNT
Listet alle Berechtigungen auf Kontoebene (d. h. globale Berechtigungen) auf, die Rollen erteilt wurden.
object_type object_name
Listet alle Berechtigungen auf, die dem Objekt erteilt wurden.
Bei Datenbankrollen können Sie den vollqualifizierten Namen
database_name.database_role_name
oder den relativen Namendatabase_role_name
verwenden. Wenn Sie den relativen Namen für die Datenbankrolle verwenden, verwendet Snowflake die Datenbank in der Sitzung, um den relativen Namen der Datenbankrolle aufzulösen.
SHOW GRANTS TO ...
APPLICATION app_name
Listet alle Berechtigung und Rollen auf, die der Anwendung zugewiesen sind.
APPLICATION ROLE [ app_name. ]app_role_name
Listet alle Berechtigungen und Rollen auf, die der Anwendungsrolle zugewiesen sind.
Die Angabe des Anwendungsnamens in
app_name
ist optional. Wenn kein Name angegeben ist, verwendet Snowflake die aktuelle Anwendung. Wenn es sich bei der Anwendung nicht um eine Datenbank handelt, liefert dieser Befehl keine Ergebnisse.class_name ROLE instance_name!instance_role_name
Listet alle Berechtigung und Rollen auf, die der Instanzrolle zugewiesen sind.
Wenn die Datenbank und das Schema, die die Klasse
class_name
enthalten, nicht verwendet werden oder nicht in Ihrem Suchpfad angegeben sind, geben Sie den vollqualifizierten Namen der Klasse an. Beispiel:SNOWFLAKE.CORE.BUDGET
.Weitere Informationen dazu finden Sie im Beispiel für Instanzrolle.
ROLE role_name
Listet alle Berechtigungen und Rollen auf, die der Rolle erteilt wurden. Wenn die Rolle eine Berechtigung für ein temporäres Objekt hat, dann existiert die Berechtigung nur in der Sitzung, in der das temporäre Objekt erstellt wurde.
SHARE share_name
Listet alle der Freigabe erteilten Berechtigungen auf.
SHARE share_name IN APPLICATION PACKAGE app_package_name
Listet alle Berechtigungen und Rollen auf, die einer Freigabe im Anwendungspaket zugewiesen sind.
USER user_name
Listet alle dem Benutzer erteilten Rollen auf. Beachten Sie, dass die Rolle PUBLIC, die automatisch für jeden Benutzer verfügbar ist, nicht aufgeführt ist.
SHOW GRANTS OF...
APPLICATION ROLE [ app_name. ]app_role
Listet alle Benutzer und Rollen auf, denen die Anwendungsrolle zugewiesen wurde.
Die Angabe des Anwendungsnamens in
app_name
ist optional. Wenn kein Name angegeben ist, verwendet Snowflake die aktuelle Anwendung. Wenn es sich bei der Anwendung nicht um eine Datenbank handelt, liefert dieser Befehl keine Ergebnisse.ROLE role_name
Listet alle Benutzer und Rollen auf, denen die Rolle zugewiesen wurde.
SHARE share_name
Listet alle Konten für die Freigabe auf und gibt die Konten an, die die Freigabe verwenden.
SHOW FUTURE GRANTS IN ...
SCHEMA database_name.schema_name
Listet für neue (d. h. zukünftige) Objekte eines angegebenen Typs im Schema alle Berechtigungen auf, die einer Rolle erteilt wurden.
database_name.
gibt die Datenbank an, in der sich das Schema befindet. Die Angabe ist optional, wenn sich das abgefragte Schema in der aktuellen Datenbank befindet.DATABASE database_name
Listet für neue (d. h. zukünftige) Objekte eines angegebenen Typs in der Datenbank alle Berechtigungen auf, die einer Rolle erteilt wurden.
SHOW FUTURE GRANTS TO ROLE role_name
Listet alle Berechtigungen für neue (d. h. zukünftige) Objekte eines bestimmten Typs in einer Datenbank oder einem Schema auf, die der Rolle erteilt werden.
SHOW FUTURE GRANTS TO DATABASE ROLE database_role_name
Listet alle Berechtigungen für neue (d. h. zukünftige) Objekte eines bestimmten Typs in einer Datenbank oder einem Schema auf, die der Datenbankrolle zugewiesen werden.
Eine Datenbankrolle für eine freigegebene Datenbank unterstützt keine zukünftigen Berechtigungszuweisungen. Weitere Informationen dazu finden Sie in den Nutzungshinweisen zum Befehl GRANT DATABASE ROLE … TO SHARE.
Nutzungshinweise¶
Die Spalte
granted_by
gibt die Rolle an, die eine Berechtigungszuweisung an den Berechtigungsempfänger autorisiert hat. Die Autorisierungsrolle wird als Berechtigungsgeber bezeichnet.Wenn Sie einer Rolle unter Verwendung von GRANT <Berechtigungen> Berechtigungen für ein Objekt erteilen, bestimmen die folgenden Autorisierungsregeln, welche Rolle als Berechtigungsgeber der Berechtigungen aufgeführt wird:
Wenn eine aktive Rolle der Objekteigentümer (d. h. mit OWNERSHIP-Berechtigung für das Objekt) ist, ist diese Rolle der Berechtigungsgeber.
Wenn eine aktive Rolle über die angegebene Berechtigung mit autorisierter Zuweisungsoption verfügt (d. h. die Berechtigung wurde der aktiven Rolle mit der Option GRANT <Berechtigungen> … TO ROLE <Rollenname> WITH GRANT OPTION erteilt, wobei <Rollenname> eine der aktiven Rollen ist), dann ist die Rolle, die über die Berechtigung mit autorisierter Zuweisungsoption verfügt, der Berechtigungsgeber. Wenn mehrere aktive Rollen dieses Kriterium erfüllen, ist es nicht deterministisch, welche der Rollen zur Berechtigungsgeber-Rolle wird.
Wenn eine aktive Rolle über die globale Berechtigung MANAGE GRANTS verfügt, ist die Berechtigungsgeber-Rolle der Objekteigentümer und nicht die Rolle, die über die MANAGE GRANTS-Berechtigung verfügte. Das heißt, die MANAGE GRANTS-Berechtigung erlaubt es einer Rolle, die Objekteigentümerschaft zu übernehmen, um Berechtigungen für dieses Objekt zu erteilen.
Wenn die Spalte
granted_by
leer ist, wurde die Berechtigung von der Snowflake-Rolle SYSTEM erteilt. Mit dieser Rolle werden bestimmte interne Operationen ausgeführt. Die von der Rolle SYSTEM autorisierten Berechtigungen können von Kunden nicht geändert werden.Wenn Sie die Syntax SHOW GRANTS … TO SHARE IN APPLICATION PACKAGE verwenden, gilt Folgendes:
Die Spalte
grantee_name
gibt den Namen des Anwendungspakets an.Die Spalte
granted_to
gibtAPPLICATION PACKAGE SHARE
an.
Die Spalte
granted_by_role_type
gibt den Typ der Berechtigungsgeberrolle an, die die Zuweisung ausgeführt hat:ROLE
,DATABASE_ROLE
oderAPPLICATION_ROLE
. Diese Spalte wird nur dann in der Ausgabe angezeigt, wenn Sie die SHOW GRANTS ON-Syntax verwenden.Die Spalte
grant_options
gibtFALSE
zurück, wenn Sie den Befehl SHOW GRANTS ON <object_type> <object_name> für ein Objekt im verwalteten Zugriffsschema ausführen.Die Spalte
privilege
enthält die Berechtigungen OWNERSHIP und MANAGE GRANTS für die Rolle, die Eigentümer des verwalteten Zugriffsschemas ist, wenn Sie einen SHOW GRANTS ON SCHEMA <managed_access_schema>-Befehl ausführen.Bei Datenbankrollen und der Syntax SHOW FUTURE GRANTS TO DATABASE ROLE gibt der Befehl Ergebnisse für Datenbankrollen zurück, die keiner Freigabe zugewiesen sind.
Im Data Sharing-Verbraucherkonto gibt dieser Befehl keine Zeilen zurück, wenn der Datenbankrolle einer freigegebenen Datenbank zukünftige Berechtigungen zugewiesen sind. Abhängig von Ihrem Konto und dem Zeitpunkt der Unterstützung zukünftiger Berechtigungen für Datenbankrollen bei diesem Befehl wird jedoch möglicherweise folgende Fehlermeldung angezeigt:
Invalid state of the shared database role. Please revoke the future grants to the shared database role.
Bitten Sie als Verbraucher den Anbieter, der Datenbankrolle der freigegebenen Datenbank die zukünftigen Berechtigungszuweisungen wieder zu entziehen.
Für die Ausführung des Befehls ist kein aktives Warehouse erforderlich.
Um die Ausgabe dieses Befehls nachzubearbeiten, können Sie die Funktion RESULT_SCAN verwenden, die die Ausgabe wie eine abfragbare Tabelle behandelt.
Beispiele¶
Listen Sie alle Berechtigungen auf, die der sales
-Datenbank erteilt wurden:
SHOW GRANTS ON DATABASE sales; +---------------------------------+-----------+------------+------------+------------+--------------+--------------+----------------------+--------------+ | created_on | privilege | granted_on | name | granted_to | grantee_name | grant_option | granted_by_role_type | granted_by | +---------------------------------+-----------+------------+------------+------------+--------------+--------------+----------------------+--------------+ | Thu, 07 Jul 2016 05:22:29 -0700 | OWNERSHIP | DATABASE | REALESTATE | ROLE | ACCOUNTADMIN | true | ROLE | ACCOUNTADMIN | | Thu, 07 Jul 2016 12:14:12 -0700 | USAGE | DATABASE | REALESTATE | ROLE | PUBLIC | false | ROLE | ACCOUNTADMIN | +---------------------------------+-----------+------------+------------+------------+--------------+--------------+----------------------+--------------+
Listen Sie alle Berechtigungen auf, die der analyst
-Rolle erteilt wurden:
SHOW GRANTS TO ROLE analyst; +---------------------------------+------------------+------------+------------+------------+--------------+------------+ | created_on | privilege | granted_on | name | granted_to | grant_option | granted_by | |---------------------------------+------------------+------------+------------+------------+--------------+------------+ | Wed, 17 Dec 2014 18:19:37 -0800 | CREATE WAREHOUSE | ACCOUNT | DEMOENV | ANALYST | false | SYSADMIN | +---------------------------------+------------------+------------+------------+------------+--------------+------------+
Listen Sie alle dem Benutzer demo
zugewiesenen Rollen auf:
SHOW GRANTS TO USER demo; +---------------------------------+------+------------+-------+---------------+ | created_on | role | granted_to | name | granted_by | |---------------------------------+------+------------+-------+---------------+ | Wed, 31 Dec 1969 16:00:00 -0800 | DBA | USER | DEMO | SECURITYADMIN | +---------------------------------+------+------------+-------+---------------+
Listen Sie alle Rollen und Benutzer auf, denen die Rolle analyst
zugewiesen wurde:
SHOW GRANTS OF ROLE analyst; +---------------------------------+---------+------------+--------------+---------------+ | created_on | role | granted_to | grantee_name | granted_by | |---------------------------------+---------+------------+--------------+---------------| | Tue, 05 Jul 2016 16:16:34 -0700 | ANALYST | ROLE | ANALYST_US | SECURITYADMIN | | Tue, 05 Jul 2016 16:16:34 -0700 | ANALYST | ROLE | DBA | SECURITYADMIN | | Fri, 08 Jul 2016 10:21:30 -0700 | ANALYST | USER | JOESM | SECURITYADMIN | +---------------------------------+---------+------------+--------------+---------------+
Listen Sie alle Berechtigungen auf, die zukünftigen Objekten im Schema sales.public
erteilt werden:
SHOW FUTURE GRANTS IN SCHEMA sales.public; +-------------------------------+-----------+----------+---------------------------+----------+-----------------------+--------------+ | created_on | privilege | grant_on | name | grant_to | grantee_name | grant_option | |-------------------------------+-----------+----------+---------------------------+----------+-----------------------+--------------| | 2018-12-21 09:22:26.946 -0800 | INSERT | TABLE | SALES.PUBLIC.<TABLE> | ROLE | ROLE1 | false | | 2018-12-21 09:22:26.946 -0800 | SELECT | TABLE | SALES.PUBLIC.<TABLE> | ROLE | ROLE1 | false | +-------------------------------+-----------+----------+---------------------------+----------+-----------------------+--------------+
Listen Sie alle Rollenberechtigungen auf, die der Instanzrolle mit dem Namen cost.budgets.my_budget!ADMIN
erteilt wurden:
SHOW GRANTS TO SNOWFLAKE.CORE.BUDGET ROLE cost.budgets.my_budget!ADMIN;+-------------------------------+-----------+------------+----------------------------------------------------------------------------------------------------------------------------------------+ | created_on | privilege | granted_on | name | +-------------------------------+-----------+------------+----------------------------------------------------------------------------------------------------------------------------------------+ | 2023-10-31 15:57:41.489 +0000 | USAGE | ROLE | SNOWFLAKE.CORE.BUDGET!ADMIN | | 2023-09-25 22:56:12.798 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!ACTIVATE():VARCHAR(16777216) | | 2023-09-25 22:56:13.304 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!ADD_RESOURCE(TARGET_REF VARCHAR):VARCHAR(16777216) | | 2023-09-25 22:56:12.863 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_ACTIVATION_DATE():DATE | | 2023-09-25 22:56:12.412 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_BUDGET_NAME():VARCHAR(16777216) | | 2023-09-25 22:56:11.510 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_CONFIG():TABLE: () | | 2023-09-25 22:56:13.432 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_LINKED_RESOURCES():TABLE: () | | 2023-09-25 22:56:11.582 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_MEASUREMENT_TABLE():TABLE: () | | 2023-09-25 22:56:12.153 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_NOTIFICATION_EMAIL():VARCHAR(16777216) | | 2023-09-25 22:56:12.016 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_NOTIFICATION_INTEGRATION_NAME():VARCHAR(16777216) | | 2023-09-25 22:56:12.286 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_NOTIFICATION_MUTE_FLAG():VARCHAR(16777216) | | 2023-09-25 22:56:13.068 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_SERVICE_TYPE_USAGE(SERVICE_TYPE VARCHAR):TABLE: () | | 2023-09-25 22:56:13.245 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_SERVICE_TYPE_USAGE(SERVICE_TYPE VARCHAR, TIME_DEPART VARCHAR, USER_TIMEZONE VARCHAR, TIME_LOWER_BOUND VARCHA | | 2023-09-25 22:56:12.595 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_SPENDING_HISTORY():TABLE: () | | 2023-09-25 22:56:12.732 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_SPENDING_HISTORY(TIME_LOWER_BOUND VARCHAR, TIME_UPPER_BOUND VARCHAR):TABLE: () | | 2023-09-25 22:56:11.716 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!GET_SPENDING_LIMIT():NUMBER(38,0) | | 2023-09-25 22:56:13.367 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!REMOVE_RESOURCE(TARGET_REF VARCHAR):VARCHAR(16777216) | | 2023-09-25 22:56:11.856 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!SET_EMAIL_NOTIFICATIONS(NOTIFICATION_CHANNEL_NAME VARCHAR, EMAIL VARCHAR):VARCHAR(16777216) | | 2023-09-25 22:56:12.349 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!SET_NOTIFICATION_MUTE_FLAG(USER_MUTE_FLAG BOOLEAN):VARCHAR(16777216) | | 2023-09-25 22:56:11.780 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!SET_SPENDING_LIMIT(SPENDING_LIMIT FLOAT):VARCHAR(16777216) | | 2023-09-25 22:56:12.475 +0000 | USAGE | PROCEDURE | SNOWFLAKE.CORE.BUDGET!SET_TASK_SCHEDULE(NEW_SCHEDULE VARCHAR):VARCHAR(16777216) | +-------------------------------+-----------+------------+----------------------------------------------------------------------------------------------------------------------------------------+