Beiträge

Data Lake und Datenschutz: Alles schwimmt in eigenen Bahnen

Sandboxing und logische Trennung von Bereichen

Ein Begriff, der in Diskussionen zur Architektur von Hadoop-basierten Data Lakes immer wieder fällt, ist „Sandboxing“. Damit ist gemeint, dass es für bestimmte Zwecke nützlich, für manche sogar notwendig ist, vom „eigentlichen“ Data Lake getrennte Bereiche zu haben. Diese können auch außerhalb der Data Lake Infrastruktur liegen. Ein Beispiel hierfür sind analytische Sandboxes, die maßgeschneiderte Umgebungen und Daten nur für Data Scientists bereitstellen. In solchen Umgebungen können verschiedene Methoden und Verfahren entwickelt und erprobt werden, ohne die große „Allgemeinheit“ der Data Lake User zu stören. Da solche Sandboxes typischerweise kleine Varianten derselben Hadoop Distribution sind, ist es in der Regel sehr einfach, später die Ergebnisse in den großen Data Lake zu übertragen. „Klein“ bedeutet hierbei, dass die Anzahl der Worker Nodes und damit auch des Speicherplatzes gegenüber dem eigentlichen Data Lake kleiner ausfallen. Es kann sogar Sinn machen, einen Single Node Cluster aufzusetzen, beispielsweise um bestimmte Funktionalitäten initial auszuprobieren.

Was natürlich auch in Hinblick auf Kosten und gemeinsame Verwendung von Ressourcen oftmals angestrebt wird, ist die Realisierung von „Sandboxes“ in der eigentlichen Data Lake Infrastruktur als alternative Variante. Neben der Notwendigkeit, für alle Benutzerkreise ein passendes Ressourcenmanagement zu entwickeln – hier ist YARN eine wichtige Komponente zur Steuerung – muss man auch Daten und Zugriffsbereiche separieren. Oder anders gesagt: Hier ist nicht nur aus Gründen des Datenschutzes ein passendes Sicherheits- und Zugriffskonzept zu entwickeln – in der Regel gibt es User, die nur auf bestimmte Daten in bestimmten „Sandboxes“ zugreifen dürfen! Jeder Benutzerkreis schwimmt also in seinen eigenen Bahnen.

 

 

 

 

Das läuft darauf hinaus, dass man abgegrenzte Bereiche einrichtet, auf die der eigentliche Data Lake keinen Zugriff hat, sondern nur ein bestimmter Kreis von Usern und / oder Mandanten. Ein typisches Beispiel sind spezielle Klardatenbereiche, die nur dann zulässig sind, wenn man nachweisen kann, dass nur berechtigte Personen mit diesen Daten etwas „machen dürfen“. Das Managen und Nutzen dieser Daten obliegt dann auch ausschließlich diesem Personenkreis. Genauso aber können das auch anonymisierte oder pseudonymisierte Bereiche sein, für die ähnliches gilt. Was also generell gefordert wird ist eine Mandantenfähigkeit des Data Lakes, also die Möglichkeit klar abgegrenzte Bereiche einzurichten

  • mit feingranularer Zugriffsteuerung
  • mit der Möglichkeit einer passenden Ressourcensteuerung

Es ist natürlich innerhalb eines großen Data Lakes viel schwieriger das alles einzurichten, zu steuern und zu administrieren. Deshalb muss immer auch eine Abwägung vorgenommen werden, ob es vielleicht einfacher ist, mit separaten Umgebungen zu arbeiten. Hier sind die Bereiche auch „physisch“ getrennt. Eine Forderung, die von Seiten des Datenschutzes oftmals erhoben wird. Aber nehmen wir mal an, wir könnten mit „logisch“ getrennten Bereichen im Data Lake arbeiten. Wie kann man das erreichen?

Mandantenfähigkeit

Typische Hadoop Distributionen wie z.B. Hortonworks enthalten Mittel für solche Zwecke. Das sind Services und Tools, die die Trennung von Mandanten unterstützen. Wichtig ist dabei, dass eine zentrale Security und Governance Infrastruktur eine Klammer um das Ganze bilden kann.

Im Fall von Hortonworks ist hierbei Apache Ranger eine wesentliche Komponente. Über Ranger lassen sich User, Gruppen / Rollen und deren Berechtigungen feingranular in den folgenden wichtigen Hadoop Komponenten verwalten:

  • Apache Hadoop HDFS
  • Apache Hive
  • Apache HBase
  • Apache Solr
  • Apache Storm
  • Apache Knox
  • Apache Kafka
  • Apache Nifi
  • Apache YARN

