Verwenden von Freigaben

Unter diesem Thema werden die Aufgaben beschrieben, die mit dem Erstellen und Konfigurieren von Freigaben eines Datenanbieterkontos, mit der gemeinsamen Nutzung dieser Freigaben durch andere (d. h. Verbraucher-)Konten und mit der laufenden Wartung der Freigaben verbunden sind.

Zur Ausführung dieser Aufgaben müssen Sie die Rolle ACCOUNTADMIN (oder eine Rolle, der die globale Berechtigung CREATE SHARES erteilt wurde) verwenden. Weitere Details zur Berechtigung CREATE SHARES finden Sie unter Aktivieren von Nicht-ACCOUNTADMIN-Rollen zur Ausführung von Data Sharing-Aufgaben.

Die einzige Ausnahme von dieser Regel betrifft die Vorbereitung Ihrer Objekte (Datenbank, Tabellen usw.) auf die Freigabe. Diese Aufgabe kann mit jeder Rolle durchgeführt werden.

Unter diesem Thema:

Datenfreigabe und Business Critical-Konten

Wenn Sie ein Business Critical-Konto haben, müssen Sie bei der Freigabe von Daten für andere (d. h. Verbraucher-)Konten folgende Bedingungen beachten:

Anbieter

Verbraucher

Unterstützt

Aktiviert

Anmerkungen

Business Critical (mit HIPAA)

zu

Business Critical (mit HIPAA)

Beide HIPAA-Konten sollten eine signierte BAA miteinander haben.

Business Critical (mit HIPAA)

zu

Alle anderen Editions

Snowflake erlaubt kein Data Sharing zwischen HIPAA-Konten und Nicht-HIPAA-Konten, auch wenn das andere Konto ein Business Critical-Konto ist.

Business Critical

zu

Business Critical oder Business Critical (mit HIPAA)

Business Critical

zu

Alle anderen Editions

Wenden Sie sich an Snowflake, um Ihr Konto zu aktivieren.

Für alle anderen Snowflake-Editions:

  • VPS (Virtual Private Snowflake) unterstützt aufgrund der derzeitigen Beschränkungen bei überregionalen Freigaben keine sicheren Datenfreigaben.

  • Enterprise- und Standard-Edition unterstützen die sichere Datenfreigabe mit den üblichen Beschränkungen.

Weitere Details dazu finden Sie unter Allgemeine Hinweise zur Nutzung von Data Sharing (unter diesem Thema).

Achtung

Snowflake übernimmt keine Verantwortung, dass die am Data Sharing beteiligten HIPAA-Konten untereinander über unterzeichnete BAA verfügen. Diese Aufgabe obliegt den Konten, die Daten freigeben. Beachten Sie, dass das Fehlen einer signierten BAA die HIPAA-Konformität beider Konten, aber vor allem des Anbieterkontos beeinträchtigen kann.

Wenn Sie zudem ein Business Critical-Konto verwenden, damit das mit Business Critical bereitgestellte Datenschutzniveau eingehalten wird, empfehlen wir nachdrücklich die Berücksichtigung der folgenden Punkte, bevor Sie bei Snowflake die Aktivierung von sicheren Datenfreigaben mit Nicht-Business Critical-Konten anfordern:

  • Geben Sie keine vertraulichen Daten für Nicht-Business Critical-Konten frei.

  • Erstellen Sie stattdessen ein zweites Nicht-Business Critical-Konto für die Speicherung weniger sensibler Daten, die Sie dann für Nicht-Business Critical-Konten freigeben.

  • Wenn Sie für Ihr Business Critical-Konto Tri-Secret Secure verwenden und Daten für andere Konten freigeben, behandelt Snowflake den Datenzugriff von diesen Konten so, als ob der Zugriff von Ihrem eigenen Konto aus erfolgt. Insbesondere die Gewährung des Zugriffs auf das Verbraucherkonto kann erfordern, dass Snowflake auf Ihr AWS KMS zugreift.

