Richtlinien für Clean Room-Tabellen

Clean Rooms können Datenrichtlinien implementieren, um zu steuern, wie Daten von Teilnehmern genutzt werden können. Diese gelten zusätzlich zu allen Snowflake-Tabellenrichtlinien, die für die zugrunde liegenden Tabellen festgelegt wurden, die mit dem Clean Room verknüpft sind.

Jeder Teilnehmer in einem Clean Room kann Richtlinien für seine eigenen Daten festlegen. Ihre Richtlinien werden nur in Anfragen von anderen Benutzern durchgesetzt; Ihre Richtlinien werden nicht gegen Ihren eigenen Anfragen durchgesetzt. Wenn Ihre Verknüpfungsrichtlinie beispielsweise Verknüpfungen nur für Spalte A zulässt, sind andere Benutzer auf die Verknüpfung von Spalte A beschränkt, aber Sie können Verknüpfungen für jede Ihrer Spalten ausführen.

Clean Room-Richtlinien können über die Clean Room API oder UI festgelegt werden.

Um Richtlinienprüfungen zu implementieren, muss Folgendes zutreffen:

  • Der Dateneigentümer muss eine Richtlinie in seinem Clean Room festlegen. Sie können Richtlinien über API oder UI festlegen. Jeder Richtlinientyp wird separat festgelegt. Der Clean Room implementiert nativ Spaltenrichtlinien, Zeilenrichtlinien und Aktivierungsrichtlinien. Clean Room-Richtlinien sind nicht additiv: Wenn Sie eine Clean Room-Richtlinie festlegen, werden alle vorherigen Werte gelöscht.

    -- Sets a join policy on column HASHED_EMAIL.
    CALL samooha_by_snowflake_local_db.provider.set_join_policy(
      'my_provider_cleanroom',
      ['my_db.my_sch.T1:HASHED_EMAIL']);
    
    -- Replaces the previous join policy. Now the only column in the join policy is AGE_BND.
    CALL samooha_by_snowflake_local_db.provider.set_join_policy(
      'my_provider_cleanroom',
      ['my_db.my_sch.T1:AGE_BAND']);
    
    Copy
  • Die Vorlage muss die Richtlinie an der entsprechenden Stelle in der Vorlage überprüfen. Eine Clean Room-Richtlinie wird nur geprüft, wenn auf die Spalte in der Vorlage der entsprechende Richtlinienfilter angewendet wurde. Wenn Sie eine Clean Room-Richtlinie festlegen, um Ihre Daten zu schützen, sollten Sie die Vorlage daraufhin untersuchen, ob die Vorlage Ihre Richtlinien wie erwartet durchsetzt. Die folgende Vorlage prüft, ob col1 von der Spaltenrichtlinie des Dateneigentümers zugelassen ist:

    SELECT
      IDENTIFIER( {{ col1 | column_policy }} )
    FROM {{ source_table[0] }} AS c;
    
    Copy

    Die folgende Vorlage prüft nicht, ob col1 über eine Clean Room-Richtlinie verfügt:

    SELECT
      IDENTIFIER( {{ col1 }})
    FROM {{ source_table[0] }} AS c;
    
    Copy

    Clean Rooms unterstützt unterschiedliche Vorlagenfilter für die einzelnen Richtlinientypen. Die Semantik des Filters wird jedoch nicht geprüft, sondern nur, ob die Spalte in der Richtlinie für diesen Filtertyp enthalten ist. Im folgenden -Ausschnitt wird beispielsweise die Verknüpfungsrichtlinie auf col1 geprüft, obwohl die Spalte nicht mit verknüpft ist. Wenn col1 in der Verknüpfungsrichtlinie des Dateneigentümers enthalten ist, kann die Abfrage erfolgreich sein. Wenn col1 nicht in der Verknüpfungsrichtlinie des Dateneigentümers enthalten ist, wird die Abfrage blockiert.

    SELECT
      IDENTIFIER( {{ col1 | join_policy }})
    FROM {{ source_table[0] }} AS c;
    
    Copy

Bemerkung

Spaltenrichtlinienprüfungen werden durchgeführt, wenn die JinjaSQL der Vorlage analysiert wird. Abfragen mit Platzhaltern werden von diesen Prüfungen möglicherweise nicht erfasst, sodass Sie bei der Gestaltung einer Analysevorlage bedacht vorgehen sollten. Wenn einige Spalten wirklich nie abgefragt werden sollen, sollten Sie eine Ansicht Ihrer Quelltabelle erstellen, die diese sensiblen Spalten eliminiert, und stattdessen eine Verknüpfung in dieser Ansicht erstellen.

Snowflake-Richtlinien in Clean Rooms

