Deklarative Freigabe in Native Apps: Einschränkungen¶
Die deklarative Freigabe ist ein Feature in Snowflake Native Apps, das es Anbietern ermöglicht, Objekte über mehrere Datenbanken hinweg schnell zu definieren und freizugeben, indem es eine einfache YAML-Konfigurationsdatei verwendet. Dieses Feature vereinfacht Workflows zur Datenfreigabe erheblich, weist jedoch Einschränkungen auf, die Anbieter vor der Implementierung verstehen sollten.
Unterstützte Objekttypen¶
Die deklarative Freigabe unterstützt folgende Objekttypen:
Notebooks
Tabellen, einschließlich:
Dynamische Tabellen
Apache Iceberg-Tabellen
Ansichten, einschließlich:
Semantische Ansichten
Gespeicherte Prozeduren
Benutzerdefinierte Funktionen (UDFs)
Cortex Agents
Streams
Alle anderen Objekttypen werden für die Freigabe in der deklarativen Freigabe in Native Apps nicht unterstützt.
Notebook-Einschränkungen¶
- Schreibgeschützt für Verbrauchende
Verbrauchende Personen können die Notebooks der Anbieter weder direkt bearbeiten noch klonen.
- Netzwerkzugriff
Notebooks können nicht auf externe Endpunkte oder Verbraucherdaten zugreifen, wenn sie in Kundenkonten ausgeführt werden.
- Spezielle Bibliotheken
Es gibt keine Garantie dafür, dass Geospatial und andere Bibliotheken von Drittanbietern in Notebooks sofort funktionieren.
- Externe Abhängigkeiten
Apps für deklarative Freigabe bieten nur begrenzte Unterstützung für externe Bibliotheken (Snowflake-Anaconda-Kanal und Python-Dateien im Code-Stagingbereich).
- Nicht-interaktive Ausführung
Notebooks, die Teil nativer Anwendungen sind, können nicht interaktiv über Arbeitsblätter oder SQL-Befehle ausgeführt werden.
Sicherheit und Zugriffssteuerung¶
- Rollendefinition
Alle Anwendungsrollen, auf die in den freigegebenen Inhalten verwiesen wird, müssen im Feld
rolesim Manifest vordefiniert sein..- Rollen auf Objektebene
Objektrollen müssen Teilmengen ihrer übergeordneten Schemarollen sein.
- Fehlende Rollenvalidierung
Die Validierung der Manifest-Datei gibt einen Fehler zurück, wenn die Rollen, auf die in der Freigabekonfiguration verwiesen wird, nicht vorhanden sind.
- Mindestberechtigungen
Die Anbieterrolle, die die
shared_content.yaml-Datei per Commit überträgt, muss mindestens die gleichen Berechtigungen für freigegebene Objekte haben wie die, die verbrauchenden Personen erteilt werden.- Keine REFERENCE_USAGE erforderlich
Im Gegensatz zur herkömmlichen Datenfreigabe müssen Anbieter keine REFERENCE_USAGE-Berechtigungen für das Anwendungspaket gewähren.
Migration und Kompatibilität¶
- Migration von deklarativen Freigaben
Die Migrationsunterstützung für den Wechsel von Datenfreigaben zu Declarative Sharing in the Native App framework ist nicht verfügbar.
Einschränkungen bei Namen und Konfigurationen¶
- Keine Platzhalter
Objektnamen müssen explizit angegeben werden. Der Abgleich mit Platzhaltern oder regulären Ausdrücken wird nicht unterstützt.
- Verhinderung von Namenskonflikten
Zwei freigegebenen Objekte können nicht dieselbe DOMAIN und denselben Namen haben.
- Schemazuordnung
Die Schemazuordnung wird nicht unterstützt. Überlappende Schemanamen aus mehrere Datenbanken sind nicht zulässig.
- Schemas für Daten- und Logikobjekte
Sie müssen separate Schemas für Datenobjekte (per Verweis gemeinsam genutzt: Tabellen und Ansichten) und für Logikobjekte (per Kopieren gemeinsam genutzt: UDFs, gespeicherte Prozeduren, Cortex Agents). Sie könnten zum Beispiel das Schema
DATA_SCHEMAfür Tabellen und Ansichten sowie das SchemaLOGIC_SCHEMAfür UDFs verwenden.
Überwachung¶
- Überprüfbarkeit
Declarative Native Apps stellen keine Überwachungsressourcen (z. B. Prüfpfade) zur Verfügung, damit der Anbieter von Verbrauchenden Informationen darüber erhalten kann, wie die freigegebenen Daten verwendet werden. Wenn Verbrauchende Compliance- oder gesetzliche Anforderungen haben, die eine Prüfung erfordern, müssen die Verbrauchenden mit dem Anbieter zusammenarbeiten, um eigene Überwachungslösungen zu implementieren.
Cortex Agents¶
- Ausführungsumgebung
Wenn Sie einen Cortex Agent für die Freigabe erstellen, der Cortex Analyst und semantische Ansichten verwendet, müssen Sie die
execution_environmentexplizit mit einer leeren Zeichenfolge für das Warehouse (warehouse: "") definieren. Sie können dieses Feld nicht weglassen und Sie können keinen bestimmten Warehouse-Namen angeben.- Tools
Alle Tools müssen sich in der gleichen Datenbank wie der Agent befinden. Während Prozeduren und UDFs durch Kopieren gemeinsam genutzt werden und sich im gleichen Schema wie der Agent befinden können, müssen sich semantische Ansichten und Cortex Search-basierte Tools in einem anderen Schema befinden.