Dies sind nur Empfehlungen, die von Snowflake nicht erzwungen werden. Die Entscheidung über die Freigabe von Daten liegt stets im Ermessen des Datenanbieters, und Snowflake übernimmt keine Verantwortung für Daten, die unsachgemäß freigegeben werden.

Weboberfläche für Freigaben

Wenn Sie die ACCOUNTADMIN-Rolle haben (oder eine Rolle haben, der die CREATE SHARES-Berechtigung erteilt wurde), können Sie auf der Snowflake-Weboberfläche die Seite Shares Shares tab verwenden, um die meisten Aufgaben im Zusammenhang mit der Erstellung und Verwaltung von Freigaben auszuführen.

Shares page in Snowflake web interface

Welche Aufgaben Sie ausführen können, hängt davon ab, ob die Freigabe Outbound oder Inbound ist.

Ausgehende Freigaben (Anbieter)

Ausgehende Freigaben werden von Ihrem Konto erstellt, um Daten für Verbraucherkonten freizugeben. Auf der Weboberfläche können Sie die folgenden Aufgaben für ausgehende Freigaben durchführen:

  • Anzeigen der Freigaben, die Sie erstellt haben oder auf die Sie Zugriffsberechtigungen haben. Zu den bereitgestellten Informationen gehören die Datenbank für die Freigabe und die Verbraucherkonten (falls vorhanden), die der Freigabe hinzugefügt wurden.

  • Erstellen einer Freigabe.

  • Hinzufügen von Verbraucherkonten zu einer Freigabe. Wenn Sie Konten hinzufügen, können Sie wählen, ob Sie vollständige oder Leserkonten hinzufügen möchten. Sie können auch direkt ein Leserkonto erstellen und es dann der Freigabe hinzufügen.

  • Bearbeiten einer Freigabe, einschließlich:

    • Anzeige der in der Freigabe enthaltenen Objekte.

    • Hinzufügen oder Entfernen von Tabellen oder sicheren Ansichten zur/aus der Freigabe.

      Bemerkung

      Die Weboberfläche unterstützt derzeit nicht das Hinzufügen oder Entfernen externer Tabellen, das Sichern materialisierter Ansichten oder das Sichern von UDFs zu/aus Freigaben. Die gesamte Verwaltung dieser Objekte in Freigaben muss mit SQL erfolgen.

      Wichtig

      Wenn Sie Daten sicher für Datenverbraucher in verschiedenen Regionen oder auf verschiedenen Cloudplattformen freigeben möchten, beachten Sie, dass die Replikation einer Primärdatenbank derzeit blockiert ist, wenn eine oder mehrere externe Tabellen in der Datenbank vorhanden sind.

    • Widerrufen des Zugriffs auf die Freigabe für einzelne Verbraucherkonten.

  • Löschen einer Freigabe, wodurch alle von Verbrauchern für die Freigabe erstellten Datenbanken sofort ungültig werden.

Eingehende Freigabe (Verbraucher)

Eingehende Freigaben werden von Anbieterkonten für Ihr Konto freigegeben. Auf der Weboberfläche können Sie die folgenden Aufgaben für eingehende Freigaben durchführen:

  • Anzeigen aller Freigaben von Anbietern (einschließlich der Person, die die Freigabe bereitgestellt hat, und ob aus der Freigabe in Ihrem Konto eine Datenbank erstellt wurde).

  • Erstellen einer Datenbank aus einer Freigabe.

Sobald aus einer Freigabe eine Datenbank erstellt wurde, werden alle anderen Aufgaben, die Sie auf der Datenbank ausführen (z. B. das Löschen der Datenbank), über die Seite Databases Databases tab vorgenommen.

DDL für Freigaben

Um das Erstellen und Verwalten von Freigaben zu unterstützen, bietet Snowflake den folgenden Satz von speziellen DDL-Befehlen:

Darüber hinaus können Anbieter den Zugriff auf Datenbankobjekte einer Freigabe mit der folgenden DDL-Befehle für die Standardzugriffssteuerung anzeigen, gewähren oder widerrufen:

