Erläuterungen zu den Richtlinien von Snowflake Data Clean Room

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:

  • Die Person mit Eigentumsrechten an den Daten muss eine Richtlinie in ihrem Clean Room festlegen. Sie legen Richtlinien über die API oder UI fest. Jeder Richtlinientyp wird separat festgelegt. Clean Rooms implementieren 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']);
    
  • 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;
    

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

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

    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;
    

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']);

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 check 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 check 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']);

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 check 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 check 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' ]);

Die folgende Vorlage prüft, ob der Wert, der von der aufrufenden Person an col1 übergeben wurde, in der Aktivierungsrichtlinie dieser Person enthalten ist. Wenn die Aktivierungsrichtlinie wie zuvor gezeigt festgelegt wurde, bedeutet das, dass nur die Spalten HASHED_EMAIL und``REGION_CODE`` aktiviert werden können.

BEGIN
  CREATE OR REPLACE TABLE cleanroom.activation_data_analysis_results AS
    SELECT {{ col1 | sqlsafe | activation_policy }}
    FROM IDENTIFIER({{ my_table[0] }}) AS c
    RETURN 'analysis_results';
END;

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 Parameter threshold und``threshold_value``, die für einen Benutzenden oder eine Vorlage festgelegt wurden. Diese Werte können in der Clean Rooms-UI oder durch Aufrufen von``provider.add_consumers`` oder provider/consumer.set_privacy geändert werden. Wenn sie für einen Verbrauchenden festgelegt sind, können Sie auf diese Werte in Ihrer Vorlage zugreifen.