Mit CloudTracker überprivilegierte Benutzer in AWS finden
Überprivilegierte Benutzer in AWS mit CloudTracker
Zunächst müssen wir einige Begriffe definieren: Was ist ein überprivilegierter Benutzer und welche Probleme ergeben sich für eine Organisation mit überprivilegierten Benutzern? Ein Privileg kann als die Fähigkeit definiert werden, Elemente Ihrer (IT-)Infrastruktur oder eines speziellen (IT-)Systems auszuführen oder zu steuern. Der Besitzer eines Privilegs kann dieses für die tägliche Arbeit mit dem System verwenden. Der Besitzer kann eine echte Person oder eine Anwendung sein. Denken Sie beispielsweise an eine klassische Datenbankanwendung: Es gibt mindestens drei verschiedene Benutzergruppen mit unterschiedlichen Rollen:
Datenbankadministratoren (DBA): Sie installieren, konfigurieren und verwalten die Datenbank selbst
Anwendungsbenutzer: Die Anwendungen auf dem Server werden mit der Rolle ausgeführt
Persönlicher Benutzer: Sie fragen die Datenbank ab
In vielen IT-Systemen nimmt die Anzahl der Privilegien vom DBA zum Anwendungsbenutzer zum persönlichen Benutzer ab. Aber wissen Sie genau, welche Rolle in Ihrem IT-System welche Privilegien hat und welcher Benutzer welche Rolle hat? Insbesondere in großen Cloud-Umgebungen wie AWS ist diese Frage schwer zu beantworten, da auch hier viele Berechtigungen für Container, VMs und andere Infrastrukturelemente vorhanden sind.
Prinzip der geringsten Privilegien
Wenn Sie eine (neue) AWS-Umgebung planen, denken Sie möglicherweise über eine der folgenden Möglichkeiten nach, um Ihre Berechtigungen zu vergeben:
Geben Sie jedem Benutzer genau die Berechtigungen, die er oder sie für die tägliche Arbeit benötigt. Das Problem dabei ist, dass Sie zum Zeitpunkt der Einrichtung Ihrer Umgebung oft nicht genau wissen, welche Berechtigungen benötigt werden. Kommen im Laufe der Zeit neue Berechtigungen hinzu oder müssen zuvor nicht berücksichtigte Berechtigungen hinzugefügt werden, führt dies zu zusätzlichem Aufwand während des Lebenszyklus Ihrer Anwendung
- Geben Sie jedem Benutzer mehr Berechtigungen als tatsächlich benötigt werden.
Der zweite Weg kann gefährlich sein, da ein Benutzer mit überprivilegierten Berechtigungen absichtlich oder unabsichtlich Operationen ausführen kann, die er oder sie nicht ausführen darf. Die Folgen können Datenverlust oder schwerwiegende Schäden an der Infrastruktur aufgrund von Aktionen sein, die eigentlich nicht ausgeführt werden sollten. Manchmal ist der Grund für überprivilegierte Benutzer die hierarchische Struktur eines Unternehmens. Manager verlangen möglicherweise Zugriff auf alles („Ich bin der Chef, also muss ich alles sehen und tun dürfen“), auch wenn sie nicht wissen, was sie tun. Ein weiterer Grund für eine Anhäufung von Privilegien kann die Tatsache sein, dass es in kleinen Unternehmen Mitarbeiter mit einer großen Anzahl von Aufgaben und Verantwortlichkeiten gibt.
Wir bei A&B empfehlen das „Prinzip der geringsten Privilegien“, das besagt, dass jeder (persönliche oder System-)Benutzer nur auf die Informationen und Ressourcen zugreifen können sollte, die für seinen legitimen Zweck erforderlich sind. Was ist also der beste Weg, um überprivilegierte Benutzer zu finden, d. h. Benutzer mit Berechtigungen, die ihnen zwar erteilt wurden, die sie aber nicht benötigen? In komplexen AWS-Umgebungen ist es theoretisch möglich, überprivilegierte Benutzer manuell zu suchen und zu überprüfen, dies ist jedoch zeitlich kaum zu bewältigen. Um systematisch nach überprivilegierten Benutzern zu suchen, benötigen Kunden Tool-Unterstützung für diese Aufgabe. CloudTracker ist ein Tool, das Kunden dabei hilft, diese Benutzer und Rollen zu finden, indem es CloudTrail-Protokolle mit aktuellen IAM-Richtlinien vergleicht.
CloudTrail ist ein AWS-Dienst, der Kunden hilft, die Aktivitäten in den Konten von AWS-Umgebungen zu überwachen. Er bietet Protokollierungsinformationen zu Aktionen über die Konsole, SDKs, Befehlszeilentools und andere Dienste. Die CloudTrail-Protokolle liefern somit die grundlegenden Informationen, wenn Sie nach Benutzern suchen, die mehr Berechtigungen als nötig haben.
Cloudtracker
CloudTracker ist ein Open-Source-Tool, das 2018 von Duo Security veröffentlicht wurde. CloudTrail-Protokolle sind die Datenquelle von CloudTracker, d. h. CloudTracker überprüft CloudTrail-Protokolle, um von einem Akteur initiierte API-Aufrufe zu finden, und vergleicht diese Aufrufe mit den Berechtigungen, die dem Akteur gewährt wurden. Dadurch identifiziert CloudTracker überprivilegierte Benutzer und empfiehlt, Berechtigungen basierend auf ihrer Nutzung zu widerrufen. Die Entfernung selbst muss anschließend manuell erfolgen.
Beachten Sie einige Einschränkungen bei der Verwendung von CloudTracker. CloudTrail zeichnet nicht alle AWS-API-Aufrufe auf, beispielsweise werden Aktionen auf Datenebene nicht aufgezeichnet. Da CloudTracker auf CloudTrail basiert, müssen Sie diese Einschränkung berücksichtigen. Ein weiterer Aspekt ist die Verwendung von ElasticSearch oder AWS Athena in CloudTracker: Als CloudTracker 2018 veröffentlicht wurde, mussten die CloudTrail-Protokolle in ElasticSearch geladen werden. Obwohl dies mit AWS Athena immer noch möglich ist, ist es eine Alternative für Unternehmen, die diesen zusätzlichen Schritt des Kopierens großer Mengen von Protokolldaten in ElasticSearch überspringen möchten. AWS Athena ist ein interaktiver Abfragedienst zum Analysieren von Daten in Amazon S3 mit Standard-SQL.
Eine detaillierte Beschreibung des Setups einer CloudTracker-Installation finden Sie auf GitHub. Dort sind auch einige Beispiele verfügbar, die die Verwendung des Befehlszeilentools zeigen.
Schauen wir uns das erste Beispiel an:
$ cloudtracker --account demo --list users --start 2018-01-01
alice
- bob
charlie
Für die Suche in den CloudTrail-Protokollen müssen Sie das Konto und das Startdatum angeben. „—list users“ gibt an, dass eine Liste von Benutzern angefordert wird. Beachten Sie das Präfix „-“ des Benutzers „bob“ in der Ausgabe. Dies zeigt an, dass der Benutzer bob ab dem 01.01.2018 nicht in den Protokollen gefunden wurde, sodass empfohlen wird, diesen Benutzer zu entfernen.
Es ist auch möglich, Rollen statt Benutzern mit „—list roles“ anzufordern:
cloudtracker --account demo --list roles --start 2018-01-01
admin
Während diese ersten Beispiele nur Benutzer oder Rollen auflisten, kann eine detailliertere Analyse für einen speziellen Benutzer oder eine spezielle Rolle durchgeführt werden:
cloudtracker --account demo --user alice
...
cloudwatch:describealarmhistory
cloudwatch:describealarms
- cloudwatch:describealarmsformetric
- cloudwatch:getdashboard
? cloudwatch:getmetricdata
...
+ s3:createbucket
...
Dieser Aufruf listet alle Aktionen auf, die Benutzerin Alice aufgrund ihrer Berechtigungen ausführen kann. Beachten Sie, dass die oben angezeigte Ausgabe nur ein Ausschnitt ist. Die meisten der möglichen Aktionen werden nicht verwendet. Sie können die Ausgabe mit „—show-used“ filtern, um nur die verwendeten Aktionen anzuzeigen.
Ein wichtiges Merkmal von CloudTracker ist die Möglichkeit, den Unterschied zwischen den gewährten und den verwendeten Berechtigungen anzuzeigen. Das Präfix jeder Ausgabezeile zeigt das Differenzergebnis:
Kein Präfix bedeutet: Berechtigung wurde gewährt und verwendet
Präfix „-“ bedeutet: Berechtigung wurde gewährt, aber nicht verwendet
Präfix „?“ bedeutet: Berechtigung wurde gewährt, aber es ist nicht bekannt, ob sie verwendet wurde, da die Aktion nicht in CloudTrail aufgezeichnet wird (siehe die oben genannten Einschränkungen der Verwendung von CloudTrail als Datenquelle)
Präfix „+“ bedeutet: Die Berechtigung wurde verwendet, obwohl sie derzeit nicht gewährt wird. Dies bedeutet, dass die Berechtigung gewährt wurde, als die Aktion ausgeführt wurde, und in der Zwischenzeit entfernt worden sein muss. Sie sollten darüber nachdenken, diese Berechtigung erneut zu gewähren, wenn sie versehentlich entfernt wurde
Nehmen Sie einfach Kontakt mit uns auf und wir helfen Ihnen bei der Integration von CloudTracker in Ihre Sicherheitstools zur Überwachung Ihrer AWS-Umgebung.