Leitfaden für personenbezogene Daten, die in Log Analytics und Application Insights gespeichert sindGuidance for personal data stored in Log Analytics and Application Insights

Log Analytics ist ein Datenspeicher, der wahrscheinlich auch personenbezogene Daten enthält.Log Analytics is a data store where personal data is likely to be found. Application Insights speichert die Daten auf einer Log Analytics-Partition.Application Insights stores its data in a Log Analytics partition. In diesem Artikel erfahren Sie, wo sich solche Daten üblicherweise in Log Analytics und Application Insights befinden und welche Möglichkeiten Sie im Zusammenhang mit diesen Daten haben.This article will discuss where in Log Analytics and Application Insights such data is typically found, as well as the capabilities available to you to handle such data.

Hinweis

Im Rahmen dieses Artikels bezieht sich Protokolldaten auf Daten, die von einem Log Analytics-Arbeitsbereich gesendet werden, während Anwendungsdaten Daten bezeichnet, die von Application Insights gesammelt werden.For the purposes of this article log data refers to data sent to a Log Analytics workspace, while application data refers to data collected by Application Insights.

Hinweis

Informationen über Anzeigen oder Löschen von personenbezogenen Daten finden Sie unter Anträge betroffener Personen für Azure im Rahmen der DSGVO.For information about viewing or deleting personal data, see Azure Data Subject Requests for the GDPR. Allgemeine Informationen zur DSGVO finden Sie im Abschnitt über DSGVO für Service Trust Portal.For more information about GDPR, see the GDPR section of the Service Trust portal.

Strategie für den Umgang mit personenbezogenen DatenStrategy for personal data handling

Die Gestaltung der Strategie für den Umgang mit personenbezogenen Daten liegt letztendlich bei Ihnen und Ihrem Unternehmen. Im Anschluss finden Sie einige mögliche Herangehensweisen.While it will be up to you and your company to ultimately determine the strategy with which you will handle your private data (if at all), the following are some possible approaches. Diese sind absteigend nach technischer Präferenz sortiert:They are listed in order of preference from a technical point of view from most to least preferable:

  • Sorgen Sie nach Möglichkeit dafür, dass Daten, die als „personenbezogen“ betrachtet werden können, gar nicht erst gesammelt oder aber verschleiert, anonymisiert oder anderweitig verändert werden.Where possible, stop collection of, obfuscate, anonymize, or otherwise adjust the data being collected to exclude it from being considered "private". Dies ist mit Abstand die bevorzugte Vorgehensweise und erspart die Erstellung einer wirksamen und äußerst kostspieligen Datenverarbeitungsstrategie.This is by far the preferred approach, saving you the need to create a very costly and impactful data handling strategy.
  • Sollte diese Vorgehensweise nicht möglich sein, versuchen Sie, die Daten zu normalisieren, um die Auswirkungen auf die Datenplattform und auf die Leistung zu verringern.Where not possible, attempt to normalize the data to reduce the impact on the data platform and performance. Statt beispielsweise eine explizite Benutzer-ID zu protokollieren, erstellen Sie Nachschlagedaten, die den Benutzernamen und die dazugehörigen Details mit einer internen ID korrelieren, die dann an anderer Stelle protokolliert werden kann.For example, instead of logging an explicit User ID, create a lookup data that will correlate the username and their details to an internal ID that can then be logged elsewhere. Wenn Sie daraufhin von einem Benutzer gebeten werden, seine personenbezogenen Informationen zu löschen, muss ggf. nur die entsprechende Zeile in der Nachschlagetabelle gelöscht werden.That way, should one of your users ask you to delete their personal information, it is possible that only deleting the row in the lookup table corresponding to the user will be sufficient.
  • Falls personenbezogene Daten gesammelt werden müssen, erstellen Sie einen Prozess basierend auf dem Bereinigungs-API-Pfad und dem vorhandenen Abfrage-API-Pfad, um allen Vorschriften zu genügen, die möglicherweise im Zusammenhang mit dem Exportieren und Löschen personenbezogener Daten eines Benutzers gelten.Finally, if private data must be collected, build a process around the purge API path and the existing query API path to meet any obligations you may have around exporting and deleting any private data associated with a user.

Wo befinden sich personenbezogene Daten in Log Analytics?Where to look for private data in Log Analytics?

