Visualizar el riesgo de reidentificación con k-anonimato

En este tema, se indica cómo usar Cloud Data Loss Prevention (DLP) para determinar el k-anonimato de un conjunto de datos y, además, visualizarlo en Google Data Studio. Esto permite comprender mejor el riesgo y evaluar las concesiones de utilidad que puedes estar haciendo si ocultas o desidentificas datos. La API también incluye métricas adicionales, como la l-diversidad, sin embargo, el tema se enfoca en el k-anonimato.

Introducción

Las técnicas de desidentificación pueden resultar muy útiles para resguardar la privacidad de los sujetos mientras se usan o procesan los datos. ¿Pero cómo saber si un conjunto de datos se desidentificó lo suficiente? ¿Y cómo determinar si la desidentificación generó una pérdida de datos muy grande para el caso práctico? Es decir, ¿cómo se puede comparar el riesgo de desidentificación con la utilidad de los datos para tomar decisiones basadas en estos?

Para resolver estas dudas, resulta útil calcular el valor del k-anonimato de un conjunto de datos, ya que se evalúa la capacidad de reidentificación de sus registros. Cloud DLP incluye una funcionalidad que permite calcular el valor del k-anonimato de un conjunto de datos de acuerdo con los cuasi identificadores que se especifiquen. Así se puede evaluar rápidamente si la desidentificación de cierta columna, o combinación de columnas, generará un conjunto de datos más o menos apto para la reidentificación.

Conjunto de datos de ejemplo

A continuación, se presentan las primeras filas de un gran conjunto de datos de ejemplo:

user_id zip_code age score
121317473 94043 25 52
121317474 92104 43 87
... ... ... ...

Ya que el enfoque de este instructivo son los cuasi identificadores, no se abordará la columna user_id. En una situación real, lo ideal sería que se oculte o se le asignen tokens de manera apropiada. La columna score pertenece a este conjunto de datos y es poco probable que un atacante pueda acceder a ella por otros medios, por lo que no se debe incluir en el análisis. El enfoque debe centrarse en las columnas zip_code y age, con las que un atacante podría obtener información de un individuo a través de otras fuentes de datos. Estas son las preguntas que se deben responder para este conjunto de datos:

  • ¿Qué efecto tendrán ambos cuasi identificadores, zip_code y age, sobre el riesgo de reidentificación general de los datos desidentificados?
  • ¿Cómo se verá afectado el riesgo si se aplica una transformación de desidentificación?

Debes asegurarte de que la combinación de zip_code y age no se asignará a una cantidad pequeña de usuarios. Por ejemplo, supongamos que el conjunto de datos solo incluye a un usuario de 25 años y que vive en la ubicación correspondiente al código postal 94043. Un atacante podría correlacionar esa información con los datos demográficos de un área o con otra información que esté disponible, descifrar quién es la persona y descubrir el valor de su puntuación. Consulta la sección “ID de entidades y k-anonimato del procesamiento” en el tema conceptual Análisis de riesgos para obtener más información.

Paso 1: Calcular el k-anonimato del conjunto de datos

En primer lugar, calcula el k-anonimato del conjunto de datos con Cloud DLP. Envía el siguiente JSON al recurso. Dentro de este archivo, debes configurar el ID de entidad DlpJob para la columna user_id, además de identificar ambos cuasi identificadores como las columnas zip_code y age. Esto también indica a Cloud DLP que debe guardar los resultados en una tabla de BigQuery.

Entrada de JSON:

POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/dlpJobs?key={YOUR_API_KEY}

{
  "riskJob":{
    "privacyMetric":{
      "kAnonymityConfig":{
        "entityId":{
          "field":{
            "name":"user_id"
          }
        },
        "quasiIds":[
          {
            "name":"zip_code"
          },
          {
            "name":"age"
          }
        ]
      }
    },
    "actions":[
      {
        "saveFindings":{
          "outputConfig":{
            "table":{
              "projectId":"dlp-demo-2",
              "datasetId":"risk",
              "tableId":"risk1"
            }
          }
        }
      }
    ],
    "sourceTable":{
      "projectId":"dlp-demo-2",
      "datasetId":"deid",
      "tableId":"source1"
    }
  }
}

Cuando el trabajo de k-anonimato finaliza, Cloud DLP envía los resultados a una tabla de BigQuery denominada dlp-demo-2.risk.risk1.

Paso 2: Conectar los resultados con Google Data Studio