Allgemeine Hinweise zur Nutzung von Data Sharing

Beachten Sie die folgenden wichtigen Nutzungsdetails für das Erstellen und Warten von Freigaben:

  • Sie können Daten über Regionen und Cloudplattformen hinweg freigeben. Weitere Informationen dazu finden Sie unter Sichere Datenfreigabe über Regionen und Cloudplattformen hinweg.

  • Eine Freigabe kann Daten aus mehreren Datenbanken enthalten. Weitere Informationen dazu finden Sie unter Freigeben von Daten aus mehreren Datenbanken.

  • Aus Gründen der Datensicherheit und des Datenschutzes werden derzeit in Freigaben nur sichere Ansichten unterstützt. Wenn einer Freigabe eine Standardansicht hinzugefügt wird, gibt Snowflake einen Fehler zurück.

  • Das Hinzufügen eines Kontos zu einer Freigabe führt unmittelbar dazu, dass diese Freigabe von den anderen Konten zur Nutzung zur Verfügung steht.

  • Neue und geänderte Zeilen in Tabellen einer Freigabe (oder in Tabellen, auf die eine Ansicht einer Freigabe verweist) stehen allen Verbrauchern, die eine Datenbank aus dem Freigabe erstellt haben, sofort zur Verfügung. Beachten Sie dies bei der Aktualisierung dieser Tabellen.

  • Ein neues Objekt, das in der Datenbank einer Freigabe erstellt wurde, steht Verbrauchern nicht automatisch zur Verfügung.

    Um das Objekt den Verbrauchern zur Verfügung zu stellen, müssen Sie den Befehl GRANT <Berechtigung> … TO SHARE verwenden, mit dem das Objekt explizit zur Freigabe hinzugefügt wird.

    Bemerkung

    Dies gilt auch für Objekte, die aus einer Datenbank gelöscht und dann mit dem gleichen Namen in der Datenbank wiederhergestellt wurden: Das wiederhergestellte Objekt wird als neues Objekt behandelt und ist daher erst zugriffsbereit, wenn dem Objekt explizit die notwendigen Berechtigungen in der Freigabe erteilt wurden.

Vorbereiten des Erstellens einer Freigabe

Vor dem Erstellen einer Freigabe empfiehlt Snowflake, die Snowflake-Objekte zu identifizieren, die Sie freigeben möchten:

  • Datenbank

  • Tabellen

  • Externe Tabellen

  • Sichere Ansichten

  • Sichere materialisierte Ansichten

  • Sichere UDFs

Dies kann zusätzliche Planungs- und Verwaltungsaufgaben erfordern, insbesondere wenn Sie sich entscheiden, nur eine Teilmenge von Daten aus einer Ihrer Tabellen freizugeben.

Datenbank und Tabellen

Für die Freigabe einer Datenbank ist kaum oder gar keine Vorbereitung erforderlich. Ebenso ist keine Vorbereitung erforderlich, wenn Sie ganze Tabellen einer Datenbank freigeben möchten.

Wenn Sie sich jedoch entscheiden, die Daten in einer Tabelle (oder einem Satz von Tabellen) zu filtern, entweder auf Basis bestimmter Bedingungen oder nach Verbraucherkonto, müssen Sie eine oder mehrere sichere Ansichten für die Tabellen erstellen.

Aktivieren von Datenverbrauchern zum Erstellen von Tabellenstreams auf freigegebenen Tabellen

Bemerkung

Die Unterstützung von Tabellenstreams auf freigegebenen Tabellen wird als Vorschau-Funktion bereitgestellt.

Damit Datenverbraucher Streams für gemeinsam genutzte Tabellen erstellen können, müssen Sie die Änderungsverfolgung für die Tabellen aktivieren. Darüber hinaus sollte die Aufbewahrungsdauer für die Tabellen verlängert werden.

Änderungsverfolgung aktivieren