Log Analytics ist ein flexibler Datenspeicher, der zwar ein Schema für die Daten vorgibt, jedoch für jedes Feld das Überschreiben mit benutzerdefinierten Werten zulässt.Log Analytics is a flexible store, which while prescribing a schema to your data, allows you to override every field with custom values. Darüber hinaus können beliebige benutzerdefinierte Schemas erfasst werden.Additionally, any custom schema can be ingested. Daher ist es unmöglich zu sagen, wo genau personenbezogene Daten in Ihrem jeweiligen Arbeitsbereich vorhanden sind.As such, it is impossible to say exactly where Private data will be found in your specific workspace. Bei den folgenden Speicherorten handelt es sich jedoch um gute Ausgangspunkte für die Suche in Ihrem Datenbestand:The following locations, however, are good starting points in your inventory:

ProtokolldatenLog data

  • IP-Adressen: Log Analytics erfasst verschiedenste IP-Informationen für viele verschiedene Tabellen.IP addresses: Log Analytics collects a variety of IP information across many different tables. Die folgende Abfrage zeigt beispielsweise alle Tabellen, in denen in den letzten 24 Stunden IPv4-Adressen erfasst wurden:For example, the following query shows all tables where IPv4 addresses have been collected over the last 24 hours:
    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
    
  • Benutzer-IDs: Benutzer-IDs befinden sich in verschiedensten Lösungen und Tabellen.User IDs: User IDs are found in a large variety of solutions and tables. Mit dem Suchbefehl können Sie Ihr gesamtes Dataset nach einem bestimmten Benutzernamen durchsuchen:You can look for a particular username across your entire dataset using the search command:
    search "[username goes here]"
    
    Wichtig: Suchen Sie nicht nur nach lesbaren Benutzernamen, sondern auch nach GUIDs, die direkt zu einem bestimmten Benutzer zurückverfolgt werden können.Remember to look not only for human-readable user names but also GUIDs that can directly be traced back to a particular user!
  • Geräte-IDs: Geräte-IDs sind mit Benutzer-IDs vergleichbar und werden gelegentlich als „privat“ betrachtet.Device IDs: Like user IDs, device IDs are sometimes considered "private". Verwenden Sie die gleiche Vorgehensweise, die weiter oben für Benutzer-IDs angegeben ist, um Tabellen zu ermitteln, bei denen dies ggf. relevant ist.Use the same approach as listed above for user IDs to identify tables where this might be a concern.
  • Benutzerdefinierte Daten: In Log Analytics stehen verschiedene Erfassungsmethoden zur Verfügung: benutzerdefinierte Protokolle und benutzerdefinierte Felder, die HTTP-Datensammler-API und benutzerdefinierte Daten, die im Rahmen von Systemereignisprotokollen erfasst werden.Custom data: Log Analytics allows the collection in a variety of methods: custom logs and custom fields, the HTTP Data Collector API , and custom data collected as part of system event logs. Alle diese Optionen können personenbezogene Daten enthalten und müssen auf entsprechende Daten untersucht werden.All of these are susceptible to containing private data, and should be examined to verify whether any such data exists.
  • Durch die Lösung erfasste Daten: Da es sich bei dem Lösungsmechanismus um einen Mechanismus mit offenem Ende handelt, empfiehlt es sich, alle von Lösungen generierten Tabellen zu überprüfen, um die Compliance zu gewährleisten.Solution-captured data: Because the solution mechanism is an open-ended one, we recommend reviewing all tables generated by solutions to ensure compliance.

