Data Lake, Datenschutz und die Cloud

 

Data Lake in der Cloud

Ein wichtiges Thema, dass fast jedes Unternehmen „umtreibt“ ist die Frage, ob man mit seinen IT-Systemen wie etwa einem Data Lake in die Cloud gehen soll. Der Betrieb von Anwendungen in der Cloud bietet nämlich zahlreiche Vorteile, die in vielen Fällen das Entwickeln und auch die Betriebsführung derselben einfacher und billiger machen können. Auf der anderen Seite gibt es aber Nachteile, welche sorgfältig gegen die Vorteile abgewogen werden müssen. Dazu gehört unter anderem, eine genaue Vorstellung zu entwickeln, wie man mit einem geeigneten Vorgehen den eher negativ bewerteten Aspekten gegensteuern kann, ohne die eigentlichen Vorteile zu verlieren.  Zu diesen gehören:

  • Die Cloud bietet standardisierte Produkte und eine möglichst einfache Automatisierung aller Arbeitsschritte
  • „Pay per Use“ oder „Pay as you go“: Klare Preismodelle, d.h. die Kosten sind vorhersagbar. Das hängt natürlich davon ab, ob man die Einsatzszenarien hinreichend genau kennt: Ein möglicher Kostentreiber kann Datentransfer von und in die Cloud sein. Klar bedeutet hierbei auch nicht, dass sich die Kosten einfach berechnen lassen, denn es gibt typischerweise viele Faktoren und Unbekannte, die die Kosten am Ende bestimmen… Und: „Cloud“ ist nicht unbedingt in allen Fällen billiger!
  • Verläßliche und bei Bedarf hochverfügbare und einfach skalierbare Umgebungen, ohne eine eigene Infrastruktur dafür betreiben zu müssen

Dem gegenüber stehen auch Nachteile, wie:

  • Höhere Abhängigkeit im Vergleich mit „On-Premise“ Lösungen, da die Infrastruktur nicht mehr in meiner eigenen Hand liegt und gegebenenfalls auch proprietäre Lösungen des Cloud Providers in Frage kommen
  • Das Thema Dateneigentümerschaft ist problematisch, denn der Cloud Provider hat ja notwendigerweise auch die Daten
  • Datenschutzthemen allgemein werden vor dem Hintergrund der Cloud kritisch gesehen

Erhalten der Vorteile, minimieren der Nachteile..

Dem Problem „höhere Abhängigkeit“ läßt sich relativ leicht gegensteuern. Im Grunde genommen muss ich nur dafür sorgen, dass Standardprodukte zum Einsatz kommen, welche problemlos auch in der Cloud eines anderen Providers laufen könnten, wie hier skizziert:

  • Aufbau des Data Lakes in „leeren“ virtuellen Umgebungen mit einer Standard Linux Distribution als Betriebssystem
  • Einsatz einer standardisierten Big Data Distribution wie beispielsweise Hortonworks und, soweit möglich, Vermeidung irgendwelcher herstellerspezifischer Komponenten
  • Generell Einsatz von Open Source Hadoop Tools und Big Data Komponenten
  • Verwendung von Architekturstandards und –patterns
  • Einsatz gängiger Programmiersprachen und Protokolle
  • Vermeiden des Einsatzes von Cloud Provider spezifischen Lösungen

Ein schwierigeres Thema ist das des Datenschutzes und der eng damit verbundenen Problematik der Dateneigentümerschaft. Hier besteht ja das Grundproblem schon darin, dass die Daten nicht „bei mir“ sondern „irgendwo“ in der Cloud liegen. Das heißt natürlich, sie liegen in der Infrastruktur des Cloud Providers. Dieser hat damit potentiell auch Vollzugriff auf die Daten, wobei nicht zwischen sensiblen und (relativ) unsensiblen Daten unterschieden wird. Genau hier kommt auch gleich der Datenschutz ins Spiel – ohne nachgewiesenen Schutz dürfen sensible Daten typischerweise gar nicht das Unternehmen verlassen. Manchmal heißt „gar nicht“ auch im absoluten Sinne, dass es unmöglich ist, die Daten außerhalb bestimmter zugelassener „Bereiche“ innerhalb des Unternehmens zu speichern. In diesem Falle ist Cloud leider keine Lösung. Wenn es darum geht, dass Daten nur in Cloudcentern einer bestimmte Region physikalisch gespeichert werden oder gar ein Land nicht verlassen dürfen, dann ist die Antwort größerer Cloud Provider meist das Angebot, Daten auch physikalisch nur in Cloud-Rechenzentren einer bestimmten Region (Europa) oder eines Landes (z.B. Deutschland / Frankfurt) zu speichern. Oftmals ist das verbunden mit rechtlichen Konstrukten die unterbinden, dass Dritte Zugriff auf die Daten verlangen dürfen.

Eine Stufe „tiefergelegt“

Neben diesen allgemeinen Maßnahmen gibt es zahlreiche weitere, die tiefer gehen. Im folgenden eine Auswahl anhand von konkreter Praxiserfahrung in Data Lake Projekten:

  • Verschlüsselung der Root Partition aller „Server“ Instanzen und aller weiteren Partitionen (falls vorhanden), ganz besonders auch der Bereiche, in denen meine Daten gespeichert werden
  • Verschlüsselung aller Daten vor Upload in den Data Lake in der Cloud, Entschlüsselung erst nach Download aus der Cloud
  • Sichere Protokolle
  • Zugriffe über Edge Server / Bastion Server
  • Nur die benötigten Services und Ports zwischen konkreten Endpunkten freischalten
  • Feingranulares Berechtigungskonzept
  • Mandantenbasierte Architektur und Sandboxing
  • Klardaten speichern nur wo explizit hierfür eine Rechtsgrundlage existiert
  • Pseudonymisierung und Anonymisierung aller anderen Daten
  • Feingranulares Löschkonzept von Beginn an vorsehen

Und, und , und … Hier ließen sich sicher noch weitere Dinge aufzählen. Doch ich denke, dass das, was ich hier skizziert habe schon mal einen gewissen Überblick zu möglichen Lösungsszenarien gibt. Wenn ich alle diese Dinge beachte (es dürfen auch gerne mehr sein), dann habe ich tatsächlich eine Chance, einen sicheren Data Lake in der Cloud aufzubauen. Einen Data Lake, der den Anforderungen aus Compliance und Datenschutz wirklich genügt.

 

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.