Türchen #16: S3 Security Best Practices


S3 (Amazon Simple Storage Service) war der erste Service von AWS und kann heute als einer der grundlegendsten Services bezeichnet werden. In den vergangen Jahren hat sich S3 gemausert und ist nicht nur eine einfache Dateiablage.

Heute möchten wir auf einige grundlegende Best-Practices bei der Nutzung von S3 eingehen.


Verschlüsselung ist Pflicht

Verschlüsselt S3 Buckets. Insbesondere wenn personenbezogene Daten in Buckets abgelegt werden, ergibt sich eine Verpflichtung zur Verschlüsselung. Es gibt zwei Möglichkeiten:

  • SSE-S3 - Serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln.
  • AWS-KMS - Serverseitige Verschlüsselung mit von AWS KMS verwalteten Schlüsseln.


Datentransfer verschlüsseln (TLS)

Sofern die S3 Buckets bereits verschlüsselt sind (data in rest), macht es auch Sinn den Transfer der Daten zu verschlüsseln. Wir können die Nutzung von TLS beim Transfer erzwingen. Die folgende Bucket Policy erzwingt einen mit TLS verschlüsselten Transfer (data in transit):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [ 
          "123456780123" 
        ]
      },
      "Action": "s3:Get*",
      "Resource": "arn:aws:s3:::example-bucket/*"
    },
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "*",
      "Resource": "arn:aws:s3:::example-bucket/*",
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "false"
        }
      }
    }
  ]
}

Versionierung einschalten

Jeder kennt es. Ein falscher Klick und die Dateien sind weg. Gut, wenn dann ein Backup verfügbar ist. Noch einfacher geht es natürlich, wenn eine Versionierung der Daten erfolgt und somit die letzten Versionen der Dateien per Klick verfügbar sind.

Unser Tipp: Versionierung einschalten.


Object Lock - WORM (Write Once Read Many) -Funktionalität

Mit aktiviertem Object Lock kann man eine WORM Funktionalität erzeugen. Ein Object Lock ist nur bei der Erstellung von Buckets aktivierbar. Die Voraussetzung für die Aktivierung von Object Lock ist eine aktivierte Versionierung.

Nachdem der Bucket erstellt wurde, können unter Eigenschaften des Buckets die entsprechenden Einstellungen konfiguriert werden.


MFA (2-Faktor) als Löschschutz

Um sicherzustellen, dass nicht Objekte in S3 einfach gelöscht werden können, kann die Hürde für Löschanfragen noch ein Stück höher gelegt werden. Mit MFA reicht es nicht nur, die entsprechende Löschanforderung zu stellen, es muss auch mit dem hinterlegten MFA-Device die Löschanforderung bestätigt werden. Zwei Faktoren halt - bei kritischen Daten sehr zu empfehlen.


Block Public Access

Auf Grund der Tatsache, dass offensichtlich viele Benutzer aus Versehen S3 Buckets für den öffentlichen Zugriff konfiguriert haben, hat AWS reagiert: Standardmäßig wird der öffentliche Zugriff auf S3 Buckets blockiert. Sofern kein öffentlicher Zugriff erfolgen soll, lasst den Schutz aktiviert.

Darüberhinaus wäre die Empfehlung öffentliche Buckets in einem separaten Account bereitzustellen.


Nutzung von Zugriffspunkten - mehr Sicherheit und mehr Kontrolle

Zugriffspunkte bieten mehrere Vorteile. Nicht nur, dass Zugriffspunkte die Möglichkeit bieten, dass der Zugriff auf Buckets ausschließlich über ein definiertes VPC erfolgt, auch bieten die Zugriffspunkte die Möglichkeit über sogenannte Zugriffspunktrichtlinien den Zugriff auf Buckets, Ordner etc. granular zu konfigurieren.


Zugriff weitgehend einschränken

Wir stellen immer wieder fest, dass auf Grund von wenig Zeit und “mal eben” zum Testen, die Berechtigungen auf Ressourcen großzügig vergeben werden. Ein Auditor wird sich freuen, wenn nur der Zugriff auf entsprechende Ressourcen erlaubt ist, der wirklich notwendig ist.

Vergebt nur die notwendigen Rechte für den Zugriff auf Ressourcen.


Compliance Checks für S3 Konfigurationen

AWS Config sollte grundsätzlich beim “Baselining” von AWS Accounts immer Anwendung finden. Auch für S3 gibt es bereits vorgefertigte Regeln, die es vereinfachen, obige Einstellungsempfehlungen zu überwachen:

  • s3-bucket-versioning-enabled
  • s3-bucket-server-side-encryption-enabled
  • s3-bucket-ssl-requests-only

Service-Kontrollrichtlinien (SCPs)

Service-Kontrollrichtlinien (SCPs) bieten eine zentrale Kontrolle über die maximal verfügbaren Berechtigungen für alle Konten in Ihrer Organisation, sodass Sie sicherstellen können, dass Ihre Konten innerhalb der Richtlinien für die Zugriffskontrolle Ihrer Organisation bleiben. Diese Richtlinie bietet zentral die Möglichkeiten, Aktionen für S3 organisationsweit einzuschränken. Wenn niemand in der Organisation S3 Buckets erstellen soll, dann kann das hier für alle Accounts innerhalb der Organisation festgelegt werden.

Weiterführende Informationen

Zurück zu den Blogbeiträgen

Trainings und Workshops

Vom Kurs für Einsteiger bis hin zu Experten-Workshops mit Tiefgang können wir Euch mit technischen Trainings unterstützen. Darüber hinaus bieten wir auch Workshops mit Fokus auf Cloud-Strategie oder für die Vertriebsmannschaft an.

Mehr...