Neste tópico, mostramos como medir o k-anonimato de um conjunto de dados usando a proteção de dados sensíveis e como visualizá-lo no Looker Studio. Isso permitirá que você entenda melhor os riscos e ajudará a avaliar as vantagens e desvantagens de editar ou desidentificar os dados em termos de utilidade.
Embora o foco deste tópico seja a visualização dak-anonimato da métrica de análise de risco de reidentificação, também é possível visualizar as métricas de l-diversidade usando os mesmos métodos.
Neste tópico, supomos que você já esteja familiarizado com o conceito do k-anonimato e sua utilidade para avaliar a capacidade de reidentificação de registros em um conjunto de dados. Também é útil estar pelo menos um pouco familiarizado com como calcular k-anonimato usando a proteção de dados sensíveis e com o Looker Studio.
Introdução
As técnicas de desidentificação podem ser muito úteis para proteger a privacidade dos usuários enquanto você processa ou usa dados. Mas como saber se um conjunto de dados foi suficientemente desidentificado? Como você saberá se a desidentificação resultou em uma perda excessiva de dados no seu caso de uso? Ou seja, como comparar o risco de reidentificação com a utilidade dos dados para ajudar você a tomar decisões baseadas em dados?
O cálculo do valor de k-anonimato de um conjunto de dados ajuda a responder a essas perguntas avaliando a reidentificabilidade dos registros do conjunto de dados. A proteção de dados sensíveis tem uma funcionalidade integrada para calcular o valor de k-anonimato em um conjunto de dados com base em semi-identificadores especificados por você. Isso permite que você avalie rapidamente se a desidentificação de uma determinada coluna ou combinação de colunas resultará em um conjunto de dados com maior ou menor probabilidade de ser reidentificado.
Exemplo de conjunto de dados
Veja a seguir as primeiras linhas de um grande conjunto de dados de exemplo.
user_id |
age |
title |
score |
---|---|---|---|
602-61-8588 |
24 |
Biostatistician III |
733 |
771-07-8231 |
46 |
Executive Secretary |
672 |
618-96-2322 |
69 |
Programmer I |
514 |
... |
... |
... |
... |
Para a finalidade deste tutorial, user_id
não será abordado, já que o foco são os semi-identificadores. Em um cenário real, é preciso garantir que
user_id
seja editado ou tokenizado adequadamente. A
coluna score
é reservada a esse conjunto de dados, e é improvável que um invasor
possa descobri-la por outros meios. Portanto, não será incluída na
análise. Foque nas colunas restantes, age
e title
, em que um
invasor poderia descobrir informações sobre um indivíduo por meio de outras
fontes de dados. As perguntas que você precisa responder referentes ao conjunto de dados são:
- Qual o efeito dos dois semi-identificadores,
age
etitle
, no risco de reidentificação geral dos dados desidentificados? - Como a aplicação de uma transformação de desidentificação afetará esse risco?
É preciso garantir que a combinação de age
e title
não seja mapeada para um pequeno número de usuários. Por exemplo, suponha que há apenas um usuário no
conjunto de dados cujo título é o Programador I e que tem 69 anos. O invasor pode
cruzar esses dados com informações demográficas ou outras informações
disponíveis, descobrir quem é a pessoa e saber o valor da sua pontuação.
Para mais informações sobre esse fenômeno, consulte a seção "IDs da entidade e cálculo do
k-anonimato" no tópico conceitual Análise de
risco.
Etapa 1: calcular o k-anonimato no conjunto de dados
Primeiro, use a proteção de dados sensíveis para calcular o k-anonimato no conjunto de dados
enviando o JSON a seguir ao
recurso DlpJob
. Nesse
JSON, você define o ID da entidade como a
coluna user_id
e identifica os dois semi-identificadores como as colunas age
e
title
. Você também instrui a proteção de dados sensíveis a salvar os resultados em uma nova tabela do BigQuery.
Entrada JSON:
POST https://dlp.googleapis.com/v2/projects/dlp-demo-2/dlpJobs { "riskJob": { "sourceTable": { "projectId": "dlp-demo-2", "datasetId": "dlp_testing", "tableId": "dlp_test_data_kanon" }, "privacyMetric": { "kAnonymityConfig": { "entityId": { "field": { "name": "id" } }, "quasiIds": [ { "name": "age" }, { "name": "job_title" } ] } }, "actions": [ { "saveFindings": { "outputConfig": { "table": { "projectId": "dlp-demo-2", "datasetId": "dlp_testing", "tableId": "test_results" } } } } ] } }
Depois que o job de k-anonimato for concluído, a proteção de dados confidenciais enviará os resultados dele para uma tabela do BigQuery chamada dlp-demo-2.dlp_testing.test_results
.
Etapa 2: conectar os resultados ao Looker Studio
Em seguida, você vai conectar a tabela do BigQuery que produziu na Etapa 1 a um novo relatório no Looker Studio.
Abra o Looker Studio.
Clique em Criar > Relatório.
No painel Adicionar dados ao relatório em Conectar aos dados, clique em BigQuery. Talvez seja necessário autorizar o Looker Studio a acessar suas tabelas do BigQuery.
No seletor de coluna, selecione Meus projetos. Em seguida, escolha o projeto, o conjunto de dados e a tabela. Quando terminar, clique em Adicionar. Caso você veja um aviso de que está prestes a adicionar dados ao relatório, clique em Adicionar ao relatório.
Os resultados da verificação de k-anonimato foram adicionados ao novo relatório do Looker Studio. Na próxima etapa, você criará o gráfico.
Etapa 3: criar o gráfico
Faça o seguinte para inserir e configurar o gráfico:
- No Looker Studio, se uma tabela de valores for mostrada, selecione-a e pressione "Excluir" para removê-la.
- No menu Inserir, clique em Gráfico de combinação.
- Clique e desenhe um retângulo na tela onde você quer que o gráfico apareça.
Em seguida, configure os dados do gráfico na guia Dados para que ele mostre o efeito da variação do tamanho e das faixas de valores dos buckets:
- Limpe os campos abaixo dos cabeçalhos a seguir apontando para cada campo
e clicando no X
- Dimensão do período
- Dimensão
- Métrica
- Sort
, conforme mostrado aqui: - Com todos os campos apagados, arraste o campo upper_endpoint da coluna Campos disponíveis para o título Dimensão.
- Arraste o campo upper_endpoint para o cabeçalho Classificar e selecione Crescente.
- Arraste os campos bucket_size e bucket_value_count para o cabeçalho Métrica.
- Passe o mouse sobre o ícone à esquerda da métrica bucket_size para exibir um ícone de edição
- No campo Nome, digite
Unique row loss
. - Em Tipo, escolha Porcentagem.
- Em Cálculo de comparação, escolha Porcentagem do total.
- Em Cálculo em execução, escolha Soma em execução.
.
Clique no ícone
Editar e faça o seguinte:
- No campo Nome, digite
- Repita a etapa anterior para a métrica bucket_value_count, mas no
campo Nome, digite
Unique quasi-identifier combination loss
.
Quando terminar, a coluna terá a seguinte aparência:
Por fim, configure o gráfico para exibir um gráfico de linhas com as duas métricas:
- Clique na guia ESTILO no painel à direita da janela.
- Para as séries 1 e 2, escolha Linha.
- Para visualizar o gráfico final separadamente, clique no botão Visualizar no canto superior direito da janela.
Veja a seguir um gráfico de exemplo depois de concluir as etapas anteriores.
Como interpretar o gráfico
O gráfico gerado apresenta, no eixo y, a possível porcentagem de perda de dados para as duas linhas únicas e combinações únicas de semi-identificadores para atingir, no eixo x, um valor de k-anonimato.
Os valores de k-anonimato mais altos indicam menos risco de reidentificação. No entanto, para ter valores de k-anonimato maiores, será necessário remover porcentagens maiores do total de linhas e de combinações de semi-identificadores exclusivos, o que pode diminuir a utilidade dos dados.
Felizmente, eliminar os dados não é sua única opção para reduzir o risco de reidentificação. Outras técnicas de desidentificação podem fornecer um melhor equilíbrio entre perda e utilidade. Por exemplo, para lidar com o tipo de perda de dados associado a valores de k-anonimato mais altos nesse conjunto de dados, você pode tentar agrupar idades ou títulos de cargos para reduzir a exclusividade das combinações de idade/job de título. É possível, por exemplo, agrupar idades por classes em intervalos de 20 a 25, 25 a 30, 30 a 35 e assim por diante. Para mais informações sobre como realizar esse procedimento, consulte Generalização e agrupamento por classes e Como desidentificar dados confidenciais no conteúdo do texto.