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>
Copy

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 Namen database_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:

    1. Wenn eine aktive Rolle der Objekteigentümer (d. h. mit OWNERSHIP-Berechtigung für das Objekt) ist, ist diese Rolle der Berechtigungsgeber.

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

    3. 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 gibt APPLICATION PACKAGE SHARE an.

  • Die Spalte granted_by_role_type gibt den Typ der Berechtigungsgeberrolle an, die die Zuweisung ausgeführt hat: ROLE, DATABASE_ROLE oder APPLICATION_ROLE. Diese Spalte wird nur dann in der Ausgabe angezeigt, wenn Sie die SHOW GRANTS ON-Syntax verwenden.

  • Die Spalte grant_options gibt FALSE 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 |
+---------------------------------+-----------+------------+------------+------------+--------------+--------------+----------------------+--------------+
Copy

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   |
+---------------------------------+------------------+------------+------------+------------+--------------+------------+
Copy

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 |
+---------------------------------+------+------------+-------+---------------+
Copy

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 |
+---------------------------------+---------+------------+--------------+---------------+
Copy

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        |
+-------------------------------+-----------+----------+---------------------------+----------+-----------------------+--------------+
Copy

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;
Copy
+-------------------------------+-----------+------------+----------------------------------------------------------------------------------------------------------------------------------------+
| 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)                                                        |
+-------------------------------+-----------+------------+----------------------------------------------------------------------------------------------------------------------------------------+