AnwendungsdatenApplication data

  • IP-Adressen: Obwohl Application Insights standardmäßig alle IP-Adressfelder mit „0.0.0.0“ verschleiert, ist es durchaus üblich, diesen Wert mit der tatsächlichen Benutzer-IP zu überschreiben, um Sitzungsinformationen zu speichern.IP addresses: While Application Insights will by default obfuscate all IP address fields to "0.0.0.0", it is a fairly common pattern to override this value with the actual user IP to maintain session information. Mithilfe der folgenden Analytics-Abfrage kann nach allen Tabellen gesucht werden, die in den letzten 24 Stunden in der Spalte für die IP-Adresse andere Werte als „0.0.0.0“ enthalten haben:The Analytics query below can be used to find any table that contains values in the IP address column other than "0.0.0.0" over the last 24 hours:
    search client_IP != "0.0.0.0"
    | where timestamp > ago(1d)
    | summarize numNonObfuscatedIPs_24h = count() by $table
    
  • Benutzer-IDs: Standardmäßig verwendet Application Insights zufällig generierte IDs für Benutzer und die Sitzungsnachverfolgung.User IDs: By default, Application Insights will use randomly generated IDs for user and session tracking. Allerdings werden diese Felder häufig überschrieben, um eine ID zu speichern, die für die Anwendung größere Relevanz hat,However, it is common to see these fields overridden to store an ID more relevant to the application. z.B. Benutzernamen, AAD-GUIDs usw. Diese IDs werden häufig als personenbezogene Daten angesehen und sollten deshalb entsprechend gehandhabt werden.For example: usernames, AAD GUIDs, etc. These IDs are often considered to be in-scope as personal data, and therefore, should be handled appropriately. Wir empfehlen, diese IDs immer zu verschleiern oder zu anonymisieren.Our recommendation is always to attempt to obfuscate or anonymize these IDs. Felder, in denen diese Werte häufig vorkommen, sind beispielsweise „session_Id“, „user_Id“, „user_AuthenticatedId“, „user_AccountId“ sowie „customDimensions“.Fields where these values are commonly found include session_Id, user_Id, user_AuthenticatedId, user_AccountId, as well as customDimensions.
  • Benutzerdefinierte Daten: Application Insights ermöglicht es Ihnen, eine Gruppe benutzerdefinierter Dimensionen an einen beliebigen Datentyp anzufügen.Custom data: Application Insights allows you to append a set of custom dimensions to any data type. Bei diesen Dimensionen kann es sich um beliebige Daten handeln.These dimensions can be any data. Ermitteln Sie mithilfe der folgenden Abfrage alle benutzerdefinierten Dimensionen, die in den letzten 24 Stunden gesammelt wurden:Use the following query to identify any custom dimensions collected over the last 24 hours:
    search * 
    | where isnotempty(customDimensions)
    | where timestamp > ago(1d)
    | project $table, timestamp, name, customDimensions 
    
  • Daten im Speicher und während der Übertragung: Application Insights erfasst Ausnahmen, Anforderungen, Abhängigkeitsaufrufe und Ablaufverfolgungen.In-memory and in-transit data: Application Insights will track exceptions, requests, dependency calls, and traces. Personenbezogene Daten können häufig auf Code- und HTTP-Aufrufebene gesammelt werden.Private data can often be collected at the code and HTTP call level. Überprüfen Sie die Tabellen für Ausnahmen, Anforderungen, Abhängigkeiten und Ablaufverfolgungen, um solche Daten zu ermitteln.Review the exceptions, requests, dependencies, and traces tables to identify any such data. Verwenden Sie nach Möglichkeit Telemetrieinitialisierer, um diese Daten zu verschleiern.Use telemetry initializers where possible to obfuscate this data.
  • Aufzeichnungen des Momentaufnahmedebuggers: Mithilfe des Features Momentaufnahmedebugger in Application Insights können Sie Debugmomentaufnahmen erfassen, sobald eine Ausnahme in der Produktionsinstanz Ihrer Anwendung abgefangen wird.Snapshot Debugger captures: The Snapshot Debugger feature in Application Insights allows you to collect debug snapshots whenever an exception is caught on the production instance of your application. Momentaufnahmen zeigen die gesamte Stapelüberwachung, die zu den Ausnahmen führt, sowie die Werte für lokale Variablen in jedem Schritt im Stapel.Snapshots will expose the full stack trace leading to the exceptions as well as the values for local variables at every step in the stack. Leider ermöglicht dieses Feature weder das selektive Löschen von Fangpunkten noch den programmgesteuerten Zugriff auf Daten innerhalb der Momentaufnahme.Unfortunately, this feature does not allow for selective deletion of snap points, or programmatic access to data within the snapshot. Falls die Standardaufbewahrungsrate für Momentaufnahmen Ihren Compliancevorgaben nicht entspricht, wird empfohlen, das Feature zu deaktivieren.Therefore, if the default snapshot retention rate does not satisfy your compliance requirements, the recommendation is to turn off the feature.

Exportieren und Löschen personenbezogener DatenHow to export and delete private data