Mandanten sind hierbei Gruppen / Rollen und deren Berechtigungen. Grundsätzlich sind das zunächst die Berechtigungen zu schreiben, zu lesen, Daten zu löschen, Objekte anzulegen und zu löschen. Aber es geht auch noch spezieller: In Hive lässt sich beispielsweise der Zugriff auf Tabellen und Views, bestimmte Spalten und sogar eine „row-level“ Security in den Daten selbst realisieren. Das heißt es lässt sich eine Filterung der Daten abhängig vom Security Kontext über eine implizite „where-clause“ des SQL (HiveQL) Statements erreichen. Genauso lassen sich im Hadoop Filesystem HDFS Bereiche (Folder) nur für Mandanten einrichten, dasselbe gilt für Kafka Topics, also die Kafka Messages Bereiche, die nur für bestimmte Mandanten gedacht sind. Ranger wiederum nutzt die nativen Security Mechanismen der einzelnen Komponenten via Plug-Ins.

Und „Sandboxes“?

Sandboxes sind dann einfach die jeweils für bestimmte Nutzergruppen und / oder Mandanten zugänglichen Bereiche wie Hive und HBase Tabellen, bestimmte Directories im HDFS, bestimmte Kafka Topics und auch Solr Collections, beziehungsweise in Hive auch Views und noch tiefergehende Berechtigungen wie „Row-level Security“, die an einer „Mandanten-ID“ in der jeweiligen Tabelle festgemacht werden kann. Wichtig ist eigentlich nur, dass man allen anderen Usern / Gruppen / Rollen, die auch Zugriff auf den Data Lake haben, den Zugriff auf die solchermaßen geschützten Ressourcen entzieht. Für Klardaten bietet sich zusätzlich auch die Verwendung von „Encryption Zones“ im HDFS an, d.h. nur ein Mandant mit dem entsprechenden Schlüssel kann die Daten in Klarform abgreifen, alle anderen bleiben hier außen vor, selbst wenn sie unberechtigterweise sich Zugriff auf die Daten verschaffen können. Das generelle Verschlüsseln von Daten jenseits der speziellen Anforderungen der Anonymisierung und Pseudonymisierung ist besonders für den Cloud Betrieb relevant. Dazu demnächst mehr.

Data Lake und Datenschutz: Anonymisierung und Pseudonymisierung

Datenschutz im Data Lake wird zu „Muss“… Wie geht man vor?

Mit der Einführung der europäischen Datenschutz-Grundverordnung (EU-DSGVO) hat sich auch das Vorgehen beim Aufbau von Data Lakes gewandelt. Datenschutzaspekte spielen eine sehr viel größere Rolle als vorher. Themen wie Anonymisierung und Pseudonymisierung von Daten und ganzen Datenbereichen sind zu einem Muss geworden und erzwingen ein sehr durchdachtes Vorgehen. Warum ist das aber gerade beim Aufbau von Data Lakes so kritisch? Sind denn Anonymisierung und Pseudonymisierung von Daten etwas Neues? Eigentlich nein, aber im Kontext von Data Lakes in gewisser Weise schon: Der ursprüngliche Focus von solchen Systemen lag in der Vergangenheit auf dem Managen von enorm vielen heterogenen Daten. Das heißt, man kümmerte sich in der Regel zunächst um das Bereitstellen dieser Daten für Analysen und operative Zwecke in unverschlüsselter Form, was auch die Umsetzung analytischer Use Cases mit diesen Daten mit eingeschlossen hat. Warum man das gemacht hat, liegt eigentlich auch auf der Hand: Man spart sich Komplexität und kann mit Klardaten auch sehr viel einfacher umgehen, da sich Analysen und analytische Anwendungen sehr einfach mit ihnen realisieren realisieren lassen. In solchen Systemen hat man in der Regel keine große Anforderungen in Sachen Datensicherheit und Governance realisieren zu müssen geschweige denn realisiert, da Ziel und Zweck eines Data Lakes von anderen Faktoren bestimmt wurde. Dieses Bild ändert sich allerdings sehr stark in letzter Zeit.

Eine daraus folgende Anforderung, mit dem man also sehr viel stärker als früher konfrontiert ist, ist die Forderung nach Pseudonymisierung und, noch stärker, Anonymisierung der Daten oder zumindest von Datenbereichen im Data Lake. Daten, die keinen direkten zeitlichen und operativen Zweckbezug mehr haben, können nicht einfach mehr klar abgelegt werden. Es reicht auch nicht, einfach die Datenträger zu verschlüsseln. Die Daten selbst müssen in einem solchen Fall in der Regel anonymisiert oder mindestens pseudonymisiert werden. Was verbirgt sich aber hinter diesen Begriffen?