Wenn der erste Stream für eine Tabelle erstellt wird, wird derzeit ein Paar ausgeblendeter Spalten zur Tabelle hinzugefügt und beginnt mit dem Speichern von Metadaten zur Änderungsnachverfolgung. Diese Änderung ist für freigegebene Tabellen nicht möglich, da der Verbraucher einer Freigabe die Quellendatenbank nicht ändern kann. Führen Sie stattdessen ALTER TABLE … CHANGE_TRACKING = TRUE für jede der Tabellen aus, um die Änderungsverfolgung für Tabellen zu aktivieren, die für die Freigabe vorgesehen sind.

Datenaufbewahrungszeitraum für die Tabelle erweitern

Wenn ein Stream nicht regelmäßig verwendet wird, verlängert Snowflake vorübergehend die Datenaufbewahrungsfrist für die Quelltabelle, um ein Veralten zu vermeiden. Wenn die Datenaufbewahrungsfrist der Tabelle weniger als 14 Tage beträgt, wird der Zeitraum unabhängig von der Snowflake-Edition Ihres Kontos automatisch auf den kleineren Transaktionsoffset des Streams oder auf 14 Tage (wenn die Datenaufbewahrungsfrist der Tabelle kleiner als 14 Tage ist) verlängert. Wenn der Stream verarbeitet wurde, wird die verlängerte Datenaufbewahrungsfrist wieder auf die Standardfrist der Tabelle verkürzt.

Ein Stream in einer gemeinsam genutzten Tabelle verlängert die Datenaufbewahrungsfrist für die Tabelle nicht. Legen Sie den Parameter DATA_RETENTION_TIME_IN_DAYS fest, um manuell eine längere Datenaufbewahrungsfrist für eine gemeinsam genutzte Tabelle anzugeben.

Die Parameter CHANGE_TRACKING und DATA_RETENTION_TIME_IN_DAYS können beim Erstellen einer Tabelle (mit CREATE TABLE) oder höher (mit ALTER TABLE) festgelegt werden.

Sichere Objekte (Ansichten, materialisierte Ansichten und UDFs)

Um eine strenge Kontrolle des Zugriffs auf Daten in einer freigegebenen Datenbank bereitzustellen, empfehlen wir die Verwendung von sicheren Ansichten, materialisierten Ansichten und/oder sicheren UDFs. Beispielsweise können Sie Daten nach Datum oder einer anderen Bedingung filtern, oder Sie können sich entscheiden, eine einzige Freigabe zu verwenden, um freigegebene Daten für verschiedene Verbraucherkonten zu partitionieren. Bei sicheren Objekten können Sie die Granularität festlegen, die Sie auf Ihre Daten anwenden möchten, und gleichzeitig sicherstellen, dass die Basistabellen und die Geschäftslogik vor ungewollter Offenlegung geschützt sind.

Sichere Objekte werden ähnlich wie Standardobjekte mit den entsprechenden Befehlen CREATE <Objekt> oder ALTER <Objekt> definiert. Beachten Sie jedoch die folgenden wichtigen Nutzungshinweise:

  • Sichere Objekte, die Tabellen über ihren vollqualifizierten Namen (z. B. <Datenbankname>.<Schemaname>.<Tabellenname>) referenzieren, können in eine Freigabe aufgenommen werden. Allerdings müssen sichergestellt werden, dass der referenzierte Datenbankname mit der Datenbank der Freigabe übereinstimmt.

  • Fügen Sie keine sicheren Objekte hinzu, die in ihrer Definition die Funktionen CURRENT_USER oder CURRENT_ROLE verwenden. Die von diesen Funktionen zurückgegebenen Kontextwerte haben keine Relevanz für das Konto eines Verbrauchers und führen dazu, dass das Abfragen/Verwenden des Objekts fehlschlägt.

  • Bei der Definition eines sicheren Objekts, das für Verbraucherkonten freigegeben werden soll, ist ein weiterer wichtiger Schritt erforderlich: Es muss geprüft werden, ob das Objekt korrekt konfiguriert ist, damit nur die Daten angezeigt werden, die Sie anzeigen möchten. Dies ist vor allem dann wichtig, wenn Sie den Datenzugriff auf Basis des Kontos, für das die Daten freigegeben werden, einschränken möchten.

    Um die Durchführung dieser Validierung zu vereinfachen, stellt Snowflake den Sitzungsparameter SIMULATED_DATA_SHARING_CONSUMER zur Verfügung.

    Derzeit unterstützt der Sitzungsparameter SIMULATED_DATA_SHARING_CONSUMER nur sichere Ansichten und sichere materialisierte Ansichten, nicht jedoch sichere UDFs. Wenn Sie diesen Parameter in einer Sitzung festlegen, können Sie die Abfrage einer sicheren Ansicht als Benutzer in einem der Verbraucherkonten simulieren, für die Sie die Ansicht freigeben möchten.

    Hier ein Beispiel für ein Verbraucherkonto mit dem Namen xy12345:

    ALTER SESSION SET SIMULATED_DATA_SHARING_CONSUMER = xy12345;
    

