Erteilen von Berechtigungen für benutzerdefinierte Funktionen

Unter diesem Thema sind die Mindestberechtigungen aufgeführt, die für Objekte erforderlich sind, um bestimmte SQL-Aktionen mit einer UDF oder UDTF ausführen zu können.

Unter diesem Thema:

Erteilung von Berechtigungen für UDFs und UDTFs

Um SQL-Aktionen auf einer UDF oder UDTF ausführen zu können, muss der ausführenden Person eine Rolle zugewiesen worden sein, die über die erforderlichen Berechtigungen verfügt. Zu diesen SQL-Aktionen gehören:

  • Erstellen der Funktion, z. B. mit CREATE FUNCTION oder mit der Snowpark-API.

  • Zuweisen der Eigentümerschaft der Funktion, um den Zugriff auf die Funktion zu löschen, zu ändern und zu verwalten, sei es über SQL oder die Snowpark-API.

  • Aufrufen der Funktion mit SQL oder über die Snowpark-API.

Der Rolle müssen Berechtigungen an Objekten zugewiesen werden, die sich auf die Funktion beziehen, einschließlich der Datenbank und des Schemas und (falls erforderlich) eines Stagingbereichs, der Funktionsabhängigkeiten enthält.

Um einer Rolle Berechtigungen für ein Objekt zu erteilen, verwenden Sie eine GRANT-Anweisung.

Mit dem folgenden Beispielcode wird my_role die USAGE-Berechtigung für die Funktion my_java_udf erteilt.

GRANT USAGE ON FUNCTION my_java_udf(number, number) TO my_role;

Erstellen von UDFs oder UDTFs

Das Erstellen, Verwalten und Ausführen einer Java-UDF/UDTF erfordert eine Rolle mit mindestens den folgenden Berechtigungen:

Objekt

Berechtigungen

Anmerkungen

Datenbank

USAGE

Schema

USAGE, CREATE FUNCTION

Stagingbereich

USAGE (externer Stagingbereich) oder READ (interner Stagingbereich)

Erforderlich, wenn die Funktion von Dateien in einem Stagingbereich abhängt oder aus ihnen liest. Dazu gehören die folgenden Stagingdateien:

  • JAR-Datei (Java-ARchive), die kompilierten Java-Quellcode für eine vorkompilierte Java-UDF enthält.

  • Bibliotheken, die der Handler-Code als Abhängigkeiten benötigt, einschließlich JAR-Dateien, Python-Module, ZIP-Dateien usw.

  • Dateien mit Inhalten, die vom Code im Handler gelesen werden. Dazu gehören auch unstrukturierte Daten, die vom Handler verarbeitet werden.

Eigentümerschaft von UDFs oder UDTFs

Nachdem eine UDF/UDTF erstellt wurde, muss der Eigentümer der Funktion (d. h. die Rolle mit OWNERSHIP-Berechtigung für die Funktion) mindestens über die folgenden Berechtigungen verfügen:

Objekt

Berechtigung

Anmerkungen

Datenbank

USAGE

Schema

USAGE

Stagingbereich

USAGE (externer Stagingbereich) oder READ (interner Stagingbereich)

Erforderlich, wenn die Funktion von Dateien in einem Stagingbereich abhängt oder aus ihnen liest. Dazu gehören die folgenden Stagingdateien:

  • JAR-Datei (Java-ARchive), die kompilierten Java-Quellcode für eine vorkompilierte Java-UDF enthält.

  • Bibliotheken, die der Handler-Code als Abhängigkeiten benötigt, einschließlich JAR-Dateien, Python-Module, ZIP-Dateien usw.

  • Dateien mit Inhalten, die vom Code im Handler gelesen werden. Dazu gehören auch unstrukturierte Daten, die vom Handler verarbeitet werden.

Funktion

OWNERSHIP

Aufrufen von UDFs oder UDTFs

Eine Rolle, die eine UDF oder UDTF aufruft, um unstrukturierte Daten zu verarbeiten, muss mindestens über die folgenden Berechtigungen verfügen:

Objekt

Berechtigung

Anmerkungen

Datenbank

USAGE

Schema

USAGE

Schema, das die Objekte auf Schemaebene in dieser Tabelle enthält. Wenn die Objekte in mehreren Schemas enthalten sind, ist die USAGE-Berechtigung für jedes Schema erforderlich.

Stagingbereich

USAGE (externer Stagingbereich) oder READ (interner Stagingbereich)

Erforderlich, wenn die Funktion von Dateien in einem Stagingbereich abhängt oder aus ihnen liest. Dazu gehören die folgenden Stagingdateien:

  • JAR-Datei (Java-ARchive), die kompilierten Java-Quellcode für eine vorkompilierte Java-UDF enthält.

  • Bibliotheken, die der Handler-Code als Abhängigkeiten benötigt, einschließlich JAR-Dateien, Python-Module, ZIP-Dateien usw.

  • Dateien mit Inhalten, die vom Code im Handler gelesen werden. Dazu gehören auch unstrukturierte Daten, die vom Handler verarbeitet werden.

Funktion

USAGE

Erforderlich, wenn eine andere Person als der Eigentümer der Funktion die Funktion aufruft. USAGE auf der Funktion muss einer Rolle erteilt werden, die einer Person zugewiesen ist, die die Funktion aufruft.

Zurück zum Anfang