Zum Hauptinhalt springen

đŸ‘źâ€â™‚ïž Datensicherheit 101 - Zugriffskontrolle

· 6 Minuten Lesezeit
Flo Sloot

Hintergrund​

Eine der am hÀufigsten gestellten Fragen unserer Kunden ist:

Wie sicher sind meine Daten in der Cloud?

Obwohl, oder auch gerade weil diese Frage sehr abstrakt ist, lohnt es sich, diese Frage aufzubrechen und als Einzelthemen genauer zu beleuchten, zu erlÀutern und zu beantworten - besonders im Hinblick auf die CERTAIN CE-Kennzeichnungssoftware.

Die “Datensicherheit 101” Serie auf unserem CERTAIN Blog soll erstens ein VerstĂ€ndnis dafĂŒr vermitteln, wie Daten in “der Cloud” verarbeitet und gespeichert werden und zweitens, durch dieses neugewonnene VerstĂ€ndnis, mehr Vertrauen in cloud-basierte Software geben. In dieser Serie werden wir uns mit den folgenden Themen befassen:

  • der Begriffsbestimmung “der Cloud”
  • einem Blick auf Daten-VerschlĂŒsselung aus der Vogelperspektive
  • einem theoretischen Ansatz der ZugriffsbeschrĂ€nkung in Cloud-Systemen
  • dem Sprung in eine passwortlose Zukunft
  • der spezielleren Anwendung der oben genannten Themen in der CERTAIN App. Ich werde Fokus darauf legen, diese technisch recht anspruchsvollen Themen verallgemeinert, aber fĂŒr Laien verstĂ€ndlich zu erklĂ€ren. Ich setze keine IT-Vorkenntnisse der Lesenden voraus.

Im dritten Teil der Serie schauen wir uns an, wie der Zugriff auf Ressourcen in Multi-Tenant-Systemen (kleine Erinnerungshilfe zu dem Konzept gibt’s im 1. Teil) gehandhabt wird. In der ersten HĂ€lfte befassen wir uns theoretisch mit der Frage, ob “Daten in der Cloud sicher sind vor dem Zugriff anderer Nutzer”. In der zweiten HĂ€lfte veranschauliche ich die praktische Umsetzung der Zugriffskontrollen.

Zugriff in Multi-Tenant-Systemen​

Wie im ersten Teil der Serie erlĂ€utert, nutzen alle User einer Multi-Tenant-Anwendung die selben Infrastruktur-Ressourcen (Datenbanken, Server, etc) des Anbieters. Das bedeutet auch, dass, ohne Kontrollmechanismen, alle Nutzer auf sĂ€mtliche Daten auf diesen Ressourcen zugreifen können. In CERTAIN’s Fall wĂŒrde das bedeuten, dass ein User die Projekte eines anderen Users einsehen könnte. SelbstverstĂ€ndlich ist das ein absolutes No-Go. Im Folgenden schauen wir uns zwei Konzepte an, mit denen sich der Zugriff steuern lĂ€sst.

Attribute-Based Access Control (ABAC)​

ABAC ist ein Sicherheitsmodell, bei dem der Zugriff auf Ressourcen basierend auf Attributen (Eigenschaften) gesteuert wird. Diese Attribute können sich auf Nutzer, Ressourcen (z.B. Projekte bei CERTAIN) oder sogar Umgebungsbedingungen beziehen.

Konkrete Attribute sind:

  • der Sitz eines Users, z.B. nur EU-basierte User dĂŒrfen Projekte eines Herstellers bearbeiten
  • die Besitzstruktur eines Projekts, z.B. ein Projekt darf nur von seinem Besitzer bearbeitet werden

Role-Based Access Control (RBAC)​

RBAC hingegen konzentriert sich auf die Ressourcen selbst, also das Projekt oder den Hersteller, und steuert den Zugriff basierend auf der Rolle des Nutzers im System.

Beispiel-Rollen in einem CERTAIN Account:

  • Admin, hat Zugriff auf sĂ€mtliche Projekte, Hersteller, Risikovorlagen und hat auch die Erlaubnis Zahlungsdaten und Abo-Modelle zu Ă€ndern
  • DokumentationsbevollmĂ€chtiger, hat vollstĂ€ndigen Zugriff auf Projekte, Hersteller und Risikovorlagen, kann aber accountweite Einstellungen nicht anpassen
  • Auditor, kann ausschließlich Projektdaten anschauen, aber keinerlei Änderungen vornehmen

Kombination von ABAC und RBAC fĂŒr optimale Sicherheit​

Die Kombination von ABAC und RBAC bietet eine robuste Sicherheitslösung fĂŒr Multi-Tenant-Systeme. WĂ€hrend ABAC die FlexibilitĂ€t bietet, den Zugriff basierend auf einer Vielzahl von Attributen zu steuern, sorgt RBAC dafĂŒr, dass nur Benutzer mit der richtigen Rolle auf bestimmte Ressourcen zugreifen können. Diese doppelte Kontrolle trĂ€gt wesentlich dazu bei, die Sicherheit in Cloud-Umgebungen zu erhöhen.