Wenn Sie Tabellen mit einem Clean Room verknüpfen, werden alle Snowflake-Tabellenrichtlinien für die Quelltabellen in den verknüpften Tabellen im Clean Room durchgesetzt, aber diese Richtlinien werden nicht unbedingt von der Clean Room-API oder -UI gemeldet. Zum Beispiel wird eine Snowflake Verknüpfungsrichtlinie weiterhin im Clean Room erzwungen, aber diese Verknüpfungsrichtlinie kann nicht über consumer.view_provider_join_policy oder consumer.view_join_policy aufgerufen werden. Daher sollten Sie entweder Richtlinien aus den zugrunde liegenden verknüpften Tabellen entfernen, gleichwertige Clean Room-Richtlinien erstellen (falls sie existieren) oder die Existenz dieser Richtlinien Ihren Teilnehmern deutlich mitteilen, damit deren Abfragen nicht fehlschlagen oder sich unerwartet verhalten („Warum ist eine Verknüpfung über diese Spalte nicht möglich?“).

Alle Änderungen an Snowflake-Richtlinien in den Quelltabellen werden automatisch an die verknüpften Ansichten im Clean Room weitergegeben.

Snowflake-Datenschutzrichtlinien verhindern die Erstellung einer Ansicht aus einer geschützten Tabelle, sodass Sie keine Tabellen mit Datenschutzrichtlinien verknüpfen können.

Die folgenden Richtlinien können direkt auf einen Clean Room angewendet werden:

Verknüpfungsrichtlinien

Legen Sie eine Verknüpfungsrichtlinie fest, um anzugeben, welche Spalten in Ihren Daten mit einer beliebigen Vorlage im Clean Room verknüpft werden können. (Snowflake Verknüpfungsrichtlinien geben im Gegensatz dazu an, welche Spalten verknüpft werden müssen.) Verknüpfungsrichtlinien gelten für alle Vorlagen im Clean Room.

Eine Spalte kann nicht sowohl in einer Verknüpfungsrichtlinie als auch in einer Spaltenrichtlinie enthalten sein, wohl aber in einer Verknüpfungsrichtlinie und einer Aktivierungsrichtlinie.

Implementierung einer Verknüpfungsrichtlinie

Clean Room-Verknüpfungsrichtlinien werden für eine Spalte erzwungen, wenn die Vorlage den Filter join_policy oder join_and_column_policy auf die Spalte anwendet.

Wenn eine Vorlage eine Verknüpfungsrichtlinie für eine Spalte prüft und im Clean Room keine Verknüpfungsrichtlinien festgelegt sind oder die Spalte nicht in der Verknüpfungsrichtlinie enthalten ist, wird die Abfrage blockiert.

Der folgende Code zeigt, wie Sie Verknüpfungsrichtlinien als Anbieter oder Verbraucher festlegen. Denken Sie daran, dass Richtlinien nur für Abfragen gelten, die von einem anderen Konto ausgeführt werden.

