Wie lässt sich AWS S3 Sicherheit besser strukturieren

AWS S3

Wenn der neue IT-Mitarbeiter vorschlägt, dass Sie einen öffentlich zugänglichen Webserver auf Ihrem zentralen Dateiserver installieren, sollten Sie erwägen, sich von ihm zu trennen. Wenn er nun diese Idee verwirft und stattdessen vorhat, die Berichte aus Ihren hochsensiblen Data-Warehouse auf Ihren Webserver auszulagern, sollte er auf alle Fälle gefeuert werden.

Aber in der heutigen Welt der Cloud ist nicht immer alles so eindeutig. Hier gibt es Dienste wie Simple Storage Service (S3) von Amazon, die mehrere, oft überlappende Rollen in einem Anwendungs-Stack übernehmen, und bei denen Ihre sensiblen Dateien oft nur einen Klick davon entfernt sind, online veröffentlicht zu werden.

Cloud-Speicherdienste können heute mehr als nur „eine Datei an einem Ort aufzubewahren“. Sie fungieren oft sowohl als Ein- und Ausgang für aufwändigere Prozessketten. Das Endergebnis all dessen ist die aktuelle Flut schwerwiegender Datenverstöße, die aus S3-Buckets herrühren.

Ein S3-Bucket Primer

S3 ist einer der Kerndienste von AWS. Vom Konzept her ist es ähnlich wie ein unendlich großer Fileserver an einem Remote-Standort oder einem FTP-Server, mit dem Sie sich über das Internet verbinden.

S3 unterscheidet sich jedoch in einigen grundlegenden Aspekten, die für das Verständnis wichtig sind. Wenn Sie diese nicht verinnerlichen, kann es schnell zu Fehlern und unsicheren Konfigurationen kommen.

Im Mittelpunkt von S3 stehen Buckets und Objekte, anstatt Server mit Dateien.

Buckets bilden die oberste organisatorische Ressource innerhalb von S3 und sind immer einem adressierbaren DNS-Namen zugewiesen, zum Beispiel http://MyCompanyBucket.s3.amazonaws.com

Dies könnte Sie dazu verleiten, sich einen Bereich wie einen Server vorzustellen, in dem Sie mehrere Hierarchien innerhalb eines freigegebenen Ordners für jede Gruppe anlegen, die Zugriff innerhalb Ihrer Organisation benötigt.

Wichtig:

  • Es gibt keinen Kostenunterschied beim Einrichten eines Buckets oder einem Dutzend Buckets.
  • Standardmäßig sind Sie auf 100 Buckets beschränkt, aber mehr Buckets zu erhalten ist so einfach wie das Einreichen einer Support-Anfrage.
  • Es gibt keine Leistungsunterschiede beim Zugriff auf 100 Dateien in einem Bucket oder 1 Datei in 100 verschiedenen Buckets.

Vor diesem Hintergrund müssen wir uns eines Konzepts aus dem Informatikunterricht bedienen: das Single-Responsibility-Prinzip.

Innerhalb eines Netzwerks ist ein Fileserver eine allgemeine Ressource, die normalerweise von vielen verschiedenen Abteilungen für alle möglichen Aufgaben genutzt wird.

S3 ermöglicht Ihnen, für jede einzelne Anwendung, Gruppe oder sogar für einen einzelnen Benutzer einen Bucket zu verwenden. Aus Sicherheitsgründen (und für Ihre mentale Stabilität als Sysadmin) möchten Sie, dass die Nutzung dieses Buckets so begrenzt wie möglich zugewiesen und für eine einzige Aufgabe verwendet wird.

Eine beträchtliche Anzahl der unbeabsichtigten Datensicherheitsverstößen auf S3 scheint durch öffentlich zugängliche S3-Buckets (für Websites) verursacht worden zu sein, die auch (wahrscheinlich zufällig) für die Speicherung sensibler Informationen verwendet wurden.

S3-Buckets

Sidebar: Ein Warnsignal findet sich oft in der Bucket-Benennung. Generische, allgemeine Namen wie : ‘mycompany’ oder ‘data-store’ bringen Probleme mit sich. Idealerweise sollten Sie eine Namenskonvention einrichten, wie etwa: companyname-production/staging/development-applicationname

Bucket-Richtlinien

Richtlinien sind übergeordnete Rechtestrukturen für Buckets. Sie definieren:

  • Wer Zugriff auf ein Bucket hat (welche Benutzer/Principals)
  • Wie der Zugriff darauf erfolgt (nur http, über MFA)
  • Von wo aus der Zugriff darauf erfolgt (eine Virtual Private Cloud, spezielle IP)

Richtlinien werden in JSON-Blöcken definiert, die Sie entweder selbst von Hand schreiben oder mithilfe des AWS-Richtliniengenerators erstellen können – https://awspolicygen.s3.amazonaws.com/policygen.html.

AWS-Richtliniengenerators

Der wichtigste Vorteil bei der Organisation Ihrer Buckets in eng definierten Rollen: Ihre Bucket-Richtlinien werden um ein Vielfaches einfacher sein, da Sie nicht versuchen müssen, widersprüchliche Policy Statements herauszufinden oder sich durch (bis zu 20kb!) von JSON durchzukämpfen, um die Auswirkungen einer Änderung auszuprobieren und zu begründen.

