Verwenden von Freigaben¶
Die -Anbieterfreigabe ist nicht für alle Konten aktiviert
Die Anbieterfreigabe ist standardmäßig für die meisten, aber nicht für alle Konten aktiviert.
Wenn bei der Freigabe von Daten an Verbraucher Fehler auftreten, ist das Feature für Ihr Konto möglicherweise nicht aktiviert. Wenden Sie sich für eine Aktivierung an den Snowflake-Support.
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 SHARE erteilt wurde) verwenden. Weitere Informationen zur Berechtigung CREATE SHARE 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 und HITRUST) |
für |
Business Critical (mit HIPAA und HITRUST) |
✔ |
✔ |
Beide HIPAA-Konten sollten eine signierte BAA miteinander haben. |
Business Critical (mit HIPAA und HITRUST) |
für |
Alle anderen Editions |
✔ |
Weitere Informationen dazu finden Sie unter Aktivieren von Freigaben eines Business Critical-Konto für ein Nicht-Business Critical-Konto. |
|
Business Critical |
für |
Business Critical oder Business Critical (mit HIPAA und HITRUST) |
✔ |
✔ |
|
Business Critical |
für |
Alle anderen Editions |
✔ |
Weitere Informationen dazu finden Sie unter Aktivieren von Freigaben eines Business Critical-Konto für ein Nicht-Business Critical-Konto. |
Bei allen 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 für die Sicherstellung, dass die am Data Sharing beteiligten HIPAA- und HITRUST-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- und HITRUST-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 Secure Data Sharing 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, der die CREATE SHARE-Berechtigung erteilt wurde), können Sie Snowsight oder die Seite Shares der klassischen Weboberfläche verwenden, um die meisten Aufgaben im Zusammenhang mit den Erstellen und Verwalten von Freigaben auszuführen.
Weitere Informationen zum Erstellen und Verwalten von Freigaben in Snowsight finden Sie unter Freigabedaten bereitstellen und verwalten mit Snowsight.
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 vorgenommen.
DDL für Freigaben¶
Um das Erstellen und Verwalten von Freigaben zu unterstützen, bietet Snowflake den folgenden Satz von speziellen DDL-Befehlen:
DESCRIBE SHARE – Beschreibt alle Objekte in einer Freigabe
SHOW SHARES – Listet alle Freigaben sowie die für jede Freigabe angegebenen Verbraucherkonten auf.
Um das Erstellen und Verwalten von Datenbankrollen 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:
SHOW GRANTS TO SHARE … – Listet alle Objektberechtigungen auf, die einer Freigabe erteilt wurden.
SHOW GRANTS OF SHARE … – Listet alle Konten der Freigabe auf und zeigt die Konten an, die die Freigabe verwenden.
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.
Es wird nicht empfohlen, in Ihrer Datenbank sichere Ansichten von Streams zu erstellen und diese Ansichten dann für Verbraucher freizugeben. Dieses Szenario erfordert die Möglichkeit, einen Stream über ein anderes Konto zu ändern, was keine unterstützte Operation ist und daher ein Anti-Pattern (Antimuster) darstellt. Erlauben Sie stattdessen den Verbrauchern, eigene Streams auf den von Ihnen freigegebenen Tabellen und sicheren Ansichten zu erstellen. Weitere Informationen dazu finden Sie unter Streams auf freigegebenen Objekten (unter diesem Thema).
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.
Wenn Sie Tabellen aus derselben Datenbank über verschiedene Freigaben mit demselben Benutzerkonto freigeben, sind beim Erstellen einer Datenbank aus einer der Freigaben alle freigegebenen Tabellen in der importierten Datenbank für den Benutzer sichtbar. Um dies zu verhindern, erstellen Sie für jede Tabelle, die Sie gemeinsam nutzen möchten, ein eigenes Schema.
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.
Sichere Objekte (Ansichten, materialisierte Ansichten und UDFs)¶
Um eine strenge Kontrolle des Zugriffs auf Daten in einer freigegebenen Datenbank bereitzustellen, müssen Sie sichere Ansichten, materialisierte Ansichten und/oder sichere UDFs verwenden. 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;
Copy
Ein detailliertes Beispiel finden Sie unter Verwenden von sicheren Objekten zur Steuerung des Datenzugriffs.
Streams auf freigegebenen Objekten¶
Datenverbraucher können in ihren eigenen Datenbanken Datenstreams erstellen, die Änderungen an den Quelltabellen oder Quellansichten in Data Manipulation Language (DML) erfassen.
Aktivieren von Datenverbrauchern zum Erstellen von Tabellenstreams auf freigegebenen Tabellen¶
Damit Datenverbraucher Streams auf freigegebene Tabellen oder sicheren Ansichten erstellen können, müssen Sie die Änderungsverfolgung für die freigegebenen Tabellen oder die zugrunde liegenden Tabellen bei einer freigegebenen Ansicht 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.
Ein Stream in einer gemeinsam genutzten Tabelle verlängert die Datenaufbewahrungsfrist für die Tabelle nicht. Auch ein Stream auf einer freigegebenen Ansicht verlängert die Datenaufbewahrungsfrist für die zugrunde liegende Tabelle nicht. Legen Sie den Parameter DATA_RETENTION_TIME_IN_DAYS für die Tabelle fest, um manuell eine längere Datenaufbewahrungsfrist für eine freigegebene Tabelle oder eine zugrunde liegende Tabelle bei einer freigegebenen Ansicht 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.
Erstellen einer Freigabe mit SQL¶
So erstellen Sie eine Freigabe mit SQL:
Verwenden Sie den Befehl CREATE SHARE, um eine leere Freigabe zu erstellen.
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.
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;Copy
Schritt 2: Datenbank und Objekten Berechtigungen für die Freigabe erteilen¶
Fügen Sie Objekte (Datenbank, Schema, Tabellen, sichere Ansichten usw.) zur Freigabe hinzu. Sie können entweder über eine Datenbankrolle Berechtigungen für diese Objekte zu einer Freigabe hinzufügen oder der Freigabe direkt Berechtigungen für die Objekte erteilen. Weitere Informationen zu diesen Optionen finden Sie unter Auswählen der Freigabemethode für Datenbankobjekte.
- Option 1
Das folgende Beispiel veranschaulicht das Erstellen einer Datenbankrolle, das Erteilen von Berechtigungen für die folgenden Objekte an die Datenbankrolle und das anschließende Zuweisen der Datenbankrolle zu der im vorherigen Schritt erstellten Freigabe
sales_s
:sales_db
(Datenbank)aggregates_eula
(Schema)aggregate_1
(Tabelle)
CREATE DATABASE ROLE sales_db.dr1; GRANT USAGE ON DATABASE sales_db TO DATABASE ROLE sales_db.dr1; GRANT USAGE ON SCHEMA sales_db.aggregates_eula TO DATABASE ROLE sales_db.dr1; GRANT SELECT ON TABLE sales_db.aggregates_eula.aggregate_1 TO DATABASE ROLE sales_db.dr1; GRANT USAGE ON DATABASE sales_db TO SHARE sales_s; GRANT DATABASE ROLE sales_db.dr1 TO SHARE sales_s;
Copy- Option 2
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;
Copy
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 | +-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+Copy
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- und HITRUST-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;Copy
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 | | +-------------------------------+----------+-------------------------+-----------------------+------------------+--------------+----------------------------------------+Copy
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
undprvdr1.sales_s2
, die den Kontenxy12345
undyz23456
zur Verfügung gestellt wurden.Das Konto
xy12345
hat von der Freigabeprvdr1.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 | |------------+-------+------------+---------| +------------+-------+------------+---------+Copy
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 | +-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+Copy
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 | +-------------------------------+-----------+------------+--------------------------------------+------------+----------------+--------------+--------------+Copy
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.