Wie bereits weiter oben im Abschnitt Strategie für den Umgang mit personenbezogenen Daten erwähnt, wird dringend empfohlen, die Datensammlungsrichtlinien nach Möglichkeit so zu strukturieren, dass personenbezogene Daten gar nicht erst gesammelt oder aber verschleiert, anonymisiert oder anderweitig verändert werden, sodass sie nicht mehr als „personenbezogen“ anzusehen sind.As mentioned in the strategy for personal data handling section earlier, it is strongly recommended to if it all possible, to restructure your data collection policy to disable the collection of private data, obfuscating or anonymizing it, or otherwise modifying it to remove it from being considered "private". Der Umgang mit den Daten ist in erster Linie mit Kosten für Sie und Ihr Team verbunden: Sie müssen eine Strategie ausarbeiten und automatisieren sowie eine Schnittstelle entwickeln, über die Ihre Kunden mit ihren Daten interagieren können. Außerdem fallen laufende Wartungskosten an.Handling the data will foremost result in costs to you and your team to define and automate a strategy, build an interface for your customers to interact with their data through, and ongoing maintenance costs. Darüber hinaus bedeutet dies einen hohen Rechenaufwand für Log Analytics und Application Insights, und eine hohe Anzahl gleichzeitiger Abfrage- oder Bereinigungs-API-Aufrufe kann sich negativ auf alle anderen Interaktionen mit Log Analytics-Funktionen auswirken.Further, it is computationally costly for Log Analytics and Application Insights, and a large volume of concurrent query or purge API calls have the potential to negatively impact all other interaction with Log Analytics functionality. Allerdings gibt es tatsächlich einige Szenarien, in denen personenbezogene Daten erfasst werden müssen.That said, there are indeed some valid scenarios where private data must be collected. In diesen Fällen sollten Sie die Daten wie in diesem Abschnitt beschrieben handhaben.For these cases, data should be handled as described in this section.

Hinweis

Dieser Artikel enthält Schritte zum Löschen von persönlichen Daten vom Gerät oder aus dem Dienst und kann zur Unterstützung Ihrer Verpflichtungen im Rahmen der Datenschutz-Grundverordnung (DSGVO) verwendet werden.This article provides steps for how to delete personal data from the device or service and can be used to support your obligations under the GDPR. Allgemeine Informationen zur DSGVO finden Sie unter GDPR section of the Service Trust portal (DSGVO-Bereich des Service Trust Portals).If you’re looking for general info about GDPR, see the GDPR section of the Service Trust portal.

Anzeigen und ExportierenView and export

Sowohl für das Anzeigen als auch für das Exportieren von Datenanforderungen sollte die Log Analytics-Abfrage-API oder die Application Insights-Abfrage-API verwendet werden.For both view and export data requests, the Log Analytics query API or the Application Insights query API should be used. Die Logik, mit der die Daten in eine geeignete Form konvertiert werden, um sie für Ihre Benutzer bereitzustellen, muss von Ihnen selbst implementiert werden.Logic to convert the shape of the data to an appropriate one to deliver to your users will be up to you to implement. Azure Functions eignet sich hervorragend zum Hosten einer solchen Logik.Azure Functions makes a great place to host such logic.

Wichtig

Obwohl die Mehrzahl der Bereinigungsvorgänge wesentlich schneller als die SLA ausgeführt werden kann, ist – aufgrund der starken Auswirkung auf die verwendete Datenplattform – die formelle SLA für die Ausführung von Bereinigungsvorgängen auf 30 Tage festgelegt.While the vast majority of purge operations may complete much quicker than the SLA, the formal SLA for the completion of purge operations is set at 30 days due to their heavy impact on the data platform used. Dies ist ein automatisierter Prozess; es gibt keine Möglichkeit anzufordern, dass ein Vorgang schneller verarbeitet werden soll.This is an automated process; there is no way to request that an operation be handled faster.

LöschenDelete

Warnung

Löschvorgänge in Log Analytics sind destruktiv und unumkehrbar.Deletes in Log Analytics are destructive and non-reversible! Seien Sie bei der Ausführung äußerst vorsichtig.Please use extreme caution in their execution.

Im Rahmen der Vorgehensweisen für den Datenschutz haben wir einen API-Pfad für die Bereinigung verfügbar gemacht.We have made available as part of a privacy handling a purge API path. Dieser Pfad sollte aufgrund der Risiken im Zusammenhang mit seiner Verwendung, möglichen Leistungseinbußen sowie einer möglichen Verzerrung von Aggregationen, Messungen und anderen Aspekten Ihrer Log Analytics-Daten möglichst selten verwendet werden.This path should be used sparingly due to the risk associated with doing so, the potential performance impact, and the potential to skew all-up aggregations, measurements, and other aspects of your Log Analytics data. Alternative Methoden für den Umgang mit personenbezogenen Daten finden Sie im Abschnitt Strategie für den Umgang mit personenbezogenen Daten.See the Strategy for personal data handling section for alternative approaches to handle private data.