Hierarchie der CERTAIN Ressourcen​

Um besser zu verstehen, wie CERTAIN Zugriffe kontrolliert sind, mĂŒssen wir eine kurze Sektion ĂŒber die existierenden EntitĂ€ten und deren Beziehung untereinander einschieben.

  1. Account

Accounts sind die Ă€ußerste Organisationsstruktur im CERTAIN System. Ein Account “besitzt” mindestens einen Nutzer und kein, ein oder mehrere Projekte und Hersteller, Risikovorlagen etc.

  1. User

User sind menschliche Akteure, die sich einloggen, Projekte und Hersteller bearbeiten, einsehen oder auch löschen können. Bestimmte User können auch sensible Daten eines Accounts einsehen und bearbeiten. Dazu gehören Zahlungsdaten oder die Zugriffskontrolle anderer User im Account.

  1. Projekte, Hersteller, Vorlagen und andere

Fachliche Ressourcen wie Projekte usw. sind immer nur einem Account zugeordnet, können aber von mehreren Usern verwendet, bearbeitet oder eingesehen werden.

Diese ZusammenhÀnge lassen sich vereinfacht visualisieren:

Visualisierung der CERTAIN EntitÀten und ihrer Beziehungen

resources.png

Mit dieser Verbildlichung können wir uns nun exemplarische Richtlinien anschauen.

Zugriffs-Richtlinien bei CERTAIN​

In der Praxis gibt es einige Möglichkeiten, ABAC und RBAC zu implementieren.

Bei CERTAIN steuern wir den Zugriff auf die Ressourcen unserer Nutzer mit Cedar Policies. Das sind Richtlinien, durch die der Zugriff explizit anhand von Nutzer-Rollen (RBAC) und/oder Attributen der zugreifenden User bzw. zugegriffenen Ressourcen (ABAC) definiert wird.

Beispiel: Zugriff der DokumentationsbevollmĂ€chtigen​

Beispielsweise können wir den Zugriff auf Ressourcen in einem Account “1234” (vereinfachte Account-ID) auf die AktivitĂ€ten “Update” und “Describe” begrenzen, wenn der anfragende Nutzer die Rolle “Editor” (ebenfalls vereinfacht) einnimmt und der Nutzer im selben Account agiert.

In der Cedar-Sprache ausgedrĂŒckt, gestaltet sich die Richtlinie wie folgt:

permit (
principal in Certain::Account::1234,
action in [Certain::Action::Project:Update, Certain::Action::Project:Describe],
resource in Certain::Account::1234
) when {
principal.role == "Editor"
};

Beispiel: Auditor fĂŒr ein einziges Projekt​

Wollten wir einem bestimmten Auditor (das könnte eine Kontroll-Funktion innerhalb des eigenen Unternehmens sein oder auch eine benannte Stelle oder sonstige Aufsichtsinstitution) Lese-Zugriff auf ein einziges bestimmtes Projekt geben, wĂŒrde unsere Richtlinie so aussehen:

permit (
principal == Certain::Auditor::000,
action == Certain::Action::Project:Describe,
resource == Certain::Project::123
);

Es gibt noch eine ganze Reihe weiterer logischer Operatoren, um Attribute, Rollen oder den Kontext zu prĂŒfen und komplexere Richtlinien zu erstellen bzw. zu prĂŒfen.

Alles andere verboten​

Ein wichtiges Grundprinzip dieser Policies ist, dass alle Aktionen abgelehnt werden, außer sie sind explizit erlaubt. Das bedeutet, dass auf keine Ressource zugegriffen kann, es sei denn, es gibt eine Richtlinie, die genau diesen Zugriff definiert. Dadurch kehren wir die Sicherheitsverantwortung um: Statt alle Möglichkeiten eines Zugriffs zu begrenzen, was das Risiko birgt, manche zu ĂŒbersehen, mĂŒssen wir die Zugriffe ausdrĂŒcklich erlauben. Und damit fĂŒhrt ein Fehler zu einem nicht erlaubten Zugriff, statt zu einem Datenleck. CERTAINs Zugriffskontrolle wird damit “secure by default”.

Fazit​

Kommen wir zurĂŒck zu der Ausgangsfrage "Sind meine Daten in der Cloud sicher vor dem Zugriff anderer Nutzer?"

Ja, mit der Zugriffskontrolle durch RBAC und ABAC Richtlinien sind Ihre Daten im CERTAIN System sicher vor dem Zugriff anderer Nutzer.

In den ersten drei Teilen der Blog-Serie haben wir die Sicherheit innerhalb der CERTAIN Cloud untersucht. Im nÀchsten Teil sehen wir uns Ihren Zugang zur Cloud an und erlÀutern, wie wir diesen so sicher wie möglich machen.