Ein detailliertes Beispiel finden Sie unter Verwenden von sicheren Objekten zur Steuerung des Datenzugriffs.

Erstellen einer Freigabe mit SQL

So erstellen Sie eine Freigabe mit SQL:

  1. Verwenden Sie den Befehl CREATE SHARE, um eine leere Freigabe zu erstellen.

  2. Verwenden Sie den Befehl GRANT <Berechtigung> … TO SHARE, um eine Datenbank zur Freigabe hinzuzufügen und dann selektiv Zugriff auf bestimmte Datenbankobjekte (Schemas, Tabellen und sichere Ansichten) der Freigabe zu gewähren.

  3. Verwenden Sie den Befehl ALTER SHARE, um einem oder mehreren Konten Zugriff auf die Freigabe zu gewähren.

Bemerkung

Bei den folgenden Schritten wird davon ausgegangen, dass ein Anbieterkonto mit dem Namen prvdr1 Daten für die beiden Verbraucherkonten xy12345 und yz23456 freigibt.

Schritt 1: Leere Freigabe erstellen

Im folgenden Beispiel wird eine leere Freigabe mit dem Namen sales_s erstellt:

CREATE SHARE sales_s;

Schritt 2: Datenbank und Objekten Berechtigungen für die Freigabe erteilen

Um Objekte in die Freigabe aufzunehmen, vergeben Sie für jedes Objekt Berechtigungen. Wenn Sie Berechtigungen erteilen, erteilen Sie die Nutzungsberechtigung zuerst allen Containerobjekten, bevor Sie Nutzungsberechtigungen für Objekte in dem Container erteilen. Erteilen Sie beispielsweise zuerst die Nutzungsberechtigung für eine Datenbank, bevor Sie Nutzungsberechtigungen für alle in der Datenbank enthaltenen Schemas erteilen.

Bemerkung

Führen Sie diese Aufgabe aus, bevor Sie Konten zur Freigabe hinzufügen. Der Versuch, ein Konto hinzuzufügen, bevor der Datenbank die Nutzungsberechtigung erteilt wird, führt zu einem Fehler.

Das folgende Beispiel veranschaulicht die Erteilung von Berechtigungen für die folgenden Objekte an der im vorherigen Schritt erstellten Freigabe sales_s:

  • sales_db (Datenbank)

  • aggregates_eula (Schema)

  • aggregate_1 (Tabelle)

GRANT USAGE ON DATABASE sales_db TO SHARE sales_s;

GRANT USAGE ON SCHEMA sales_db.aggregates_eula TO SHARE sales_s;

GRANT SELECT ON TABLE sales_db.aggregates_eula.aggregate_1 TO SHARE sales_s;

So prüfen Sie die Inhalte der Freigabe:

SHOW GRANTS TO SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+

Dadurch wird sichergestellt, dass die Freigabe korrekt konfiguriert ist, bevor sie anderen Konten zur Verfügung gestellt wird.

