Privacidade diferencial em Snowflake Data Clean Room¶
Para ajudar a proteger a privacidade das entidades em seus dados, o Snowflake Data Clean Rooms oferece privacidade diferencial. A privacidade diferencial é um sistema de privacidade baseado em matemática [1] para fornecer proteção de dados em nível de entidade tanto para consultas únicas quanto para consultas repetidas de um conjunto de dados. Os provedores de dados podem configurar a privacidade diferencial em suas salas limpas para permitir uma forte proteção de privacidade em nível de entidade e baixos níveis de ruído para seus dados.
A privacidade diferencial é uma alternativa aos requisitos de agregação simples, que podem expor informações privadas se os adversários gerarem consultas «próximas» suficientes sobre dados que diferem em uma entidade (conhecido como ataque de diferenciação).
A privacidade diferencial também é uma boa alternativa ao mascaramento de dados, que oculta totalmente os valores das colunas ao custo de impedir junções em linhas mascaradas e ocultar dados úteis do analista. A privacidade diferencial permite junções em colunas protegidas e também permite que os analistas visualizem dados protegidos, adicionando ruído suficiente para proteger a privacidade das linhas protegidas, mas não tanto ruído que os dados não possam ser usados pelo analista.
Importante
Os clientes são responsáveis por configurar ferramentas de privacidade diferenciadas em Snowflake Data Clean Rooms para atender aos seus requisitos de privacidade de dados. Essas ferramentas não são configuradas por padrão.
Como funciona a privacidade diferencial para clean rooms¶
As clean rooms oferecem sua própria implementação de privacidade diferencial que é diferente da privacidade diferencial do Snowflake, portanto, leia este documento para entender o comportamento e as configurações diferentes.
A privacidade diferencial protege a privacidade de entidades em seus dados. As clean rooms definem uma entidade como um valor exclusivo em uma coluna. As clean rooms determinam quais colunas contêm dados que provavelmente são confidenciais; por exemplo, um número de previdência social ou endereço de e-mail provavelmente é uma entidade confidencial, mas uma cor não. Quando a privacidade diferencial é aplicada, as clean rooms podem identificar uma ou mais colunas de entidades em cada tabela. Você não pode configurar quais colunas são designadas como colunas de entidade.
A privacidade diferencial em clean rooms também adiciona ruído aos resultados numéricos associados a cada entidade.
Os usuários podem tentar comparar vários resultados de consulta diferentes para reduzir o ruído; isso é chamado de ataque de diferenciação. Para atenuar os ataques de diferenciação, a privacidade diferencial calcula e monitora um orçamento de privacidade atribuído a uma conta. Cada consulta tem um custo que reflete o quanto a privacidade da entidade é exposta por essa consulta. Esse custo é determinado matematicamente e depende da consulta, dos dados e das consultas anteriores desse usuário. Se o custo de uma consulta exceder o limite restante do orçamento de privacidade, a consulta falhará. Caso contrário, a consulta pode continuar e o custo é adicionado ao orçamento diário de privacidade do usuário. O orçamento de privacidade é atualizado diariamente.
A privacidade diferencial em clean rooms não aplica restrições de agregação nas consultas, mas você pode adicionar restrições de agregação em seus dados ou modelos de forma independente.
Dica
As políticas de privacidade do Snowflake impedem a criação de uma exibição a partir de uma tabela protegida; portanto, você não pode criar links em tabelas que tenham políticas de privacidade.
Habilite e gerencie a privacidade diferencial na UI¶
Na UI de clean room, os provedores podem definir configurações de privacidade no nível do modelo; os consumidores não podem ativar ou modificar configurações de privacidade diferenciais. Os modelos Snowflake padrão usados na UI de clean rooms podem ter diferentes configurações de privacidade por modelo.
Para usar a UI de clean room para ativar ou desativar a privacidade diferencial de um modelo:
Abra a guia Created ` da página Clean Rooms
Selecione Edit ou
» Edit no bloco da clean room (dependendo se a clean room permite que você execute uma análise).
Selecione Next até chegar em Configure Analysis & Query.
Na parte inferior da página, expanda Privacy Settings. Selecione ou desmarque Differential Privacy e forneça suas configurações para esse modelo, incluindo orçamento de privacidade para usuários e custo de consulta. Você também pode definir valores de limite para aplicar tamanhos mínimos de grupo nessa consulta.
Para definir configurações para um modelo diferente, primeiro defina os valores para o modelo atual e, em seguida, escolha um modelo diferente no seletor de modelos.
Gerencie o orçamento de privacidade na UI¶
Veja seu orçamento de privacidade restante
Ao executar uma consulta ou visualizar os resultados, é possível ver o orçamento total e o valor usado na seção Privacy Settings.
Definição do orçamento de privacidade para outros usuários
Na UI, um provedor pode definir um orçamento de privacidade, mas um consumidor não pode.
Edite uma clean room e acesse a página Configure Analysis & Query.
Selecione um modelo.
Na parte inferior da página, expanda Privacy Settings, onde é possível ver o orçamento de privacidade para usuários e o custo de consulta.
Habilite e gerencie a privacidade diferencial na API¶
Nas API de clean rooms, cada lado pode ativar e configurar a privacidade diferencial no nível do colaborador.
Todos os modelos personalizados usam as mesmas configurações de privacidade diferenciais em uma clean room. Os modelos fornecidos pelo Snowflake podem ser configurados com definições de privacidade individuais na UI.
Use os procedimentos a seguir para configurar a privacidade diferencial:
consumer.enable_templates_for_provider_run
– Ativar ou desativar a privacidade diferencial com valores padrão para todas as análises executadas pelo provedor.consumer.set_privacy_settings
– Especificar configurações de privacidade diferenciais individuais em análises executadas pelo provedor envolvendo modelos personalizados.provider.set_privacy_settings
– Especificar configurações de privacidade individuais diferenciadas em análises conduzidas pelo consumidor envolvendo modelos personalizados.provider.add_custom_sql_template
– Fornecer um parâmetro sensitivity para aumentar ou diminuir o epsilon (nível de ruído) de um modelo acima ou abaixo do epsilon de linha de base definido para o consumidor.provider.add_consumers
– Especificar as configurações de privacidade por consumidor. Você pode adicionar o mesmo cliente várias vezes com configurações de privacidade diferentes para alterar suas configurações de privacidade.provider.suspend_account_dp_task
– Desative o monitoramento do orçamento de privacidade diferencial para todas as clean rooms dessa conta. A privacidade diferencial não é mais aplicada.provider.resume_account_dp_task
– Ative o monitoramento de orçamento de privacidade diferencial para todas as clean rooms dessa conta. Todas as configurações de privacidade diferenciais serão respeitadas.
As configurações de privacidade de uma clean room são armazenadas em SAMOOHA_CLEANROOM_cleanroom_ID.admin.privacy_budget
, onde APPLICATION_ID
é o nome de um modelo (NULL representa todos os modelos personalizados) e PARTY_ACCOUNT é o usuário ao qual ele se aplica.
Gerencie o orçamento de privacidade na API¶
Veja seu orçamento de privacidade restante
Os consumidores podem chamar o procedimento consumer.view_remaining_privacy_budget
. Não há como os provedores verem seu orçamento de privacidade restante no código.
Definição do orçamento de privacidade para outros usuários
Os provedores chamam
provider.set_privacy_settings
ouprovider.add_consumers
.Os consumidores chamam
consumer.set_privacy_settings
para definir o orçamento das análises realizadas pelos provedores.
Configurações de privacidade disponíveis¶
Os seguintes valores de privacidade podem ser definidos por meio de vários procedimentos de configuração de valores de privacidade:
differential
(inteiro) – 1 ou 0, sendo que 1 significa que a privacidade diferencial deve ser ativada e 0 significa que não deve.epsilon
(float): um número maior que zero que indica a quantidade de ruído que deve ser adicionada aos resultados. Valores menores (0,1–1,0) oferecem maior proteção à privacidade, mas acrescentam mais ruído aos resultados. Padrão: 0,1.noise_mechanism
(string) – O algoritmo usado para adicionar ruído aos resultados. EspecifiqueLaplace
ouGaussian
.privacy_budget
(inteiro) – Quanto orçamento de privacidade deve ser dado a esse usuário, um número >= 0, em que 0 significa que ele não pode executar uma consulta quando a privacidade diferencial está ativada. O padrão é 10.threshold
(inteiro) – Especifique 1 para aplicarthreshold_value
em modelos fornecidos pelo Snowflake, ou 0 para ignorarthreshold_value
. O padrão é 0. Isso é gerenciado pela alternância de privacidade diferencial na UI de clean room.threshold_value
(inteiro) – Número mínimo de linhas que um grupo deve ter para aparecer nos dados. Usado somente em modelos específicos fornecidos pela Snowflake.
Funcionalidade adicional de privacidade¶
Adicione ruído aos resultados¶
Se quiser adicionar manualmente ruído aos resultados sem implementar a privacidade diferencial, você pode usar a seguinte função de clean room em seu modelo ou código personalizado. Observe que esse código exige que o usuário tenha orçamento de privacidade suficiente ou falhará; se a tarefa de privacidade diferencial estiver desativada, o usuário terá essencialmente um orçamento infinito.
cleanroom.addnoise(<val>, <epsilon>, <noiserand>, [<gaussian>], [<delta>])
Descrição: adiciona ruído calibrado a um valor numérico para atender às garantias de privacidade diferencial. Essa função só pode ser chamada no contexto de uma clean room. Isso não requer que a privacidade diferencial esteja ativada para o usuário ou modelo, nem que a tarefa de privacidade diferencial esteja ativada. Use essa função em um modelo ou UDP/UDTP.
Argumentos:
val
(DOUBLE) – O valor original ao qual o ruído será adicionado.epsilon
(DOUBLE) – O parâmetro de orçamento de privacidade, em que valores menores (0,1–1,0) fornecem proteção de privacidade mais forte, mas adicionam mais ruído. O valor é > 0.noiserand
(DOUBLE) – Um valor aleatório entre 0 e 1 que adiciona aleatoriedade a cada resultado. Calcule isso em tempo real com um gerador de valores aleatórios em vez de passar um valor estático.gaussian
(BOOLEAN, opcional) – Quando TRUE, usa ruído gaussiano em vez de ruído laplaciano. O padrão é FALSE.delta
(DOUBLE, opcional) – O parâmetro delta do mecanismo gaussiano quandogaussian
é TRUE (quanto menor, melhor). O padrão é 0,000001.
Retorna: um valor DOUBLE que representa o valor original com ruído de preservação da privacidade adicionado.
Recomendações:
Aplica-se somente a agregados (COUNT, SUM, AVG), nunca a registros individuais.
Considere arredondar os resultados para evitar revelar muita precisão.
Essa função requer um orçamento de privacidade para ser executada, portanto, esteja ciente de que ela falhará se o usuário estiver fora do orçamento.
Combine com restrições de tamanho mínimo de grupo para aumentar a proteção.
Exemplo:
Esse modelo de exemplo adiciona ruído a uma contagem de valores de e-mail com hash distintos, usando o valor de epsilon em toda a clean room.
CALL samooha_by_snowflake_local_db.provider.add_custom_sql_template(
$cleanroom_name,
$template_name,
$$
SELECT
cleanroom.addNoise(
count(distinct p.hashed_email), -- Value
{{ privacy.epsilon | sqlsafe }}, -- Epsilon
UNIFORM(0::FLOAT, 1::FLOAT, RANDOM()) -- Noiserand
) AS noisy_count
FROM
IDENTIFIER({{ source_table[0] }}) p
$$);
Defina políticas de agregação e tamanhos mínimos de grupo¶
Se desejar quiser agregação nos dados e especificar tamanhos mínimos de grupo, você pode definir uma política de agregação nas tabelas de origem ou aplicar a agregação nos modelos.
Gerenciamento dos custos de privacidade diferencial¶
Privacidade diferencial incorre em custos mesmo quando usuários individuais ou modelos não ativaram a privacidade diferencial, porque o sistema verifica cada consulta para saber se a privacidade diferencial deve ser aplicada. Se quiser eliminar esse custo, você pode desativar a privacidade diferencial da conta:
Primeiro, desative a privacidade diferencial para todas as salas limpas usando o aplicativo da Web:
Faça login no aplicativo da Web.
Desative a privacidade diferencial em todas as salas limpas sem falhas, mesmo que não sejam compartilhadas ou publicadas:
Selecione Clean rooms » Created » Edit.
Selecione Next até chegar em Configure Analysis & Query.
Na parte inferior da página, expanda Privacy Settings. Desmarque Differential Privacy se ele estiver selecionado e clique em Next e Finish para salvar as alterações. Se ela não estiver selecionada, basta clicar em Cancel e passar para a próxima sala limpa.
Por fim, suspenda a tarefa de privacidade diferencial em segundo plano em sua conta chamando o procedimento provider.suspend_account_dp_task no Snowsight.
Importante
A ativação da privacidade diferencial em uma sala limpa após a desativação da tarefa em segundo plano reativa automaticamente a tarefa para essa conta.
Algumas observações e solução de problemas:
Se você se esquecer de desativar a privacidade diferencial para uma sala limpa e suspender a tarefa em segundo plano, a privacidade diferencial poderá não funcionar nessa sala limpa para os usuários que já a instalaram.
Se a privacidade diferencial for ativada em uma sala limpa antes de a sala limpa ser instalada, a instalação da sala limpa falhará. Nesse caso, é necessário desativar a privacidade diferencial na sala limpa ou reativar a tarefa, conforme descrito abaixo.
Se mais tarde você quiser ativar a privacidade diferencial na conta, ative a privacidade diferencial para qualquer sala limpa na conta ou chame o procedimento provider.resume_account_dp_task no Snowsight.