Anonymisierung, Pseudonymisierung und Analytik

Kurz gesagt bedeutet Pseudonymisierung, dass ich die Daten bei Bedarf noch auf einen Ursprung (Person, Kunde, Mitarbeiter,…) zurückführen kann, zumindest theoretisch. Bei der Anonymisierung ist das nicht mehr möglich. Eine gute Gegenüberstellung findet sich hier: Anonymisisierung und Pseudonymisierung

Für die Durchführbarkeit von Analysen ist natürlich wichtig, dass bei diesen Vorgehensweisen nicht die Beziehungen in den Daten verlorengehen. Das bedeutet, dass eine Person in einem für mich wichtigen Datenauswertungskontext immer das gleiche Pseudonym bekommt. Ist dieses nicht mehr auf die Person rückführbar – was allerdings in der Regel sehr schwer nachweisbar ist – ist die Person sogar anonymisiert. Es wird typischerweise auch gefordert, dass der Schlüssel

  • nach einem bekannten sicheren Verfahren erzeugt wird
  • nur in eine Richtung funktioniert, das kann man organisatorisch „sicherstellen“, indem der Schlüssel „weggeworfen“ oder sicher verwahrt wird
  • der Schlüssel nicht im Data Lake selbst abgelegt werden darf, sondern eine sichere Stelle außerhalb benutzt wird

Aber die Schwachstelle des Ganzen ist oben schon angedeutet: Ein Nachweis zu führen, dass solchermaßen anonymisierte Daten tatsächlich anonym sind in dem Sinn, dass unter keinen Umständen über sie ein Personenbezug hergestellt werden kann, kann sich als unmöglich oder doch sehr schwierig herausstellen. Es gibt nämlich bekannte Situationen, in denen aus den Daten selbst ohne höheren Aufwand doch ein Personenbezug hergestellt werden kann. Ein typisches Beispiel sind Mitarbeiterdaten, die aufgrund ihres Arbeitsplatzes und ihrer Einordnung in die Organisationshierarchie des Unternehmen leicht identifizierbar sind. Oder Kundendaten, die alleine aufgrund der Tatsache, dass Adressgebiete nicht hinreichend groß gewählt wurden, auf einzelne Personen rückführbar sind – zumindest indirekt und unter Umständen unter Zuhilfenahme von „hinreichend schlauen“ Verfahren. Im ersten Fall der Mitarbeiterdaten ist das sogar besonders kritisch, da hier nicht nur die Interessen des Datenschutzes selbst, sondern auch des Betriebsrats und eventuell vorhandener Betriebsvereinbarungen berücksichtigt werden müssen. Ich glaube, diese Beispiele zeigen sehr gut, in welche Fallen man hier geraten kann.

Und was ist mit Klardaten?

Klardaten dürfen nur dann im Data Lake gespeichert und verwendet werden, wenn eine Erlaubnis dazu vorliegt. Es ist also bei der Verarbeitung und Speicherung solcher Daten immer auch eine Prüfung  der „Permissions“ zu diesen Daten vorzunehmen. Die Daten müssen auch unverzüglich  bei berechtigtem Entzug der „Permissions“ gelöscht werden können. Ein solcher Widerruf oder genereller Einspruch gegen die Datenspeicherung kann beispielsweise durch einen Kundenauftrag veranlasst sein. Jetzt ist aber allein die Aufgabe, diese „Permissions“ in korrekter Weise zu verwalten eine keinesfalls triviale Aufgabe, mit der die zum Management eines Data Lakes Berechtigten in der Regel ein Problem haben. Eine mögliche Abhilfe kann hier sein, dass zwar die grundlegenden Infrastruktur zum Speichern dieser Daten seitens des Data Lakes bereitgestellt und verwaltet wird (das „System an sich“), die Benutzung von solchermaßen kritischen Bereichen aber in die Hand dafür speziell Berechtigter gelegt wird. Diese müssen dann auch zwingend die Berechtigung nachweisen – denn die Verantwortung für diese Daten liegt jetzt komplett in deren Hand! Ein Zugriff von dem normalen (und in der Regel anonymisierten) Data Lake in diese Daten ist nicht möglich und wird normalerweise technisch unterbunden. Die Datenhaltung inklusive dem Laden und Verarbeiten der Daten und das Löschen wird von den dazu Berechtigten ausgeführt und hat mit der eigentlichen Betriebsführung des Data Lakes dann „nichts zu tun“. Das erfordert natürlich ein ausgeklügeltes Sicherheits- und Mandantenkonzept. Hierauf werde ich demnächst ein Licht werfen.