Schritt 3: Konten zur Freigabe hinzufügen

Achtung

Wenn Sie ein Business Critical-Konto haben und Daten für Verbraucherkonten freigeben:

  • Snowflake unterstützt zwar die Freigabe sensibler Daten für Nicht-Business Critical-Konten (standardmäßig deaktiviert), fördert diese Vorgehensweise aber nicht.

  • Um die Einhaltung der HIPAA-Anforderungen sicherzustellen, erlaubt Snowflake keine Freigabe von Daten aus HIPAA-Konten für Nicht-HIPAA-Konten.

  • Wenn Sie Tri-Secret Secure für den Datenschutz verwenden, behandelt Snowflake den Datenzugriff von diesen Verbraucherkonten so, als ob der Zugriff von Ihrem eigenen Konto aus erfolgt.

Weitere Informationen zu diesen Empfehlungen und Einschränkungen finden Sie unter Datenfreigabe und Business Critical-Konten.

Im folgenden Beispiel werden zwei Konten zur sales_s-Freigabe hinzugefügt:

ALTER SHARE sales_s ADD ACCOUNTS=xy12345, yz23456;

Die Konten xy12345 und yz23456 können nun die Freigabe anzeigen und daraus eine Datenbank erstellen.

Bemerkung

Wenn die Konten beim Hinzufügen zu einer Freigabe nicht vorhanden sind, wird der Befehl erfolgreich abgeschlossen, aber es werden keine Aktualisierungen an der Freigabe vorgenommen. Damit die Freigabe ordnungsgemäß aktualisiert wird, müssen Sie sicherstellen, dass die Konten vorhanden sind und die Namen korrekt eingegeben wurden.

Verwenden Sie SHOW SHARES, um die Freigabe zu bestätigen. In der Ausgabe des Befehls wird die Freigabe sales_s aufgelistet. Die Spalte kind zeigt an, dass es sich um eine OUTBOUND-Freigabe handelt, was bedeutet, dass diese Freigabe eine Datenbank mit anderen Snowflake-Konten teilt. In der Spalte to sind alle Konten aufgeführt, für die die Freigabe zur Verfügung gestellt wurde:

SHOW SHARES;

+-------------------------------+----------+-------------------------+-----------------------+------------------+--------------+----------------------------------------+
| created_on                    | kind     | name                    | database_name         | to               | owner        | comment                                |
|-------------------------------+----------+-------------------------+-----------------------+------------------+--------------+----------------------------------------|
| 2016-07-09 19:18:09.821 -0700 | INBOUND  | SFC_SAMPLES.SAMPLE_DATA | SNOWFLAKE_SAMPLE_DATA |                  |              | Sample data sets provided by Snowflake |
| 2017-06-15 17:02:29.625 -0700 | OUTBOUND | PRVDR1.SALES_S          | SALES_DB              | XY12345, YZ23456 | ACCOUNTADMIN |                                        |
+-------------------------------+----------+-------------------------+-----------------------+------------------+--------------+----------------------------------------+

Warten von Freigaben mit SQL

Anzeigen von Verbrauchern, die Datenbanken aus Freigaben erstellt haben

Um die Konten anzuzeigen, die Datenbanken aus einer Freigabe erstellt haben, verwenden Sie den Befehl SHOW GRANTS OF SHARE. Dies unterscheidet sich von der Liste der von SHOW SHARES zurückgegebenen Konten:

  • SHOW SHARES listet alle Freigaben auf, die für Konten verfügbar sind, sowie die Konten, die auf jede Freigabe zugreifen können.

  • SHOW GRANTS OF SHARE listet alle Konten auf, die eine Datenbank aus der Freigabe erstellt haben. Wenn kein Konto eine Datenbank aus der Freigabe erstellt hat, ist die Ergebnisliste leer.

