Ausgesperrt! - Vorsicht bei S3 Berechtigung per Bucket policy

AWS S3 bietet viele Möglichkeiten, den Zugriff zu regeln

S3 Buckets bieten flexible Möglichkeiten, Daten abzulegen und den Zugriff auf diese Daten zu beschränken. Dies für den öffentlichen (Internet) und internen Gebrauch. Über die normalen Berechtigungen (Permissions) lassen sich Berechtigungen ganz grob für “list” (Anzeigen), “upload/delete” (Schreiben), “view permissions” (Berechtigungen sehen) sowie “edit permission” (Berechtigungen schreiben) einstellen. Das reicht für viele Fälle, manchmal braucht man aber eine feinere Berechtigungsverwaltung, der bucket policy.

Die ist aber nicht ohne Fallstricke…

##Eine Bucket Policy ist nicht ohne Fallstricke**

Nimmt man das harmlos klingende Beispiel “Zugriff auf einen VPC Endpunkt beschränken”, so bekommt man folgende Beispiel Policy:

  {
    "Version": "2012-10-17",
    "Id": "Policy1415115909152",
    "Statement": [
      {
        "Sid": "Access-to-specific-VPCE-only",
        "Action": "s3:*",
        "Effect": "Deny",
        "Resource": ["arn:aws:s3:::examplebucket",
                      "arn:aws:s3:::examplebucket/*"],
        "Condition": {
          "StringNotEquals": {
            "aws:sourceVpce": "vpce-1a2b3c4d"
          }
        },
        "Principal": "*"
      }
    ]
  }

Die Werte sind in der Dokomentation gut beschrieben, hier will ich nur auf das gefährliche Element hinweisen: Mit dem “Effect” : “Deny” wird der Zugriff explizit verboten. Zusammen mit der Bedingung (Condition) Zeichenkette ungleich (StringNotEquals) schließt diese Policy alle Zugriffe aus, die diese Bedingung nicht erfüllen. Und das schließt den AWS Root Account mit ein! Macht man also bei der Erstellung so einer Policy den kleinsten Fehler, so kann man über die AWS Console nicht mehr auf den S3 Bucket zugreifen.

Zugriff wiederherstellen

Wie man dennoch wieder an die Daten herankommt, verraten wir hier:

  1. Kommandozeilenzugriff über die AWS CLI einrichten.
  2. Einen Access Key für root einrichten.
  3. Eine Policy, die den Zugriff erlaubt, wie im “Allow” Beispiel als Datei “policy.json” speichern
  4. Diese Policy einspielen
aws s3api put-bucket-policy --bucket MeinBucketName --policy file://policy.json_
  1. Jetzt sollte man über die Console wieder zugreifen können

“Allow” ist sicherer

Sicherer ist es, hier mit “Allow” zu arbeiten:

{
 "Version": "2012-10-17",
 "Id": "S3PolicyId1",
 "Statement": [
 {
 "Sid": "IPAllow",
 "Effect": "Allow",
 "Principal": "*",
 "Action": "s3:*",
 "Resource": "arn:aws:s3:::gg-blogartikel",
 "Condition": {
     "IpAddress": {
       "aws:SourceIp": "42.55.47.11/32"
     }
  }
 }
 ]
}

Mit dieser Policy wäre der Inhalt des Buckets auf die fiktive IP Adresse 42.55.47.11 beschränkt. Alle anderen Zugriff bekommen eine “Verboten” Meldung beim Zugriff: accessdenied Dieses Allow verbietet aber eben nicht den Zugriff über die AWS Console. Eine Besonderheit ist noch bei dem Feld “Ressource” zu beachten:

"arn:aws:s3:::gg-blogartikel"

Bezieht sich auf den gesamten Bucket. Will man sich auf alle Objekte im Bucket beziehen nimmt man:

"arn:aws:s3:::gg-blogartikel/*"

Zugriff auf den Bucket und alle Unterobjekte gibt man mit: "Resource": ["arn:aws:s3:::_`gg-blogartikel`_", "arn:aws:s3:::_`gg-blogartikel`_/*"],

Similar Posts You Might Enjoy

6 Tipps und Tricks für AWS Kommandozeilen Ninjas

Das AWS Command Line Interface (CLI) erlaubt es Ihnen AWS Services einfach und bequem zu verwalten. Mit dem CLI können Sie im Terminal interaktiv Aufgaben bewältigen ohne die AWS Management Console benutzen zu müssen, was einen höheren Automatisierungsgrad ermöglicht. Außerdem können Shell-Skripte mit der Hilfe des AWS CLI verwendet werden um Infrastruktur-Setups zu automatisieren. Ein Beispiel: mit einem kleinen Shell-Skript und der AWS CLI kann zum Beispiel am Ende des Boot-Prozesses einer EC2-Instanz ein EBS Volume verbunden oder ein DNS-Eintrag über Route 53 angepasst werden. - by Andreas Wittig

Verschlüsselung von Daten auf AWS S3

Das Thema Datensicherheit und damit auch Verschlüsselung ist bei unseren deutschen Amazon Web Services Kunden eigentlich ein Dauerthema. Amazon AWS trägt diesem Bedürfnis zunehmend mehr Rechnung und hat gerade gestern wieder eine entsprechende Erweiterung der S3 Dienste veröffentlicht. Hier nun eine Übersicht, über die von Amazon Web Services angebotenen Verschlüsselungsoptionen für Ihre Daten auf S3: - by Sven Ramuschkat

Verschlüsselung von Daten auf AWS S3

Das Thema Datensicherheit und damit auch Verschlüsselung ist bei unseren deutschen Amazon Web Services Kunden eigentlich ein Dauerthema. Amazon AWS trägt diesem Bedürfnis zunehmend mehr Rechnung und hat gerade gestern wieder eine entsprechende Erweiterung der S3 Dienste veröffentlicht. Hier nun eine Übersicht, über die von Amazon Web Services angebotenen Verschlüsselungsoptionen für Ihre Daten auf S3: Transparente Verschlüsselung auf Basis von Amazon AWS gemanagten Keys (bereits seit 11.2011 verfügbar): pro Datei (Objekt) auf S3 können Sie unter Properties / Details die Server Side Encryption mit AES256 manuell aktivieren. - by Sven Ramuschkat