Ahora, debes conectar la tabla de BigQuery que se generó en el Paso 1 con un informe nuevo de Google Data Studio.

  1. Abre Google Data Studio y haz clic en la opción Blank (En blanco) de Start a new report (Iniciar un nuevo informe).
  2. En el panel Add a data source /Agregar una fuente de datos) de la derecha, haz clic en la opción CREATE NEW DATA SOURCE (CREAR NUEVA FUENTE DE DATOS) que aparece en la parte inferior.
  3. En la sección Google Connectors (Conectores de Google), especifica BigQuery y haz clic en SELECT (SELECCIONAR).
  4. En la página de la fuente de datos de BigQuery, elige el proyecto, el conjunto de datos y la tabla desde el selector de columnas. En este ejemplo, debes elegir dlp-demo-2 para el proyecto, risk para el conjunto de datos y risk1 para la tabla.
  5. Haz clic en el botón CONNECT (CONECTAR), que cambia de color a azul cuando se eligen las tres columnas. Cuando estés conectado, verás una lista de campos con un código de colores, como se muestra a continuación: Lista de campos en Data Studio
  6. En la columna Field (Campo), elige el campo upper_endpoint. En la sección Aggregation (Agregación) de la fila, elige Sum (Sumar) en el menú desplegable.
  7. Haz clic en ADD TO REPORT.

Los resultados del análisis de k-anonimato se agregarán al informe nuevo de Data Studio. En el siguiente paso, crearemos el gráfico.

Paso 3: Crear el gráfico

Por último, debes crear el gráfico en función de los campos importados. Sigue estos pasos para insertarlo:

  1. En el menú Insert (Insertar) de Data Studio, haz clic en Combo chart (Gráfico combinado).
  2. En la página del editor, haz clic y dibuja un rectángulo donde quieres que se agregue el gráfico.

Luego, configura los datos del gráfico para que este muestre el efecto de la variación de los tamaños y los rangos de valores de los depósitos:

  1. En la pestaña DATA (DATOS) de la derecha, haz clic en la X dentro del círculo junto a timestamp (marca de tiempo) para quitar la sección Data Range Dimension (Dimensión del rango de datos), como se muestra a continuación:
    Detalle del campo timestamp con el botón Borrar habilitado
  2. Arrastra el campo upper_endpoint hacia los campos Dimension (Dimensión) y Sort (Ordenar) de la columna de la derecha y, luego, selecciona Ascending (Ascendiente) en el menú desplegable del campo Sort.
  3. Arrastra los campos bucket_size y bucket_value_count hacia el campo Metric (Métrica) y, luego, quita las selecciones adicionales de la sección Metric de la columna de la derecha. Cuando finalices, la columna debe aparecer como se muestra a continuación:
    Captura de pantalla de la lista de campos
  4. Selecciona el ícono de la izquierda de la métrica bucket_size y aparecerá el ícono para editar (con forma de lápiz). Haz clic en él y selecciona estas dos opciones en los menús desplegables correspondientes:

    • Display as > Percent of total (Mostrar como > Porcentaje del total)
    • Apply running calculation > Running sum (Aplicar cálculo continuo > Suma continua)
  5. Repite los pasos anteriores con la métrica bucket_value_count.

Por último, configura el gráfico a fin de que muestre un gráfico de líneas para cada métrica:

  1. Haz clic en la pestaña STYLE (ESTILO) del panel de la derecha de la ventana.
  2. Selecciona Line (Línea) para ambas series (#1 y #2, que representan las opciones bucket_size y bucket_value_count).
  3. Haz clic en el botón VIEW (VER) de la esquina superior derecha de la ventana para ver el gráfico final por sí solo.

Gráfico final con el valor de k-anonimato de 10 destacado

Interpretación del gráfico

En el gráfico que se generó, los valores del k-anonimato aparecen en el eje x y el porcentaje de pérdida de datos aparece en el eje y. Por ejemplo, en la captura de pantalla anterior, el dato destacado corresponde a un valor de k-anonimato de 10. Esto se puede interpretar de la siguiente manera: Si se descartan todas las filas con un valor de k-anonimato de 10 como máximo, se perderá el 82% de las filas del conjunto de datos. Además, esto generaría una pérdida de un 92% de las combinaciones únicas de edad y código postal. En el gráfico anterior, se establece la dificultad para alcanzar un valor de k-anonimato superior a 2 o 3 en este conjunto de datos sin tener que descartar una cantidad importante de valores y filas.

Afortunadamente, descartar datos no es la única opción. Con otras técnicas de desidentificación, se puede establecer un mejor equilibrio entre la pérdida y la utilidad. Por ejemplo, a fin de abarcar el tipo de pérdida de datos asociado con valores de k-anonimato más altos y este conjunto de datos, podrías agrupar las edades o los códigos postales para disminuir la unicidad de las combinaciones de edad y código postal. Es decir, puedes agrupar las edades en rangos de 20-25, 25-30, 30-35 y así sucesivamente. Consulta las secciones sobre Generalización y agrupamiento y Desidentificación de datos sensibles en contenidos de texto para obtener más información sobre cómo realizar este proceso.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Cloud Data Loss Prevention