Im Beispiel unten wird Folgendes gezeigt:

  • Zwei Freigaben, prvdr1.sales_s und prvdr1.sales_s2, die den Konten xy12345 und yz23456 zur Verfügung gestellt wurden.

  • Das Konto xy12345 hat von der Freigabe prvdr1.sales_s eine Datenbank erstellt.

  • Kein Konto hat Datenbanken von Freigabe prvdr1.sales_s2 erstellt.

SHOW SHARES;

+-------------------------------+----------+-------------------------+-----------------------+------------------+--------------+----------------------------------------+
| created_on                    | kind     | name                    | database_name         | to               | owner        | comment                                |
|-------------------------------+----------+-------------------------+-----------------------+------------------+--------------+----------------------------------------|
| 2016-07-09 19:18:09.821 -0700 | INBOUND  | SFC_SAMPLES.SAMPLE_DATA | SNOWFLAKE_SAMPLE_DATA |                  |              | Sample data sets provided by Snowflake |
| 2017-06-15 17:02:29.625 -0700 | OUTBOUND | PRVDR1.SALES_S          | SALES_DB              | XY12345, YZ23456 | ACCOUNTADMIN |                                        |
| 2017-06-15 17:02:29.625 -0700 | OUTBOUND | PRVDR1.SALES_S2         | SALES_DB              | XY12345, YZ23456 | ACCOUNTADMIN |                                        |
+-------------------------------+----------+-------------------------+-----------------------+------------------+--------------+----------------------------------------+

SHOW GRANTS OF SHARE sales_s;

+-------------------------------+----------------+------------+----------+
| created_on                    | share          | granted_to | account  |
|-------------------------------+----------------+------------+----------|
| 2017-06-15 18:00:03.803 -0700 | PRVDR1.SALES_S | ACCOUNT    | XY12345  |
+-------------------------------+----------------+------------+----------+

SHOW GRANTS OF SHARE sales_s2;

+------------+-------+------------+---------+
| created_on | share | granted_to | account |
|------------+-------+------------+---------|
+------------+-------+------------+---------+

Hinzufügen von Objekten zu einer Freigabe

Sie können jederzeit mit dem Befehl GRANT <Berechtigung> … TO SHARE Objekte zu einer bestehenden Freigabe hinzufügen. Alle Objekte, die Sie zu einer Freigabe hinzufügen, sind sofort für die Konten der Verbraucher verfügbar, die Datenbanken aus der Freigabe erstellt haben. Wenn Sie beispielsweise eine Tabelle zu einer Freigabe hinzufügen, können Benutzer in Verbraucherkonten die Daten in der Tabelle abfragen, sobald die Tabelle zu der Freigabe hinzugefügt wird.

Bemerkung

  • Wenn sich das Schema des Objekts bereits in der Freigabe befindet, müssen Sie nur das Objekt hinzufügen.

  • Wenn das Schema des Objekts noch nicht in der Freigabe enthalten ist, müssen Sie zuerst das Schema hinzufügen und dann das Objekt.

Im folgenden Beispiel wird die sichere Ansicht agg_secure im Schema aggregates_eula zur Freigabe sales_s hinzugefügt:

SHOW GRANTS TO SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+

GRANT SELECT ON VIEW sales_db.aggregates_eula.agg_secure TO SHARE sales_s;

SHOW GRANTS TO SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-17 12:33:15.310 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGG_SECURE  | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+

Entfernen von Objekten aus einer Freigabe

Sie können Objekte jederzeit mit dem Befehl REVOKE <Berechtigung> … FROM SHARE aus einer bestehenden Freigabe entfernen. Alle Objekte, die Sie aus einer Freigabe entfernen, stehen auch sofort den Benutzerkonten der Verbraucher, die Datenbanken aus der Freigabe erstellt haben, nicht mehr zur Verfügung. Sobald Sie beispielsweise eine Tabelle aus einer Freigabe entfernt haben, können Benutzer in Verbraucherkonten die Daten der Tabelle nicht mehr abfragen.

Im folgenden Beispiel wird die sichere Ansicht agg_secure im Schema aggregates_eula aus der Freigabe sales_s entfernt:

SHOW GRANTS TO SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-17 12:33:15.310 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGG_SECURE  | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+

REVOKE SELECT ON VIEW sales_db.aggregates_eula.agg_secure FROM SHARE sales_s;

+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+
| created_on                    | privilege | granted_on | name                                 | granted_to | grantee_name   | grant_option | granted_by   |
|-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------|
| 2017-06-15 16:45:07.307 -0700 | USAGE     | DATABASE   | SALES_DB                             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:10.310 -0700 | USAGE     | SCHEMA     | SALES_DB.AGGREGATES_EULA             | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
| 2017-06-15 16:45:12.312 -0700 | SELECT    | TABLE      | SALES_DB.AGGREGATES_EULA.AGGREGATE_1 | SHARE      | PRVDR1.SALES_S | false        | ACCOUNTADMIN |
+-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+

Hinzufügen von Konten zu einer Freigabe

Sie können jederzeit mit dem Befehl ALTER SHARE Konten zu einer bestehenden Freigabe hinzufügen. Sobald ein Konto zu einer Freigabe hinzugefügt wurde, ist die Freigabe für das Konto „sichtbar“. Das Konto kann dann sofort eine Datenbank aus der Freigabe erstellen und in der Datenbank befindliche Snowflake-Objekte abfragen.

Entfernen von Konten aus einer Freigabe

Sie können Konten jederzeit mit dem Befehl ALTER SHARE aus einer bestehenden Freigabe entfernen. Wenn Sie ein Konto aus einer Freigabe entfernen, wird die von ihnen daraus erstellte Datenbank sofort ungültig. Alle Abfragen und andere Operationen, die Benutzer des Kontos auf der Datenbank durchführen, funktionieren nicht mehr.

Ein Konto wird aus einer Freigabe entfernt, indem Sie eine neue Liste von Konten für die Freigabe festlegen und das gewünschte Konto aus der Liste entfernen.

Nachdem Sie ein Konto aus einer Freigabe entfernt haben, können Sie es wieder zu der Freigabe hinzufügen. Dabei wird jedoch nicht die Datenbank wiederhergestellt, die sie zuvor aus der Freigabe erstellt hatten. Sie müssen eine neue Datenbank aus der Freigabe erstellen.

Bemerkung

Bevor Sie ein Konto aus einer Freigabe entfernen, sollten Sie die Auswirkungen berücksichtigen, die dies auf das Konto haben wird. Da die Datenbank sofort ungültig wird, werden alle Abfragen und andere Operationen, die Benutzer (im Konto) auf der Datenbank durchführen, nicht mehr funktionieren, was einen erheblichen Einfluss auf die Geschäftstätigkeit des Kontos haben könnte.

Löschen einer Freigabe

Sie können eine Freigabe jederzeit mit dem Befehl DROP SHARE löschen. Wenn Sie eine Freigabe löschen, werden sofort alle Datenbanken ungültig, die von Verbraucherkonten aus der Freigabe erstellt wurden. Alle Abfragen und andere Operationen, die mit diesen Datenbanken durchgeführt wurden, funktionieren nicht mehr.

Nach dem Löschen einer Freigabe können Sie diese unter dem gleichen Namen wiederherstellen. Dabei wird jedoch keine der Datenbanken wiederhergestellt, die von Verbraucherkonten aus der Freigabe erstellt wurden. Die wiederhergestellte Freigabe wird als neue Freigabe behandelt, und alle Verbraucherkonten müssen eine neue Datenbank aus der neuen Freigabe erstellen.

Bemerkung

Bevor Sie eine Freigabe löschen, sollten Sie die Auswirkungen berücksichtigen, die dies auf alle Verbraucherkonten haben wird.

Stattdessen sollten Sie in Betracht ziehen, einzelne Objekte aus der Freigabe zu entfernen. Entfernte Objekte können wieder zu einer Freigabe hinzugefügt werden, ohne dass zusätzliche Aufgaben seitens der Verbraucherkonten erforderlich sind.