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

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

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

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:

  1. 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;
    
    Copy
  2. Konvertieren 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";
    
    Copy
  3. Optional 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

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

Alternativ können Sie die sichere Ansicht auch neu als Ansicht erstellen:

CREATE OR REPLACE VIEW high_performance_view WITH COPY GRANTS;
Copy

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

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.