- Kategorien:
Systemfunktionen (Systeminformationen)
EXPLAIN_PRIVILEGES¶
Gibt eine JSON-Zeichenfolge zurück, die erklärt, welche Berechtigungen für die Ausführung einer SQL-Anweisung erforderlich sind. Diese Funktion analysiert die Autorisierungsanforderungen für eine bestimmte SQL-Anweisung und gibt diese in einem strukturierten Format zurück, das die erforderlichen Berechtigungen, Objekttypen und Objektnamen enthält.
- Siehe auch:
Syntax¶
Argumente¶
statement => 'sql_statement'Eine Zeichenfolge, die die zu analysierende SQL-Anweisung enthält. Die Anweisung wird analysiert, um festzustellen, welche Berechtigungen zu ihrer Ausführung erforderlich sind.
missing_only => booleanBoolescher Wert, der den Ausgabemodus steuert:
false: Gibt alle Berechtigungen zurück, die zum Ausführen der Anweisung erforderlich sind, unabhängig davon, ob der aktuelle Benutzende oder die angegebene Rolle über sie verfügt.true: Gibt nur die Berechtigungen zurück, die fehlen (d. h. weder dem aktuellen Benutzenden noch der angegebenen Rolle zugewiesen sind). Wenn alle erforderlichen Berechtigungen vorhanden sind, wird{"authorized": true}zurückgegeben.
Standard:
falsefor_role => 'role_name'Der Name einer Rolle, für die die Berechtigungen geprüft werden sollen. Dieses Argument wird nur verwendet, wenn
missing_only => trueist. Gibt alle Berechtigungen zurück, die der Rolle (und den ihr zugewiesenen Rollen) fehlen, um die Anweisung auszuführen.
Rückgabewerte¶
Die Funktion gibt einen VARCHAR-Wert zurück, der ein JSON-Objekt enthält, das die erforderlichen Berechtigungen in einer hierarchischen Struktur beschreibt. Das JSON kann die folgenden Knotentypen enthalten:
Berechtigungsknoten: Repräsentiert eine einzelne Berechtigungsanforderung:
privilege: Der Name der erforderlichen Berechtigung (z. B. USAGE, SELECT, OWNERSHIP). Der spezielle Wert<ANY>zeigt an, dass jede Berechtigung für das Objekt ausreichend ist.objectType: Der Typ des Objekts (z. B. DATABASE, TABLE, SCHEMA, ACCOUNT).objectName: Der vollqualifizierter Name des Objekts.
AND-Knoten: Alle enthaltenen Berechtigungen sind erforderlich:
OR-Knoten: Mindestens eine der enthaltenen Berechtigungen ist erforderlich:
Entscheidungsknoten: Gibt den Autorisierungsstatus an.
authorized: true: Alle erforderlichen Berechtigungen sind vorhanden.authorized: false: Die Anweisung kann nicht mit Berechtigungen autorisiert werden.
Anforderungen an die Zugriffssteuerung¶
Sie müssen über Berechtigungen verfügen, mit denen Sie auf das Objekt nach Namen in der SQL-Anweisung verweisen können. In den meisten Fällen wird diese Anforderung erfüllt, indem mindestens eine Berechtigung für das Objekt vorhanden ist. Die Berechtigung des Typs RESOLVE ALL ON ACCOUNT erfüllt auch diese Anforderung.
Nutzungshinweise¶
Das``statement``-Argument muss ein konstanter Ausdruck sein. Sie können keine Spaltenwerte oder andere nicht konstante Ausdrücke übergeben.
SQL mit mehreren Anweisungen wird nicht unterstützt. Die Funktion akzeptiert nur eine einzigeSQL-Anweisung.
Einige SQL-Anweisungen werden für die Berechtigungsanalyse nicht unterstützt (z. B. GRANT, REVOKE, USE ROLE, USE SECONDARY ROLES).
Einige SQL-Anweisungen verfügen über Berechtigungsprüfungen, die für die Berechtigungsanalyse nicht unterstützt werden. Diese Prüfungen werden in der Ausgabe weggelassen.
Einige indirekte Berechtigungsprüfungen werden für die Berechtigungsanalyse nicht unterstützt. Diese Prüfungen werden in der Ausgabe weggelassen. Beispielsweise ist RESOLVE ALL ON ACCOUNT nicht als Option zum Auflösen einer Datenbank enthalten.
Wenn ein Objekt nicht aufgelöst werden kann, gibt die Funktion einen Fehler zurück, der besagt, dass die Anweisung Zugriff auf alle Objekte erfordert.
Die Berechtigung
<ANY>bedeutet, dass jede Berechtigung für das Objekt ausreichend ist (z. B. prüft USAGE, wo OWNERSHIP auch ausreichen würde).
Beispiele¶
Die folgenden Beispiele rufen die Funktion EXPLAIN_GRANTABLE_PRIVILEGES auf.
Erklären von Berechtigungen für einen DESC-Befehl¶
Zeigen Sie alle Berechtigungen an, die zum Beschreiben eines Schemas erforderlich sind:
Beispielausgabe:
Diese Ausgabe zeigt an, dass Sie eine beliebige Berechtigung für die Datenbank MYDB sowie die MONITOR-Berechtigung für das Schema MYDB.MYSCHEMA benötigen.
Überprüfung ausschließlich fehlender Berechtigungen¶
Prüfen Sie, welche Berechtigungen für den aktuellen Benutzenden fehlen:
Wenn Sie alle erforderlichen Berechtigungen haben, wird Folgendes zurückgegeben:
Wenn Ihnen Berechtigungen fehlen, werden nur die fehlenden Berechtigungen zurückgegeben:
Überprüfen fehlender Berechtigungen für eine bestimmte Rolle¶
Prüfen Sie, welche Berechtigungen einer bestimmten Rolle fehlen:
Legt fest, ob die analyst_role (einschließlich der Berechtigungen aus den ihr zugewiesenen Rollen) über die erforderlichen Berechtigungen zum Ausführen der SELECT-Anweisung verfügt, und, wenn nicht, die fehlenden Berechtigungen zurückgibt.