Administración de datos personales en registros de Azure Monitor y Application Insights

Log Analytics es un almacén de datos donde es probable que haya datos personales. Application Insights almacena sus datos en una partición de Log Analytics. En este artículo, se explica dónde almacenan Log Analytics y Application Insights los datos personales y cómo administrar estos datos.

En este artículo, datos de registro hace referencia a los datos enviados a un área de trabajo de Log Analytics, mientras que datos de aplicación hace referencia a los datos recopilados por Application Insights. Si usa un recurso de Application Insights basado en el área de trabajo, se aplica la información sobre los datos de registro. Si usa un recurso clásico de Application Insights, se aplica la información sobre los datos de aplicación.

Nota:

Para más información sobre cómo ver o eliminar datos personales, consulte Solicitudes de interesados de datos de Azure para el RGPD. Para más información sobre RGPD, consulte Información sobre los procedimientos recomendados para el cumplimiento del RGPD y la sección RGPD del portal de confianza de servicios.

Estrategia de tratamiento de datos personales

Aunque su empresa y usted deben definir una estrategia para controlar los datos personales, estos son algunos enfoques, que se enumeran del más al menos preferible desde un punto de vista técnico:

  • Dejar de recopilar datos personales, ofuscar, anonimizar o ajustar los datos recopilados para excluirlos de ser considerados "personales". Este método es el preferido con diferencia, ya que evita la necesidad de crear una estrategia de tratamiento de datos costosa y con impacto.
  • Normalice los datos para reducir los efectos negativos en la plataforma de datos y el rendimiento. Por ejemplo, en lugar de registrar un identificador de usuario explícito, cree una búsqueda para correlacionar el nombre de usuario y sus detalles con un identificador interno que luego puede registrarse en otra parte. De este modo, si un usuario le pide que elimine su información personal, puede eliminar solo la fila de la tabla de búsqueda correspondiente al usuario.
  • Si tiene que recopilar datos personales, cree un proceso mediante la ruta de acceso de la API de purga y la API de consulta existente para cumplir las obligaciones de exportar y eliminar los datos personales asociados a un usuario.

¿Dónde se pueden buscar los datos personales en Log Analytics?

Log Analytics recomienda un esquema para los datos, pero permite reemplazar todos los campos por valores personalizados. También puede ingerir esquemas personalizados. Por lo tanto, no podemos saber exactamente dónde se encuentran los datos personales en su área de trabajo específica. Sin embargo, las siguientes ubicaciones son buenos puntos de partida en el inventario.

Nota:

Algunas de las consultas siguientes se usan search * para consultar todas las tablas de un área de trabajo. Se recomienda evitar el uso de search *, que crea una consulta altamente ineficaz, siempre que sea posible. En su lugar, consulte una tabla específica.

Datos de registro

  • Direcciones IP: Log Analytics recopila diversa información de direcciones IP en varias tablas. Por ejemplo, la siguiente consulta muestra todas las tablas en las que se han recopilado direcciones IPv4 en las últimas 24 horas:

    search * 
    | where * matches regex @'\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b' //RegEx originally provided on https://stackoverflow.com/questions/5284147/validating-ipv4-addresses-with-regexp
    | summarize count() by $table
    
  • Identificadores de usuario: encontrará nombres de usuario e identificadores de usuario en varias soluciones y tablas. Puede buscar un nombre de usuario o un identificador de usuario determinado en todo el conjunto de datos con el comando de búsqueda:

    search "<username or user ID>"
    

    Recuerde que debe buscar no solo los nombres de usuario legibles para el usuario, sino también los GUID que se pueden rastrear directamente hasta un usuario determinado.

  • Identificadores de dispositivo: al igual que los identificadores de usuario, los identificadores de dispositivo a veces se consideran datos personales. Use el enfoque indicado anteriormente para los identificadores de usuario para identificar las tablas que contienen datos personales.

  • Datos personalizados: Log Analytics permite recopilar datos personalizados mediante registros personalizados, campos personalizados, la API del recopilador de datos HTTP y como parte de los registros de eventos del sistema. Compruebe todos los datos personalizados en busca de datos personales.

  • Datos capturados por la solución: dado que el mecanismo de la solución es abierto, se recomienda revisar todas las tablas generadas por las soluciones para garantizar el cumplimiento.

