Least Privilege
Nur die unbedingt nötigen Rechte vergeben
Die Idee und ihr Nutzen
Der Statistikdienst einer Versicherung wertet aus, in welchen Postleitzahlgebieten wie viel für Schäden gezahlt wird. Dafür braucht der Statistikdienst Schadenbeträge und Postleitzahlen, aber weder Namen noch Bankverbindungen noch ärztliche Befunde. Sein Datenbankkonto, also sein Zugang zur Datenbank, erhält deshalb nur das Recht, genau diese beiden Angaben zu lesen, und sonst nichts. Übernimmt ein Angreifer den Statistikdienst, kann der Angreifer deshalb nur Schadenbeträge und Postleitzahlen lesen und nichts ändern. Dass jede Person und jedes Programm nur die Zugriffe erhält, die die eigene Aufgabe verlangt, heißt Least Privilege, auf Deutsch Prinzip der geringsten Rechte.
Wie funktioniert es?
Ein Team vergibt die Rechte in der Datenbank. Zuerst leitet das Team aus der Aufgabe des Statistikdienstes ab, dass der Statistikdienst nur Schadenbetrag und Postleitzahl braucht, und beides nur zum Lesen. Das Team legt in der Datenbank eine Datensicht an. Eine Datensicht ist eine gespeicherte Abfrage, die wie eine eigene Tabelle aussieht, aber nur ausgewählte Spalten zeigt, hier Schadenbetrag und Postleitzahl. Dann richtet das Team für den Statistikdienst ein eigenes Datenbankkonto ein, also einen Zugang mit eigener Anmeldung, dem die Datenbank bestimmte Rechte zuordnet. Dieses Konto darf nur die Datensicht lesen und nirgends schreiben oder löschen. Im normalen Betrieb meldet sich der Statistikdienst mit dem Konto an und liest über die Datensicht Beträge und Postleitzahlen für seine Auswertung. Auf die Schadentabelle und die Zahlungen, in denen Namen, Befunde und Bankverbindungen stehen, hat das Konto keinen Zugriff. Versucht der Statistikdienst, die Schadentabelle oder die Zahlungen zu lesen, weist die Datenbank den Zugriff ab. Ein halbes Jahr später nutzt ein Angreifer eine Sicherheitslücke und übernimmt den Statistikdienst. Mit dem Konto des Statistikdienstes kann der Angreifer nur Beträge und Postleitzahlen lesen. Namen, Befunde und Bankverbindungen bleiben ihm verschlossen, und ändern kann er nichts. Bei einem seltenen hohen Schaden in einem kleinen Ort ließe sich aus Betrag und Postleitzahl trotzdem erraten, wer betroffen war.
Erweiterte Rechte gibt es nur für die Dauer einer Aufgabe. Braucht ein Administrator für eine Wartung erweiterte Rechte, erhält er sie nur für die geplante Dauer der Wartung, zum Beispiel für zwei Stunden. Danach verfallen die erweiterten Rechte von selbst. Tätigkeiten, die zusammen Missbrauch ermöglichen, werden auf verschiedene Personen verteilt. Wer eine Bankverbindung ändern darf, darf nicht auch die Zahlung an diese Bankverbindung freigeben. So kann ein einzelner Mitarbeiter kein Geld unbemerkt zu sich selbst umleiten. In festen Abständen prüft das Team für jedes Konto, auch für das Konto des Statistikdienstes, ob die Rechte noch zur Aufgabe passen, und entzieht nicht mehr benötigte Rechte. Häufig betrifft das Mitarbeiter, die in eine andere Abteilung gewechselt sind. Das Prinzip gilt für Mitarbeiter, für Dienste, für Programme auf einem Server und für Container. Ein Container ist ein abgeschlossenes Paket aus einem Programm und allem, was das Programm zum Laufen braucht. Least Privilege verhindert nicht, dass ein Konto übernommen wird. Das Prinzip begrenzt nur, was ein Angreifer mit dem übernommenen Konto tun kann.
Für Notfälle braucht es oft trotzdem ein Konto mit weitreichenden Rechten. Die Zugangsdaten des Notfallkontos dürfen nur wenige Personen kennen, und jede Nutzung muss zeitlich begrenzt und lückenlos protokolliert werden.
Least Privilege: das Statistikkonto sieht nur Betrag und Postleitzahl
Wann ist es sinnvoll und wann nicht?
Least Privilege lohnt sich besonders
- Menschen oder Programme lesen oder ändern Daten. Das trifft auf fast jedes System zu; offen ist nur, wie fein die Rechte geschnitten werden. Ohne Least Privilege darf ein Konto mehr, als seine Aufgabe verlangt, und jeder, der das Konto benutzt, darf das ebenfalls.
- Jedes Konto kann durch gestohlene Zugangsdaten oder eine Sicherheitslücke in die Hände eines Angreifers geraten, und die Versicherung muss damit rechnen. Der Angreifer kann dann alles tun, was das Konto darf.
- Konten haben bisher mehr Rechte, als sie brauchen, weil das für die Verantwortlichen bequem ist. Ein Dienst verbindet sich mit einem Administratorkonto zur Datenbank, weil dann nie eine Berechtigung fehlt. Ein Wartungskonto darf alles, weil niemand genau weiß, was es braucht. Nutzt der Statistikdienst ein Administratorkonto, kann ein Angreifer über den Statistikdienst alle Kundendaten lesen, Bankverbindungen ändern oder Tabellen löschen, obwohl der Statistikdienst selbst nur zwei Spalten lesen muss.
- Ein Konto kann besonders schutzbedürftige Daten wie ärztliche Befunde lesen oder Geld bewegen. Geld bewegt zum Beispiel, wer Bankverbindungen ändern oder Zahlungen freigeben darf. Hier lohnt sich ein besonders genauer Zuschnitt der Rechte. Hat ein solches Konto mehr Rechte als nötig, kann ein Angreifer damit Befunde lesen oder Geld auf sein eigenes Konto umleiten.
- Ein Dienst ist aus dem Internet erreichbar oder verarbeitet Eingaben von außen. Einen solchen Dienst können auch Angreifer außerhalb der Versicherung erreichen. Übernimmt ein Angreifer den Dienst über eine Sicherheitslücke, kann er alles tun, was das Konto des Dienstes darf.
- Das Team will vorab wissen, welche Daten betroffen sein können, wenn ein bestimmtes Konto übernommen wird. Bei knappen Rechten lässt sich das an den Rechten des Kontos ablesen. Beim Statistikdienst sind es nur Schadenbeträge und Postleitzahlen.
Least Privilege lohnt sich weniger
- Die Daten haben keinen Schutzbedarf. Ein Beispiel ist eine öffentliche Liste der Geschäftsstellen. Ein Angreifer erfährt aus dieser Liste nichts, was nicht ohnehin öffentlich ist. Dann gibt das Team jedem Konto, das die Liste braucht, das Leserecht auf die ganze Tabelle. Eine eigene Datensicht und die regelmäßige Prüfung dieser Rechte entfallen.
- Eine abgeschottete Testumgebung enthält nur erfundene Testdaten. Ein Angreifer könnte dort nur diese erfundenen Daten lesen oder ändern. Dann erhalten die Entwickler in dieser Testumgebung Lese- und Schreibrechte auf alle Tabellen und müssen keine einzelnen Rechte beantragen. Das gilt nur, solange die Testumgebung keine Verbindung zu echten Kundendaten hat.
- Der Statistikdienst braucht immer dieselbe Auswertung, und Abfragen nach Bedarf sind nicht nötig. Mit einem eigenen Datenbankkonto müsste das Team Konto und Datensicht einrichten, regelmäßig prüfen und bei jeder Änderung der Auswertung anpassen. Stattdessen liefert das Team dem Statistikdienst regelmäßig eine fertige Datei mit den Summen je Postleitzahl. Der Statistikdienst hat dann gar keinen Zugang zur Datenbank, und ein Angreifer erbeutet höchstens diese Summen. Konto, Datensicht und die regelmäßige Prüfung der Rechte entfallen.
Nachteile und typische Fehler
Fein geschnittene Rechte müssen laufend gepflegt werden. Für jede neue Aufgabe muss jemand festlegen, welche Rechte sie verlangt. Datensichten wie die des Statistikdienstes müssen angepasst werden, wenn sich die Auswertung ändert. Zu fein geschnittene Rechte führen zu ständigen Anträgen auf weitere Rechte, zu grob geschnittene geben einem Angreifer mehr als nötig. Die regelmäßige Prüfung erfordert Zeit von Vorgesetzten und Fachbereichen, die beurteilen müssen, wer welche Rechte noch braucht.
Typische Fehler und woran man sie erkennt:
- Pauschal beantragte Rechte: Für eine neue Auswertung fehlt dem Konto des Statistikdienstes das Leserecht auf eine weitere Spalte. Damit die Auswertung nicht warten muss, beantragt der Verantwortliche des Statistikdienstes gleich Lese- und Schreibrechte auf die ganze Schadentabelle. Ein Angreifer, der den Statistikdienst übernimmt, kann dann auch Namen, Befunde und Bankverbindungen lesen und ändern. Erkennbar ist das an Konten mit Schreib- oder Administratorrechten, deren Aufgabe nur Lesen verlangt.
- Angesammelte Rechte: Ein Mitarbeiter wechselt in eine andere Abteilung und behält die Rechte der alten Abteilung, weil niemand sie entzieht. Mit jedem weiteren Wechsel kommen Rechte dazu. Erkennbar ist das an Konten, die Rechte aus mehreren Abteilungen gleichzeitig haben.
- Gemeinsames Konto: Der Statistikdienst und ein Wartungsprogramm nutzen dasselbe Datenbankkonto, das deshalb die Rechte beider Programme braucht. Wird der Statistikdienst übernommen, erhält der Angreifer auch die Rechte des Wartungsprogramms. Erkennbar ist das daran, dass sich in den Protokollen der Datenbank nicht mehr unterscheiden lässt, welches Programm einen Zugriff ausgelöst hat.
- Zu breite Datensicht: Jemand ergänzt die Datensicht später um Spalten wie Name oder Kundennummer, weil eine neue Auswertung sie angeblich braucht. Ein Angreifer, der den Statistikdienst übernimmt, kann dann auch Namen und Kundennummern lesen. Erkennbar ist das an Datensichten, deren Spalten nicht mehr zur beschriebenen Aufgabe des Kontos passen.
- Ungeschütztes Notfallkonto: Administratoren benutzen das Notfallkonto mit weitreichenden Rechten auch für gewöhnliche Wartungen, weil sie dafür keine erweiterten Rechte beantragen müssen. Die Nutzung ist weder zeitlich begrenzt noch protokolliert. Wer die Zugangsdaten des Notfallkontos erbeutet, hat damit alle Rechte, und niemand bemerkt die Nutzung. Erkennbar ist das an Anmeldungen mit diesem Konto außerhalb gemeldeter Notfälle.
Weiterführend
Verwandte Ansätze
- Role Based Access Control und Attribute Based Access Control: zwei Verfahren, mit denen sich Rechte über Rollen oder über Eigenschaften fein vergeben lassen. Sie sind keine Alternative zu Least Privilege, sondern setzen knappe Rechte um.
- Zero Trust: prüft jeden einzelnen Zugriff, statt einem Netz pauschal zu vertrauen, und setzt knappe Rechte voraus.
- Defense in Depth: beschreibt Sicherheit durch mehrere unabhängige Schutzschichten. Ist eine andere Schutzschicht überwunden, begrenzen knappe Rechte, was ein Angreifer tun kann.
- Secrets Management: beschreibt die sichere Verwahrung von Zugangsdaten und kann kurzlebige Zugangsdaten mit genau passenden Rechten ausstellen.
Werkzeuge und Umsetzungen
- OpenBao: erzeugt auf Anfrage kurzlebige Datenbankkonten mit genau festgelegten Rechten, die nach Ablauf automatisch gelöscht werden.
- Open Policy Agent: prüft Anfragen und Einstellungen gegen Regeln, etwa ob ein Dienst zu weitreichende Rechte erhalten soll.
- Keycloak: verwaltet Rollen und Rechte für viele Anwendungen zentral in einem Programm.
- SELinux und AppArmor: beschränken unter Linux, auf welche Dateien und Systemfunktionen ein Programm zugreifen darf.
Quellen
- Jerome H. Saltzer, Michael D. Schroeder: The Protection of Information in Computer Systems: Aufsatz von 1975, der das Prinzip der geringsten Rechte und die Trennung von Rechten auf mehrere Personen als Grundsätze für den Schutz von Informationen beschreibt.
- NIST: Glossar, Least Privilege: Begriffsbestimmungen des US-amerikanischen Normungsinstituts NIST, nach denen jede Person und jedes Programm nur die Rechte erhält, die die zugewiesene Aufgabe verlangt.