Beispiel einer Bucket-Richtlinie

{
“Version”: “2012-10-17”,
“Id”: “S3PolicyId1”,
“Statement”: [
{
“Sid”: “IPAllow”,
“Effect”: “Allow”,
“Principal”: “*”,
“Action”: “s3:*”,
“Resource”: “arn:aws:s3:::examplebucket/*”,
“Condition”: {
“IpAddress”: {“aws:SourceIp”: “54.240.143.0/24”},
“NotIpAddress”: {“aws:SourceIp”: “54.240.143.188/32”}
}
}
]
}

Begrenzte Buckets bedeuten einfachere Richtlinien, was wiederum bedeutet, dass die Wahrscheinlichkeit geringer ist, versehentlich Benutzern zu viele Rechte zu erteilen – und damit unbeabsichtigt einen Datenverstoß zu begehen.

Denken Sie bei Bucket-Richtlinien daran, wie die Daten gehandhabt werden sollten.

IAM-Richtlinien in S3

IAM-Richtlinien für Identitäts- und Zugriffsverwaltung legen fest, welche Rechte ein Benutzer bzw. eine Gruppe für eine Ressource in AWS (nicht nur S3) hat.

Sie können sowohl IAM- als auch Bucket-Richtlinien gleichzeitig anwenden: Hierdurch werden gemäß dem Prinzip der minimalen Rechtevergabe der beiden Policies die Zugriffsrechte berechnet und entsprechend durchgesetzt.

Weiterführende Texte: IAM-Richtlinien und Bucket-Richtlinen und ACLs! Mein Güte!

VPC-Endgeräte in S3

Ein sehr leistungsfähiges, aber oft unzureichend genutztes Werkzeug zur Sicherung von AWS-Diensten ist die Unterteilung von Anwendungen in verschiedene logisch getrennte Anwendungsgruppen innerhalb einer Virtual Private Cloud.

Im Vergleich zu einer simplen Zuordnung eines Buckets für einen bestimmten Zweck handelt es sich bei einem VPC um eine logisch separierte Reihe von Amazon Web Services (einschließlich S3), die für maximale Sicherheit abgeriegelt werden können.

Die meisten großen Datenverstöße im Zusammenhang mit S3 hatten NICHTS mit Websites zu tun. Unternehmen nutzen eine Vielzahl von AWS Tools wie RedShift und Quicksite, um große Mengen an (potentiell) sensiblen Daten zu analysieren: Analysen, Berichte und Rohdaten, die nicht in einem öffentlichen Netzwerk platziert werden sollten.

Das optimale Tool für die Trennung solcher Daten ist die Virtual Private Cloud von AWS. Mit VPC können Sie eine Reihe von Diensten definieren, die sich nicht mit dem Internet verbinden lassen und auf die nur über eine VPN-Verbindung (IPSEC) an den VPC zugegriffen werden kann.

Stellen Sie sich einen über VPN verbundenen VPC als separaten Bereich Ihres internen Netzwerks vor – denn Ressourcen wie S3 innerhalb des VPC sind nicht öffentlich zugänglich:

  • Ein Bot, der nach offenen Buckets scannt, wird diese nicht sehen können.
  • Ihr neuer Informatiker kann einen Bucket nicht versehentlich öffentlich zugänglich lassen, nur weil er versucht hat, einen Bericht herunterzuladen.
  • Benutzer, die tagtäglich diese Dienste verwenden, müssen nicht herausfinden, ob ihre Aktionen Chaos und Verwüstung verursachen werden.

Ermöglichen Sie S3-Protokollierung

Standardmäßig verwaltet S3 keine Zugriffsprotokolle für Objekte (Dateien) in einem Bucket. Sie können pro Bucket angeben, dass Zugriffsprotokolle für einen anderen S3-Bucket verfasst werden.

http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html

S3-Protokollierung

Wenn Sie den Zugriff regelmäßig überprüfen, haben Sie einen besseren Überblick darüber, ob und wie Ihre Daten von einem unbekannten Ort aus abgerufen werden oder wie und wann es im Falle eines Datenmissbrauchs zu einem Abfließen gekommen ist.

S3 speichert Rohprotokolle in den protokollierenden Bucket. Dort können Sie die Daten mit verschiedenen Open Source-Tools analysieren, wie etwa:

AWS AthenaErst kürzlich wurde AWS Athena veröffentlicht. Es ist ein neuer Dienst, über den Sie direkt SQL-Abfragen nach strukturierten Datenquellen wie JSON, CSV und Protokolldateien, die in S3 gespeichert wurden, ausführen können.

Fazit

AWS S3 ist ein leistungsfähiger und extrem nützlicher Dienst, der die Fähigkeiten von IT- und Anwendungsgruppen erweitert. Richtig verwaltet, kann es ein sicheres und leistungsfähiges Werkzeug für die Datenspeicherung und Basis für komplexere Anwendungen sein.

Über folgende Schritte können Sie Ihre Daten auf AWS S3 schützen:

  1. Überprüfen Sie, welche Ihrer S3 Buckets über das (öffentliche) Internet zugänglich sind
  2. Teilen Sie S3 Buckets jeweils pro Anwendung oder Modul auf
  3. Trennen Sie unterschiedliche Belange durch VPC S3-Endpunkte
  4. Protokollieren Sie alles