-- Set join policies on two columns in a clean room where you are a provider.
CALL samooha_by_snowflake_local_db.provider.set_join_policy(
  'my_provider_cleanroom',
  ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL', 'MYDB.MYSCH.EXPOSURES:HASHED_EMAIL']);

-- Set join policies on two columns in a clean room where you are a consumer.
CALL samooha_by_snowflake_local_db.consumer.set_join_policy(
  'my_consumer_cleanroom',
  ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL', 'MYDB.MYSCH.EXPOSURES:HASHED_EMAIL']);
Copy

Mit den folgenden Prozeduren können Sie Verknüpfungsrichtlinien im Code anzeigen oder verwalten:

  • consumer.set_join_policy

  • consumer.view_provider_join_policy

  • consumer.view_join_policy

  • provider.view_join_policy

  • provider.set_join_policy

Spaltenrichtlinien

Legen Sie eine Spaltenrichtlinie fest, um anzugeben, welche Ihrer Spalten in Analyseergebnissen aus einer spezifischen Vorlage projiziert werden können. Spaltenrichtlinien werden auf bestimmte Vorlagen in einem bestimmten Clean Room angewendet.

Eine Spalte kann nicht sowohl in einer Verknüpfungs- als auch in einer Spaltenrichtlinie enthalten sein. Eine Spalte kann sowohl in einer Aktivierungs- als auch in einer Spaltenrichtlinie enthalten sein.

Implementierung einer Spaltenrichtlinie

Clean Room-Spaltenrichtlinien werden für eine Spalte nur dann erzwungen, wenn die Vorlage die Filter column_policy oder join_and_column_policy verwendet.

Wenn ein Clean Room eine Spaltenrichtlinie für eine Spalte prüft und die Spalte nicht in der Spaltenrichtlinie enthalten ist oder der Clean Room über keine Spaltenrichtlinien verfügt, wird die Abfrage blockiert.

Der folgende Code zeigt, wie Spaltenrichtlinien für drei Spalten festgelegt werden, wenn der Zugriff über die prod_overlap_analysis-Vorlage erfolgt. Das Beispiel zeigt, wie Sie die Richtlinie sowohl als Anbieter als auch als Verbraucher einstellen können. Denken Sie daran, dass Richtlinien nur für Abfragen gelten, die von einem anderen Konto ausgeführt werden.

-- Set column policy on prod_overlap_analysis template in a clean room where
-- you are a provider.
call samooha_by_snowflake_local_db.provider.set_column_policy(
  'my_provider_cleanroom',
  ['prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:STATUS',
   'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:AGE_BAND',
   'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:DAYS_ACTIVE']);

-- Set column policy on prod_overlap_analysis template in a clean room where
-- you are a consumer.
call samooha_by_snowflake_local_db.consumer.set_column_policy(
  'my_consumer_cleanroom',
  ['prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:STATUS',
   'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:AGE_BAND',
   'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:DAYS_ACTIVE']);
Copy

Die folgenden Prozeduren werden verwendet, um Spaltenrichtlinien im Code anzuzeigen oder zu verwalten:

  • consumer.set_column_policy

  • consumer.view_column_policy

  • consumer.view_provider_column_policy

  • provider.set_column_policy

  • provider.view_column_policy

Aktivierungsrichtlinien

Geben Sie per Aktivierungsrichtlinie an, welche Ihrer Spalten durch eine Aktivierungsvorlage aktiviert werden können. Durch die Aktivierung werden Abfrageergebnisse in einer Tabelle im Snowflake-Konto des Anbieters oder Verbrauchers oder in einem Aktivierungs-Konnektor eines Drittanbieters gespeichert.

Eine Spalte kann sowohl Teil einer Aktivierungsrichtlinie als auch einer beliebigen anderen Richtlinie sein.

Aktivierungsrichtlinie implementieren

Aktivierungsrichtlinien können in der Clean Room UI festgelegt werden, wenn die Vorlage die Aktivierung zulässt.

Aktivierungsrichtlinien werden für eine bestimmte Spalte in einer bestimmten Vorlage festgelegt.

Aktivierungsrichtlinien werden für eine Spalte nur erzwungen, wenn die Vorlage den Filter activation_policy auf die Spalte anwendet.

Der folgende Code demonstriert das Festlegen einer Aktivierungsrichtlinie zur Zulassung von HASHED_EMAIL- und REGION_CODE-Spalten, die in einem Clean Room aktiviert werden sollen. Diese Richtlinie betrifft alle Benutzer und alle Aktivierungsvorlagen im Clean Room. Es gibt gleichwertige Verfahren für Anbieter und Verbraucher in einem Clean Room. Rufen Sie die Prozedur auf, die Ihre Rolle im Clean Room widerspiegelt:

-- Set activation policy on prod_overlap_analysis template in a clean room where you are a provider
call samooha_by_snowflake_local_db.provider.set_activation_policy('my_cleanroom', [
    'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
    'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);

-- Set activation policy on prod_overlap_analysis template in a clean room where you are a consumer
call samooha_by_snowflake_local_db.consumer.set_activation_policy('my_cleanroom', [
    'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:HASHED_EMAIL',
    'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:REGION_CODE' ]);
Copy

Die folgenden Prozeduren werden verwendet, um Aktivierungsrichtlinien im Code zu verwalten:

  • consumer.set_activation_policy

  • provider.set_activation_policy

Aggregationsrichtlinien

Aggregationsrichtlinien verlangen, dass alle Abfragen für eine Tabelle Aggregationen enthalten (GROUP BY, COUNT und andere Funktionen) und außerdem eine Mindestanzahl von Zeilen pro Ergebnisgruppe erforderlich ist, da die Gruppe sonst aus den Ergebnissen weggelassen wird.

Clean Rooms haben keine eigene Implementierung von Aggregationsrichtlinien. Um Aggregationseinschränkungen auf Ihre verknüpften Daten anzuwenden, wenden Sie entweder eine Aggregationsrichtlinie auf die Quelltabelle an oder implementieren Sie Aggregationseinschränkungen in Ihrer Vorlage.

Einige von Snowflake bereitgestellte Vorlagen verwenden die für einen Benutzer oder eine Vorlage festgelegten Parameter threshold und threshold_value. Diese Werte können in der Clean Room UI oder durch den Aufruf von provider.add_consumers oder provider/consumer.set_privacy geändert werden. Wenn dies für einen Verbraucher festgelegt ist, können Sie auf diese Werte in Ihrer Vorlage zugreifen.