Warum ist meine statische Website auf Amazon S3 immer noch über öffentliche IP-Adressen zugänglich, obwohl ich den Zugriff auf eine bestimmte Amazon VPC eingeschränkt habe?

Lesedauer: 4 Minute
0

Ich verwende Amazon Simple Storage Service (Amazon S3), um meine statische Website zu hosten. Ich habe eine Bucket-Richtlinie angehängt, die den Zugriff nur auf eine bestimmte Amazon Virtual Private Cloud (Amazon VPC) beschränkt. Ich kann jedoch weiterhin von öffentlichen IP-Adressen aus auf die Website zugreifen.

Auflösung

Bevor Sie das Problem beheben, sollten Sie unbedingt die folgenden Schritte ausführen:

  • Leeren Sie Ihren Webbrowser oder Proxy-Cache, damit Sie die neueste Konfiguration sehen können.
  • Vergewissern Sie sich, dass sich die Amazon Elastic Compute Cloud (Amazon EC2)-Instance, von der aus Sie auf den Bucket zugreifen, in derselben AWS-Region wie der Bucket befindet.
  • Ordnen Sie den VPC-Endpunkt der Routentabelle der von Ihnen verwendeten EC2-Instance zu. Auf diese Weise wird der Traffic mit der VPC-ID verknüpft, auf die in der Bucket-Richtlinie verwiesen wird.

Überprüfen Sie die Bucket-Richtlinie

Vergewissern Sie sich, dass die Bucket-Richtlinie den Zugriff auf den Bucket von der VPC aus zulässt. Um dies zu überprüfen, überprüfen Sie die Aussagen in Ihrer Bucket-Richtlinie. Die folgende Bucket-Richtlinien-Anweisung erlaubt beispielsweise s3:getObject unter der Bedingung, dass die Anforderung von vpc-id123456 stammt.

{
  "Version": "2012-10-17",
  "Id": "Policy1",
  "Statement": \[{
    "Sid": "Access-to-Trusted-VPC-only",
    "Effect": "Allow",
    "Principal": "\*",
    "Action": "s3:GetObject\*",
    "Resource": "arn:aws:s3:::awsexamplebucket/\*",
    "Condition": {
      "StringEquals": {
        "aws:sourceVpc": "vpc-id123456"
      }
    }
  }\]
}

Hinweis: Statisches Website-Hosting ermöglicht nicht authentifizierte (anonyme) Anfragen. Wenn sich ein Benutzer jedoch authentifiziert, können Sie ihm Zugriff auf der Grundlage seiner Anmeldeinformationen gewähren. Angenommen, ein Benutzer authentifiziert sich mit einer AWS Identity and Access Management (IAM)-Rolle, die vollen Zugriff auf Amazon S3 hat. Dieser Benutzer kann trotz der folgenden Bucket-Richtlinie weiterhin Objekte außerhalb der VPC herunterladen. Eine restriktivere Bucket-Richtlinie finden Sie unter Beschränken des Zugriffs auf eine bestimmte VPC. Durch die Beschränkung des Zugriffs auf eine bestimmte VPC wird selbst Administratorbenutzern oder Root-Benutzern des AWS-Kontos der Zugriff für Anfragen verweigert, die nicht von der VPC stammen.

Überprüfen Sie die Zugriffssteuerungsliste (ACL) des Objekts

Nachdem Sie bestätigt haben, dass die Bucket-Richtlinie korrekt ist, überprüfen Sie, ob Objekt-ACLs den öffentlichen Zugriff zulassen. Wenn einige Objekt-ACLs den öffentlichen Zugriff zulassen und Sie die ACLs überschreiben möchten, führen Sie eine der folgenden Aktionen aus:

  • Konfigurieren Sie die Einstellungen für den öffentlichen Zugriff für den einzelnen Bucket oder Ihr AWS-Konto.
  • Fügen Sie der Bucket-Richtlinie eine explizite Ablehnungsanweisung hinzu.

Um Objekt-ACLs zu überschreiben, verwenden Sie die Amazon S2-Konsole, um die öffentlichen Zugriffseinstellungen des einzelnen Buckets oder die Einstellungen Ihres Kontos für den öffentlichen Zugriff zu konfigurieren. Wählen Sie die folgenden Optionen aus:

  • Sperren Sie den öffentlichen Zugriff auf Buckets und Objekte, der über neue Zugriffskontrolllisten (ACLs) gewährt wurde
  • Blockieren Sie den öffentlichen Zugriff auf Buckets und Objekte, die über irgendwelche Zugriffskontrolllisten (ACLs) gewährt werden

Hinweis: Sie können auch AWS Command Line Interface (AWS CLI), ein AWS-SDK oder die Amazon S3-REST-API verwenden, um die Einstellungen für den öffentlichen Zugriff des Buckets zu konfigurieren. Weitere Informationen finden Sie unter Blockieren des öffentlichen Zugriffs auf Ihren Amazon S3-Speicher.

Um eine Bucket-Richtlinie zum Überschreiben von Objekt-ACLs zu verwenden, fügen Sie eine Anweisung hinzu, die Aktionen explizit verweigert, wenn die Anforderung nicht von der VPC stammt. Die folgende Bucket-Richtlinie enthält beispielsweise eine Anweisung, die s3:getObject explizit verweigert, wenn die Anforderung nicht von vpc-id123456 stammt.

Warnung: Da diese Bucket-Beispielrichtlinie eine explizite Verweigerungsanweisung enthält, sollten Sie die Parameter für eine explizite Zugriffsverweigerung überprüfen, bevor Sie die Richtlinie speichern. Wenn Sie versehentlich gesperrt werden, finden Sie weitere Informationen unter Ich habe versehentlich allen Zugriff auf meinen Amazon S3-Bucket verweigert. Wie erhalte ich wieder Zugriff?

{
  "Version": "2012-10-17",
  "Id": "Policy1",
  "Statement": \[{
      "Sid": "Access-to-Trusted-VPC-only",
      "Effect": "Allow",
      "Principal": "\*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::awsexamplebucket/\*",
      "Condition": {
        "StringEquals": {
          "aws:sourceVpc": "vpc-id123456"
        }
      }
    },
    {
      "Sid": "Deny-Access-Except-For-Trusted-VPC",
      "Effect": "Deny",
      "Principal": "\*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::awsexamplebucket/\*",
      "Condition": {
        "StringNotEquals": {
          "aws:sourceVpc": "vpc-id123456"
        }
      }
    }
  \]
}

Verwandte Informationen

AWS-Richtliniengenerator

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr