Freigabe von Daten in nicht gesicherten Ansichten¶
Um die Leistungssteigerungen durch Abfrageoptimierungen für die von Ihnen freigegebenen Ansichten voll auszunutzen, können Sie eine Freigabe erstellen, mit der Sie nicht sichere Ansichten für andere Konten freigeben können.
Bemerkung
Wenn möglich, verwenden Sie sichere Ansichten, um die Sicherheit Ihrer Daten zu gewährleisten. Siehe Sichere Objekte zur Kontrolle des Datenzugriffs verwenden.
Sie können nur unsichere Ansichten zu Freigaben hinzufügen, die explizit so konfiguriert wurden, dass sie unsichere Objekte zulassen. Sie können keine anderen unsicheren Objekte, wie z. B. unsichere Funktionen, freigeben. Siehe Beschränkungen bei der Freigabe nicht sicherer Ansichten.
Freigabe, die nicht sichere Objekte zulässt, erstellen¶
Um nicht sichere Ansichten freizugeben, erstellen Sie eine Freigabe, die nicht sichere Objekte zulässt.
Führen Sie zum Beispiel Folgendes aus:
CREATE OR REPLACE SHARE allow_non_secure_views
SECURE_OBJECTS_ONLY=FALSE
COMMENT="Share views that require query optimization";
Bemerkung
Die vollständige Syntax finden Sie unter Syntax für die Freigabe nicht sicherer Ansichten in diesem Thema.
Nachdem Sie eine Freigabe erstellt haben, die die Freigabe von Ansichten erlaubt, verwenden Sie den Befehl GRANT <Berechtigung> … TO SHARE, um einer Freigabe eine Ansicht zuzuweisen. Um zum Beispiel eine Ansicht mit dem Namen non_secure_view
für die Freigabe zu gewähren, führen Sie Folgendes aus:
GRANT SELECT ON VIEW non_secure_view TO SHARE allow_non_secure_views;
Alternativ können Sie die SELECT-Berechtigung für die Ansicht einer Datenbankrolle erteilen und diese Datenbankrolle dann der Freigabe zuweisen. Um beispielsweise der Datenbankrolle performance_engineer
die SELECT-Berechtigung für die Ansicht non_secure_view
zu erteilen und die Rolle dann der Freigabe zuzuweisen, führen Sie Folgendes aus:
GRANT SELECT ON VIEW non_secure_view TO DATABASE ROLE performance_engineer;
GRANT DATABASE ROLE performance_engineer TO SHARE allow_non_secure_views;
Konvertieren Sie eine bestehende Freigabe, um die Freigabe nicht sicherer Ansichten zu ermöglichen¶
Sie können eine bestehende Freigabe mit sicheren Ansichten in eine Freigabe konvertieren, die die Freigabe nicht sicherer Ansichten unterstützt.
Um beispielsweise eine bestehende Freigabe secure_views_only
in eine Freigabe zu konvertieren, die die Freigabe nicht sicherer Ansichten unterstützt, gehen Sie wie folgt vor:
Verwenden Sie den Befehl SHOW GRANTS, um festzustellen, welche Objekte für die Freigabe zugelassen sind bzw. welche Konten Zugriff auf die Freigabe haben:
SHOW GRANTS TO SHARE secure_views_only; SHOW GRANTS OF SHARE secure_views_only;
CopyKonvertieren Sie die bestehende Freigabe in eine Freigabe, die die Freigabe von Ansichten ermöglicht:
ALTER SHARE secure_views_only SET SECURE_OBJECTS_ONLY = FALSE, COMMENT = "Convert to allow sharing non-secure views that require query optimization";
CopyOptional können Sie eine bestehende sichere Ansicht in eine Ansicht konvertieren. In diesem Beispiel ändern Sie
secure_view2
in eine nicht sichere Ansicht:ALTER VIEW secure_view2 UNSET SECURE;
Copy
Weitere Details dazu finden Sie unter Konvertieren Sie eine sichere Ansicht in einer Freigabe in eine nicht sichere Ansicht.
Konvertieren Sie eine sichere Ansicht in einer Freigabe in eine nicht sichere Ansicht¶
Wenn Sie eine bestehende sichere Ansicht in eine Ansicht konvertieren möchten, können Sie dies vor oder nach der Zuweisung der Ansicht zu einer Freigabe tun.
Um eine bestehende sichere Ansicht in einer Freigabe in eine Ansicht zu konvertieren, muss Folgendes zutreffen:
Die sichere Ansicht darf nur Freigaben zugewiesen werden, die so konfiguriert sind, dass sie die Freigabe nicht sicherer Objekte erlauben.
Die sichere Ansicht kann nicht zugewiesen werden an:
Datenbankrollen, die Freigaben zugewiesen sind, die keine Freigabe von nicht sicheren Objekten erlauben.
Freigaben, die keine Freigabe von unsicheren Objekten zulassen.
Deaktivieren Sie beispielsweise für eine bestehende sichere Ansicht mit dem Namen high_performance_view
die Eigenschaft SECURE:
ALTER VIEW high_performance_view UNSET SECURE;
Alternativ können Sie die sichere Ansicht auch neu als Ansicht erstellen:
CREATE OR REPLACE VIEW high_performance_view WITH COPY GRANTS;
Beschränkungen bei der Freigabe nicht sicherer Ansichten¶
Wenn Sie die Freigabe von Ansichten planen, sollten Sie Folgendes beachten:
Nachdem Sie eine Freigabe erstellt haben, bei der die Eigenschaft SECURE_OBJECTS_ONLY auf FALSE eingestellt ist, können Sie diese Eigenschaft nicht mehr aufheben oder auf TRUE einstellen.
Sie können nur nicht-sichere Ansichten freigeben. Andere nicht sichere Objekte, wie z. B. Funktionen, können nicht freigegeben werden.
Syntax für die Freigabe nicht sicherer Ansichten¶
CREATE [ OR REPLACE ] SHARE <name>
[ SECURE_OBJECTS_ONLY = <boolean> ]
[ COMMENT = '<string_literal>' ]
Erforderliche Parameter¶
name
Gibt den Bezeichner der Freigabe an. Dieser muss für das Konto, in dem die Freigabe erstellt wird, eindeutig sein.
Außerdem muss der Bezeichner mit einem alphabetischen Zeichen beginnen und darf keine Leerzeichen oder Sonderzeichen enthalten, es sei denn, die gesamte Zeichenfolge des Bezeichners ist in doppelte Anführungszeichen eingeschlossen. Beispiel:
"My object"
. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.Weitere Informationen zu den Anforderungen an Bezeichner finden Sie unter Anforderungen an Bezeichner.
Optionale Parameter¶
SECURE_OBJECTS_ONLY = boolean
Gibt an, ob nur sichere Objekte oder auch nicht sichere Objekte für die Freigabe zugelassen werden sollen.
Standard: true
COMMENT = 'string_literal'
Gibt einen Kommentar für die Freigabe an.
Standard: Kein Wert
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieses SQL-Befehls verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
---|---|---|
CREATE SHARE |
Konto |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Weitere Informationen zu den Anforderungen an die Zugriffssteuerung speziell für Snowflake Secure Data Sharing finden Sie unter Ermöglichen Sie es Rollen, die nicht ACCOUNTADMIN sind, Datenfreigabe-Aufgaben durchzuführen.
Nutzungshinweise¶
Sie können den Wert der Eigenschaft SECURE_OBJECTS_ONLY nicht sehen, wenn Sie SHOW SHARES ausführen. Verwenden Sie die Eigenschaft COMMENT, um den Wert der Eigenschaft SECURE_OBJECTS_ONLY zu notieren.
Die bestehenden Hinweise für CREATE SHARE gelten ebenfalls.
Beispiele¶
Ein Beispiel dafür, wie Sie eine Freigabe mit nicht sicheren Ansichten erstellen, finden Sie unter Freigabe, die nicht sichere Objekte zulässt, erstellen.
Ein Beispiel für die Verwendung von ALTER SHARE finden Sie unter Konvertieren Sie eine bestehende Freigabe, um die Freigabe nicht sicherer Ansichten zu ermöglichen.