Das Bereinigen ist ein Vorgang, der hohe Berechtigungen erfordert, und weder eine App noch ein Benutzer in Azure (einschließlich des Ressourcenbesitzers) ist zur Ausführung berechtigt, sofern nicht in Azure Resource Manager explizit eine entsprechende Rolle zugewiesen wurde.Purge is a highly privileged operation that no app or user in Azure (including even the resource owner) will have permissions to execute without explicitly being granted a role in Azure Resource Manager. Dies ist die Rolle Datenpurger, die aufgrund des möglichen Datenverlusts sehr zurückhaltend vergeben werden sollte.This role is Data Purger and should be cautiously delegated due to the potential for data loss.

Wichtig

Zur Verwaltung von Systemressourcen werden Bereinigungsanforderungen auf 50 Anforderungen pro Stunde gedrosselt.In order to manage system resources, purge requests are throttled at 50 requests per hour. Sie sollten die Ausführung von Bereinigungsanforderungen in Batches einbinden, indem Sie einen einzelnen Befehl senden, dessen Prädikat alle Benutzeridentitäten enthält, die bereinigt werden müssen.You should batch the execution of purge requests by sending a single command whose predicate includes all user identities that require purging. Verwenden Sie den in-Operator, um mehrere Identitäten anzugeben.Use the in operator to specify multiple identities. Sie sollten die Abfrage ausführen, bevor Sie die Bereinigungsanforderung ausführen, um zu überprüfen, ob die Ergebnisse erwartet werden.You should run the query before executing the purge request to verify that the results are expected.

Nachdem die Azure Resource Manager-Rolle zugewiesen wurde, sind zwei neue API-Pfade verfügbar:Once the Azure Resource Manager role has been assigned, two new API paths are available:

ProtokolldatenLog data

  • POST purge: Verwendet ein Objekt, das Parameter der zu löschenden Daten angibt, und gibt eine Verweis-GUID zurück.POST purge - takes an object specifying parameters of data to delete and returns a reference GUID

  • GET purge status: Der Aufruf von „POST purge“ gibt einen Header vom Typ „x-ms-status-location“ zurück, der eine URL enthält, die Sie zum Ermitteln des Status Ihrer Bereinigungs-API aufrufen können.GET purge status - the POST purge call will return an 'x-ms-status-location' header that will include a URL that you can call to determine the status of your purge API. Beispiel:For example:

    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
    

Wichtig

Die Mehrzahl der Bereinigungsvorgänge wird wahrscheinlich deutlich schneller ausgeführt als in unserer SLA angegeben. Aufgrund der starken Auswirkungen auf die von Log Analytics verwendete Datenplattform wurde die formelle SLA für die Ausführung von Bereinigungsvorgängen aber auf 30 Tage festgelegt.While we expect the vast majority of purge operations to complete much quicker than our SLA, due to their heavy impact on the data platform used by Log Analytics, the formal SLA for the completion of purge operations is set at 30 days.

AnwendungsdatenApplication data

  • POST purge: Verwendet ein Objekt, das Parameter der zu löschenden Daten angibt, und gibt eine Verweis-GUID zurück.POST purge - takes an object specifying parameters of data to delete and returns a reference GUID

  • GET purge status: Der Aufruf von „POST purge“ gibt einen Header vom Typ „x-ms-status-location“ zurück, der eine URL enthält, die Sie zum Ermitteln des Status Ihrer Bereinigungs-API aufrufen können.GET purge status - the POST purge call will return an 'x-ms-status-location' header that will include a URL that you can call to determine the status of your purge API. Beispiel:For example:

    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
    

Wichtig

Obwohl die Mehrzahl der Bereinigungsvorgänge wesentlich schneller als die SLA ausgeführt werden kann, ist aufgrund der starken Auswirkung auf die von Application Insights verwendete Datenplattform die formelle SLA für die Ausführung von Bereinigungsvorgängen auf 30 Tage festgelegt.While the vast majority of purge operations may complete much quicker than the SLA, due to their heavy impact on the data platform used by Application Insights, the formal SLA for the completion of purge operations is set at 30 days.

Nächste SchritteNext steps