Datos de aplicación

  • Direcciones IP: aunque Application Insights ofusca todos los campos de direcciones IP a 0.0.0.0 de manera predeterminada, es bastante común reemplazar este valor por la dirección IP del usuario real para mantener la información de la sesión. Utilice la siguiente consulta para buscar cualquier tabla que contenga valores en la columna de dirección IP que no sean 0.0.0.0 en las últimas 24 horas:

    search client_IP != "0.0.0.0"
    | where timestamp > ago(1d)
    | summarize numNonObfuscatedIPs_24h = count() by $table
    
  • Identificadores de usuario: de forma predeterminada, Application Insights usa identificadores generados aleatoriamente para el seguimiento de usuarios y sesiones en campos como session_Id, user_Id, user_AuthenticatedId, user_AccountId y customDimensions. Sin embargo, es habitual reemplazar estos campos por un identificador más pertinente para la aplicación, como los nombres de usuario o los GUID de Microsoft Entra. A menudo, estos identificadores se consideran datos personales. Se recomienda ofuscar o anonimizar estos identificadores.

  • Datos personalizados: Application Insights permite anexar un conjunto de dimensiones personalizadas a cualquier tipo de datos. Utilice la siguiente consulta para identificar las dimensiones personalizadas recopiladas durante las últimas 24 horas:

    search * 
    | where isnotempty(customDimensions)
    | where timestamp > ago(1d)
    | project $table, timestamp, name, customDimensions 
    
  • Datos en tránsito y en memoria: Application Insights hace un seguimiento de las excepciones, las solicitudes, las llamadas de dependencias y los seguimientos. A menudo, encontrará datos personales en el nivel de código y de llamada HTTP. Revise las tablas de excepciones, solicitudes, dependencias y seguimientos para identificar este tipo de datos. Use inicializadores de telemetría siempre que sea posible para ofuscar estos datos.

  • Capturas de Snapshot Debugger: la característica Snapshot Debugger de Application Insights permite recopilar las instantáneas de depuración cuando Application Insights detecta una excepción en la instancia de producción de la aplicación. Las instantáneas exponen el seguimiento de la pila completo que provoca las excepciones y los valores de las variables locales en cada paso de la pila. Desafortunadamente, esta característica no permite eliminar de forma selectiva los puntos de ajuste ni acceder mediante programación a los datos dentro de la instantánea. Por lo tanto, si la velocidad de retención de instantáneas predeterminada no satisface sus requisitos de cumplimiento, recomendamos desactivar la característica.

Exportación y eliminación de datos personales

Se recomienda reestructurar la directiva de recopilación de datos para dejar de recopilar datos personales, ofuscar o anonimizar los datos personales, o modificar dichos datos hasta que ya no se consideren personales. En el tratamiento de datos personales, incurrirá en costos por la definición y automatización de una estrategia, la creación de una interfaz mediante la cual los clientes interactúen con sus datos y el mantenimiento continuo. Además, esto requiere que Log Analytics y Application Insights funcionen de forma intensiva, y un gran volumen de llamadas simultáneas a la API de purga o de consulta puede afectar negativamente a todas las demás interacciones con la funcionalidad de Log Analytics. Sin embargo, si tiene que recopilar datos personales, siga las instrucciones de esta sección.

Importante

Aunque la mayoría de las operaciones de purga se completan mucho más rápido, el SLA formal para la realización de operaciones de purga es de 30 días debido a su gran impacto en la plataforma de datos. Este SLA cumple los requisitos del RGPD. Es un proceso automatizado, por lo que no hay manera de acelerar la operación.

Visualización y exportación

Utilice la API de consulta de Log Analytics o la API de consulta de Application Insights para ver y exportar las solicitudes de datos.

Debe implementar la lógica para convertir los datos en un formato adecuado para la entrega a los usuarios. Azure Functions es un buen lugar para hospedar esta lógica.

Eliminar

Advertencia

Las eliminaciones en Log Analytics son destructivas y no reversibles. Por tanto, extreme las precauciones cuando las ejecute.

La API de purga de Azure Monitor le permite eliminar datos personales. Use la operación de purga con moderación para evitar los posibles riesgos, el impacto en el rendimiento y la posibilidad de asimetría de agregaciones, medidas y otros aspectos de los datos de Log Analytics. Consulte la sección Estrategia de tratamiento de datos personales para conocer enfoques alternativos para administrar los datos personales.

La purga es una operación con privilegios elevados. Conceda el rol Purgador de datos en Azure Resource Manager con precaución debido a la posibilidad de pérdida de datos.

Para administrar los recursos del sistema, limitamos las solicitudes de purga a 50 solicitudes por hora. Procese por lotes la ejecución de las solicitudes de purga mediante el envío de un único comando cuyo predicado incluya todas las identidades de usuario que requieran purga. Use el operador in para especificar varias identidades. Ejecute la consulta antes de ejecutar la solicitud de purga para comprobar los resultados esperados.

Importante

El uso de la API de purga de Log Analytics o Application Insights no afecta a los costes de retención. Para reducir los costes de retención, debe reducir el período de retención de datos.

Datos de registro

  • La API POST de purga del área de trabajo toma un objeto que especifica los parámetros de los datos que se van a eliminar y devuelve un GUID de referencia.

  • La API POST de obtención del estado de la purga devuelve un encabezado "x-ms-status-location" que incluye una dirección URL a la que puede llamar para determinar el estado de la operación de purga. Por ejemplo:

    x-ms-status-location: https://management.azure.com/subscriptions/[SubscriptionId]/resourceGroups/[ResourceGroupName]/providers/Microsoft.OperationalInsights/workspaces/[WorkspaceName]/operations/purge-[PurgeOperationId]?api-version=2015-03-20
    

Datos de aplicación

  • La API POST de purga de componentes toma un objeto que especifica los parámetros de los datos que se van a eliminar y devuelve un GUID de referencia.

  • La API GET de obtención del estado de la purga de los componentes devuelve un encabezado "x-ms-status-location" que incluye una dirección URL a la que puede llamar para determinar el estado de la operación de purga. Por ejemplo:

    x-ms-status-location: https://management.azure.com/subscriptions/[SubscriptionId]/resourceGroups/[ResourceGroupName]/providers/microsoft.insights/components/[ComponentName]/operations/purge-[PurgeOperationId]?api-version=2015-05-01
    

Pasos siguientes