Verbraucheranalyse mit mehreren Anbietern¶
Ein Verbraucher kann mit einer einzigen Anfrage eine Analyse in mehreren Clean Rooms desselben oder mehrerer Anbieter durchführen und die kombinierten Ergebnisse einsehen. Bei den Ergebnissen handelt es sich um eine Vereinigung der Analyseergebnisse aus den einzelnen Clean Rooms, nicht um die Verbraucherdaten, die anhand einer Vereinigung von Anbieterdaten in mehreren Clean Rooms analysiert werden.
Anbieter können alle Details der Abfrage einsehen, einschließlich der anderen abgefragten Clean Rooms und der Vorlage, bevor sie die Abfrage genehmigen. Anbieter können nicht sehen, welche Daten aus anderen Clean Rooms stammen oder welche Anbietertabellen in anderen Clean Rooms abgefragt werden. Der Zugriff auf die Daten in den einzelnen Clean Rooms und der Umgang mit ihnen erfolgt sicher und in Übereinstimmung mit den Verknüpfungs-, Spalten- und anderen Richtlinien in jedem Clean Room.
Ergebnisse der Multi-Anbieter-Analyse können aktiviert werden, wenn die Aktivierung in allen Clean Rooms aktiviert ist.
Anforderungen¶
Vorlagen: Die Multi-Anbieter-Analyse kann mit jeder von Snowflake bereitgestellten oder benutzerdefinierten Vorlage durchgeführt werden.
Umgebungen: Multi-Anbieter-Analysen können nur mit der Clean Room API durchgeführt werden. Sie können nicht in der Clean Room UI ausgeführt werden.
Abrechnung: Der Verbraucher zahlt für Multi-Anbieter-Abfragen.
Andere Anforderungen: - Alle Clean Rooms in einer Multi-Anbieter-Analyse müssen über eine Verknüpfungsrichtlinie für Anbieter verfügen. Wenn die Analyse in einem Clean Room fehlschlägt, wird die gesamte Anfrage fehlschlagen.
Überblick über die Multi-Anbieter-Analyse¶
Hier finden Sie einen Überblick darüber, wie die Multi-Anbieter-Analyse funktioniert. In den Codebeispielen finden Sie ausführbaren Beispielcode.
Der Verbraucher installiert alle Clean Rooms, die er in seinem Multi-Anbieter-Ablauf verwenden möchte, auf die übliche Weise. Clean Rooms in einer Multi-Anbieter-Analyse sind Standard-Clean Rooms.
Der Verbraucher verknüpft Datensätze und legt Verknüpfungsrichtlinien auf die übliche Weise fest. In Anbieter- und Verbraucher-Clean Rooms müssen alle Verknüpfungsrichtlinien definiert sein,, unabhängig davon, ob die Richtlinie von der Vorlage geprüft wird oder nicht.
Die Anfrage bezieht sich auf eine einzige Vorlage, und alle Clean Rooms müssen diese Vorlage installiert haben. Wenn der Verbraucher eine benutzerdefinierte Vorlage verwenden möchte, muss er den Standardablauf für die Anfrage von Verbrauchervorlagen durchlaufen:
Der Verbraucher ruft
consumer.create_template_request
für jeden Clean Room auf und gibt dabei die benutzerdefinierte Vorlage an.Der Anbieter ruft
provider.list_pending_template_requests
auf, um ausstehende Vorlagenanfragen zu sehen, und ruft dannprovider.approve_template_request
auf, um das Hinzufügen der Vorlage zu seinem Clean Room zu genehmigen.Der Verbraucher ruft
consumer.list_template_requests
auf, um zu erfahren, ob die Anfrage genehmigt wurde.
Die Anbieter und Verbraucher legen die Spaltenrichtlinien für die Vorlage auf die übliche Weise fest.
Der Anbieter ruft
provider.enable_multiprovider_computation
in jedem Clean Room auf, um Anfragen des Verbrauchers zu sehen. (Vor diesem Aufruf gesendete Anfragen werden in eine Warteschlange gestellt, sind aber für den Anbieter erst sichtbar, wenn diese Prozedur aufgerufen wird.)Der Verbraucher bittet um die Genehmigung, eine Vorlage auszuführen. Es gibt ein paar Variationen des Anfrage- und Genehmigungsablaufs, aber hier ist der Standardablauf:
Der Verbraucher sendet eine Multi-Anbieter-Anfrage an alle Clean Rooms, indem er
consumer.prepare_multiprovider_flow
aufruft. Diese Anfrage gibt die Liste der Clean Rooms, die verwendete Vorlage und alle Vorlagenparameter an, einschließlich der Anbieter- und Verbrauchertabellen. Der Aufruf erfolgt nur einmal und wird an alle Clean Rooms in der Anfrage gesendet. Jeder Clean Room sieht alle Anfragedetails, aber die Liste der Anbietertabellen wird auf die Anbietertabellen in diesem Clean Room gefiltert. Eine Anfrage-ID wird zurückgegeben.Jeder Anbieter ruft
provider.view_multiprovider_requests
auf, um die vom Verbraucher gesendeten Multi-Anbieter-Anfragen zu sehen, und ruft dannprovider.process_multiprovider_request
auf, um sie zu genehmigen.
Wenn alle Clean Rooms die Anfrage genehmigt haben, ruft der Verbraucher
consumer.execute_multiprovider_flow
auf, um die Anfrage auszuführen. Die Vorlage wird in jedem Clean Room mit den Informationen aus der letztenconsumer.prepare_multiprovider_flow
-Anfrage ausgeführt, und die kombinierten Ergebnisse werden an den Verbraucher gesendet. Der Verbraucher kannexecute_multiprovider_flow
erneut ohne weitere Genehmigung aufrufen, bis ein Anbieter die Berechtigung für die Abfrage widerruft oder das Budget für die differentielle Privatsphäre aufgebraucht ist (wenn die differentielle Privatsphäre aktiviert ist).
Details zu Anfrage und Genehmigung¶
Hier finden Sie Einzelheiten zum Anfrage- und Genehmigungsprozess. Es gibt verschiedene Varianten des Prozesses.
Änderungen im Anfrage- und Genehmigungsablauf¶
Bei der Durchführung einer Multi-Anbieter-Analyse gibt es drei mögliche Abläufe:
- Genehmigung pro Anfrage (Standard-Verhaltensweise):
Der Verbraucher ruft
consumer.prepare_multiprovider_flow
mit den Details der Abfrage auf.Der Anbieter sieht die Abfrage (
provider.view_multiprovider_requests
) und genehmigt sie (provider.process_multiprovider_request
). Dieser Schritt kann ausgelassen werden, wenn der Anbieter diese Abfrage zuvor genehmigt hat.Der Verbraucher führt die Abfrage aus (
consumer.execute_multiprovider_flow
).
- Genehmigung pro Verbraucher und Clean Room:
Der Verbraucher ruft
consumer.prepare_multiprovider_flow
mit den Details der Abfrage auf.Der Anbieter sieht die Abfrage (
provider.view_multiprovider_requests
) und genehmigt sie (provider.process_multiprovider_request
), wobei er-1
als Abfrage-ID und nicht die eigentliche Abfrage-ID weitergibt. Infolgedessen muss der Verbraucher bei künftigen Anfragen immer nochconsumer.prepare_multiprovider_flow
aufrufen, aber die Genehmigung wird automatisch und ohne zusätzliche Zustimmung des Anbieters erteilt.Der Verbraucher führt die Abfrage aus (
consumer.execute_multiprovider_flow
).
- Automatisierte Genehmigung:
Der Anbieter ruft
provider.resume_multiprovider_tasks
im Clean Room auf. Alle Multi-Anbieter-Anfragen von Verbrauchern in diesem Clean Room werden automatisch genehmigt.Der Verbraucher ruft
consumer.prepare_multiprovider_flow
mit den Details der Abfrage auf. Die Anfrage wird automatisch genehmigt.Der Verbraucher führt die Abfrage aus (
consumer.execute_multiprovider_flow
).
In allen Abläufen können Sie jede zuvor erteilte Abfragegenehmigung widerrufen.
Kriterien für die Genehmigung einer Abfrage¶
consumer.execute_multiprovider_flow
wertet die letzte an consumer.prepare_multiprovider_flow
gesendete Abfrage aus, um festzustellen, ob sie jemals zuvor genehmigt wurde. Wenn eine passende genehmigte Anfrage gefunden wird, wird die Abfrage fortgesetzt. Wenn keine vorherige passende Anfrage gefunden wird, schlägt consumer.execute_multiprovider_flow
fehl. (Wenn für diesen oder alle Verbraucher eine pauschale Genehmigung erteilt wurde, wird die Genehmigungsprüfung übersprungen.) Frühere Genehmigungen werden mit den folgenden Werten abgeglichen:
Liste der abgefragten Clean Rooms.
Namen der an den Clean Room gesendeten Argumente. Alle Argumentnamen, die in der genehmigten Anfrage enthalten sind, müssen auch in der neuen Anfrage enthalten sein. Die Werte der Argumente werden nicht überprüft, nur die Namen der Argumente.
Name der ausgeführten Vorlage.
Darüber hinaus muss die Vorlage allen Clean Room-Richtlinien entsprechen, einschließlich der Zeilenrichtlinien, der Spaltenrichtlinien und der differentiellen Privatsphäre (falls aktiviert), unabhängig davon, ob pauschale Genehmigungen erteilt wurden oder nicht.
Genehmigungsverlauf¶
consumer.execute_multiprovider_flow
versucht, die letzte Abfrage auszuführen, die an consumer.prepare_multiprovider_flow
gesendet wurde. Die Abfrage kann ausgeführt werden, wenn alle Sicherheitsüberprüfungen erfolgreich waren und eine entsprechende Abfrage in der Vergangenheit genehmigt wurde. Sie können sich also einen Ablauf wie diesen vorstellen:
Der Verbraucher bereitet die Abfrage A vor.
Der Anbieter genehmigt A.
Der Verbraucher führt A aus.
Der Verbraucher bereitet die Abfrage B vor.
Der Anbieter genehmigt B.
Der Verbraucher führt B aus.
Der Verbraucher bereitet die Abfrage A erneut vor, mit denselben Parametern.
Der Verbraucher kann A ohne Genehmigung des Anbieters erneut ausführen, da die Abfrage bereits genehmigt wurde. Im nächsten Abschnitt erfahren Sie, wie der Clean Room feststellt, ob eine Abfrage bereits genehmigt wurde.
Automatische Abfragegenehmigungen aktivieren oder deaktivieren¶
Die Genehmigung von Abfragen kann pro Verbraucher oder für alle Verbraucher in einem Clean Room automatisiert werden.
Um alle Multi-Anbieter-Abfragen von einem bestimmten Verbraucher im Clean Room automatisch zu genehmigen, ruft der Anbieter provider.process_multiprovider_request
mit -1
als Abfrage-ID auf. Alle Multi-Anbieter-Anfragen von diesem Verbraucher in diesem Clean Room werden dann genehmigt. (Der Verbraucher muss immer noch consumer.prepare_multiprovider_flow
aufrufen, wenn er die Abfrage ändert, und der Anbieter sieht immer noch alle consumer.prepare_multiprovider_flow
-Aufrufe im provider.view_multiprovider_requests
-Anfrageverlauf.) Um die automatische Genehmigung für einen bestimmten Benutzer zu deaktivieren, müssen Sie das Genehmigungsprotokoll aktualisieren.
Um alle Multi-Anbieter-Abfragen für alle Verbraucher automatisch zu genehmigen, ruft der Anbieter provider.resume_multiprovider_tasks
im Clean Room auf. Alle Multi-Anbieter-Anfragen von allen Verbrauchern werden dann automatisch genehmigt. (Der Verbraucher muss immer noch consumer.prepare_multiprovider_flow
aufrufen, wenn er die Abfrage ändert, und der Anbieter sieht immer noch alle consumer.prepare_multiprovider_flow
-Aufrufe im provider.view_multiprovider_requests
-Anfrageverlauf.) Um die auf diese Weise erteilte automatische Genehmigung zu deaktivieren, rufen Sie provider.suspend_multiprovider_tasks
auf.
Vorlage gestalten¶
Der Multi-Anbieter-Ablauf ist beim Testen zeitaufwendig und umfasst viele Schritte, die einen Vorlagenfehler verschleiern können. Daher sollten Sie sicherstellen, dass Ihre Vorlage korrekt ist, bevor Sie sie verwenden. Testen Sie Ihre Vorlage in einem einfachen, von einem Anbieter erstellten und von einem Verbraucher ausgeführten Ablauf, bevor Sie sie in einem Multi-Anbieter-Ablauf verwenden.
In jedem Clean Room wird genau dieselbe Vorlage ausgeführt, aber die source_table
-Liste, die an jeden Clean Room übergeben wird, kann in Länge und Tabellennamen variieren, da die Liste gefiltert wird, um nur die Anbietertabellen in diesem Clean Room anzuzeigen. Abhängig von Ihrer Abfrage müssen Sie daher möglicherweise Jinja-Schleifen und bedingte Anweisungen verwenden, um mit variierenden Listenlängen oder Tabellennamen umzugehen.
Automatische Genehmigungen verwalten und Ihren Genehmigungsstatus ändern¶
Protokoll des Anfrageverlaufs¶
Wenn der Anbieter provider.enable_multiprovider_computation
aufruft, wird eine Protokolltabelle mit dem Namen samooha_cleanroom_cleanroom_ID.admin.request_log_multiprovider
erstellt. Wann immer ein Anbieter eine Multi-Anbieter-Analyse für einen Clean Room genehmigt, wird die Anfrage hier protokolliert. Dies ist die Tabelle, die Clean Rooms überprüft, wenn ein Verbraucher die Ausführung einer Multi-Anbieter-Abfrage beantragt. Die Tabelle enthält eine approved
-Spalte, die angibt, ob die Anfrage ausgeführt werden darf. Da eine Abfrage genehmigt werden muss, bevor sie der Tabelle hinzugefügt wird, ist der anfängliche approved
-Status true
, aber Sie können ihn später ändern, wenn Sie sich entscheiden, die Genehmigung zu widerrufen.
Die Protokolltabelle enthält die Abfragen der Verbraucher aus der provider.process_multiprovider_request
, nicht die Ausführung der Abfragen nach Verbraucher. Die Ausführung von Verbraucherabfragen wird nicht protokolliert.
Eine zuvor genehmigte Anfrage ablehnen¶
Um eine zuvor genehmigte Anfrage abzulehnen, müssen Sie die Spalte approved
in der Protokolltabelle für Multi-Anbieter-Anfragen auf FALSE aktualisieren.
Da ein Verbraucher dieselbe Abfrage mehrmals einreichen kann und jede Genehmigung für eine bestimmte Abfrage die Ausführung der Abfrage ermöglicht, ist die sicherste Methode, eine Multi-Anbieter-Abfrage zu deaktivieren, die Einstellung approved=false
für alle Abfragen eines bestimmten Verbrauchers. Dann weisen Sie den Verbraucher an, alle Abfragen, die er ausführen möchte, erneut einzureichen, indem er consumer.prepare_multiprovider_flow
aufruft.
-- Revoke access to a query you had previously approved
UPDATE samooha_cleanroom_Samooha_Cleanroom_Multiprovider_Clean_Room_1.admin.request_log_multiprovider
SET APPROVED=FALSE
WHERE PARTY_ACCOUNT='<CONSUMER_LOCATOR>';
Zuvor abgelehnte Anfrage aktivieren¶
Wenn Sie eine Anfrage bereits genehmigt und dann abgelehnt haben und sie erneut genehmigen möchten, ist es in der Regel am sichersten, den Verbraucher aufzufordern, seine ablaufbasierte Anfrage erneut einzureichen und sie dann im Standardablauf zu genehmigen, anstatt die Anfrageprotokolltabelle zu aktualisieren.
Automatische Genehmigungen widerrufen¶
Wenn Sie die automatische Genehmigung für alle Verbraucher in einem Clean Room durch den Aufruf von
provider.resume_multiprovider_tasks
aktiviert haben, rufen Sieprovider.suspend_multiprovider_tasks
auf, um pauschale Genehmigungen für alle Benutzer zu widerrufen.Wenn Sie die automatische Genehmigung für einen bestimmten Verbraucher in einem Clean Room aktiviert haben, indem Sie
-1
als Abfrage-ID inprovider.process_multiprovider_request
angegeben haben, siehe Eine zuvor genehmigte Anfrage ablehnen.
Codebeispiele¶
Laden Sie die folgenden Arbeitsmappen herunter, um den Multi-Anbieter-Analyseablauf auszuprobieren. Sie benötigen zwei Snowflake-Konten, auf denen die Clean Room API installiert ist: eines für den Anbieter und eines für den Verbraucher. Das Anbieterkonto erstellt zwei Clean Rooms, die sich ähnlich verhalten wie mehrere Anbieter mit je einem Clean Room.