Sichere Objekte zur Kontrolle des Datenzugriffs verwenden¶
Um sicherzustellen, dass sensible Daten in einer freigegebenen Datenbank den Benutzern in Verbraucherkonten nicht zugänglich sind, empfiehlt Snowflake nachdrücklich die Freigabe von sicheren Ansichten und/oder sicheren UDFs anstelle der direkten Freigabe von Tabellen.
Für eine optimale Performance, insbesondere bei der gemeinsamen Nutzung von Daten in extrem großen Tabellen, empfehlen wir außerdem die Definition von Gruppierungsschlüsseln auf den Basistabellen Ihrer sicheren Objekte.
Unter diesem Thema wird die Verwendung von Gruppierungsschlüsseln für Basistabellen von freigegebenen sicheren Objekten beschrieben und eine schrittweise Anleitung zur Freigabe einer sicheren Ansicht für ein Verbraucherkonto bereitgestellt. Es werden Beispielskripte sowohl für Anbieter als auch Verbraucher von Daten zur Verfügung gestellt.
Bemerkung
Die Anleitung zur Freigabe eines sicheren Objekts stimmt im Wesentlichen mit der Anleitung für die Freigabe einer Tabelle überein, es kommen nur noch folgende Objekte hinzu:
Ein „privates“ Schema, das die Basistabelle enthält, und ein „öffentliches“ Schema, das das sichere Objekt enthält. Freigegeben werden nur das öffentliche Schema und das sichere Objekt.
Eine „Zuordnungstabelle“ (im „privaten“ Schema), die nur erforderlich ist, wenn Sie die Daten in der Basistabelle für mehrere Verbraucherkonten und nur bestimmte Zeilen der Tabelle für spezifische Konten freigeben möchten.
Beispieleinrichtung und Aufgaben¶
Diese Beispielanweisungen gehen davon aus, dass eine Datenbank mit dem Namen mydb im Datenanbieterkonto vorhanden ist und die beiden Schemas private und public enthält- Wenn die Datenbank und die Schemas nicht vorhanden sind, sollten Sie diese erst erstellen, bevor Sie fortfahren.
Schritt 1: Daten- und Zuordnungstabellen im privaten Schema erstellen¶
Erstellen Sie die folgenden beiden Tabellen im Schema mydb.private, und füllen Sie diese mit Daten:
sensitive_data – Enthält die freizugebenden Daten sowie die Spalte access_id zur Steuerung des Datenzugriffs nach Konto.sharing_access – Verwendet die Spalte access_id, um die freigegebenen Daten und die Konten, die auf die Daten zugreifen können, zuzuordnen.Schritt 2: Sichere Ansicht im öffentlichen Schema erstellen¶
Erstellen Sie die folgende sichere Ansicht im Schema mydb.public:
paid_sensitive_data – Zeigt Daten auf Basis des Kontos an.Beachten Sie, dass die Spalte access_id aus der Basistabelle (sensitive_data) nicht in die Ansicht aufgenommen werden muss.
Schritt 3: Tabellen und sichere Ansicht überprüfen¶
Überprüfen Sie die Tabellen und die sichere Ansicht darauf, ob die Daten ordnungsgemäß nach Konto gefiltert werden.
Um die Überprüfung sicherer Ansichten zu ermöglichen, die mit anderen Konten geteilt werden, bietet Snowflake den Sitzungsparameter SIMULATED_DATA_SHARING_CONSUMER. Setzen Sie diesen Sitzungsparameter auf den Namen des Verbraucherkontos, für das Sie den Zugriff simulieren möchten. Sie können dann die Ansicht abfragen und die Ergebnisse anzeigen, die ein Benutzer des Verbraucherkontos sehen wird.
Beispielskript¶
Das folgende Skript veranschaulicht die Ausführung aller im vorherigen Abschnitt beschriebenen Aufgaben:
Erstellen Sie zwei Tabellen im „privaten“ Schema, und füllen Sie die erste Tabelle mit Bestandsdaten von drei verschiedenen Unternehmen (Apple, Microsoft und IBM). Befüllen Sie dann die zweite Tabelle mit Daten, mit denen die Bestandsdaten den einzelnen Konten zugeordnet werden:
Erstellen Sie eine sichere Ansicht im „öffentlichen“ Schema. Diese Ansicht filtert die Bestandsdaten der ersten Tabelle nach Konto unter Verwendung der Zuordnungsinformationen aus der zweiten Tabelle:
Erstellen Sie eine Freigabe mit der Rolle ACCOUNTADMIN.
Fügen Sie die Objekte zur Freigabe hinzu. Sie können entweder über eine Datenbankrolle Berechtigungen für diese Objekte zu einer Freigabe hinzufügen (Option 1) oder der Freigabe direkt Berechtigungen für die Objekte erteilen (Option 2):
Fügen Sie Konten zur Freigabe hinzu.
Beispielskript (für Verbraucher)¶
Das folgende Skript kann von Verbrauchern verwendet werden, um eine Datenbank zu erstellen (aus der im obigen Skript erstellten Freigabe) und die sichere Ansicht in der resultierenden Datenbank abzufragen:
Bringen Sie die freigegebene Datenbank in Ihr Konto, indem Sie eine Datenbank aus der Freigabe erstellen.
Erteilen Sie anderen Rollen in Ihrem Konto (z. B. CUSTOM_ROLE1) Berechtigungen für die Datenbank. Die GRANT-Anweisung unterscheidet sich je nachdem, ob der Datenverbraucher der Freigabe Objekte unter Verwendung von Datenbankrollen hinzufügt hat (Option 1) oder indem der Freigabe Berechtigungen für die Objekte direkt zugewiesen wurden (Option 2):
Verwenden Sie die Rolle CUSTOM_ROLE1, um die Ansicht in der von Ihnen erstellten Datenbank abzufragen. Beachten Sie, dass in der Sitzung ein aktives Warehouse vorhanden sein muss, um Abfragen ausführen zu können. Ersetzen Sie im Befehl USE WAREHOUSE den Namen <warehouse_name> durch den Namen eines der Warehouses in Ihrem Konto. Die Rolle CUSTOM_ROLE1 muss über die USAGE-Berechtigung für das Warehouse verfügen: