Wie erlaube ich Kunden, die TLS 1.2 oder höher nicht verwenden, Zugriff auf meine Amazon-S3-Buckets?

Lesedauer: 8 Minute
0

Meine Kunden verwenden keine TLS-Version 1.2 oder höher, sodass sie nicht auf Inhalte zugreifen können, die in meinen Amazon Simple Storage Service (Amazon S3)-Buckets gespeichert sind. Wie erlaube ich diesen Kunden den Zugriff auf Inhalte in meinen Amazon-S3-Buckets mit TLS 1.0 oder 1.1?

Kurzbeschreibung

AWS setzt die Verwendung von TLS 1.2 oder höher auf allen AWS-API-Endpunkten durch. Um weiterhin eine Verbindung zu AWS-Services herzustellen, müssen Sie die gesamte Software aktualisieren, die TLS 1.0 oder 1.1 verwendet.

Auflösung

Amazon CloudFront ermöglicht die Verwendung älterer TLS-Versionen, indem Kunden vom TLS-Protokoll abstrahiert werden, das zwischen Ihrer CloudFront-Verteilung und Amazon S3 verwendet wird.

Erstellen einer CloudFront-Verteilung mit OAC

Mit CloudFront können Sie anonyme und öffentliche Anfragen an Ihre S3-Buckets unterstützen. Sie können Ihre S3-Buckets auch privat und nur über CloudFront zugänglich machen, indem Sie signierte Anforderungen für den Zugriff auf Ihre S3-Buckets verlangen.

Unterstützen von anonymen und öffentlichen Anfragen an Ihre S3-Buckets

Hinweis: Im folgenden Beispiel wird davon ausgegangen, dass Sie bereits einen S3-Bucket verwenden. Wenn Sie keinen S3-Bucket haben, erstellen Sie einen.

Erstellen Sie die CloudFront-Verteilung wie folgt:

  1. Öffnen Sie die CloudFront-Konsole.
  2. Wählen Sie Verteilung anlegen.
  3. Wählen Sie unter Origin für Origin-Domäne den REST-API-Endpunkt Ihres S3-Buckets aus der Dropdown-Liste aus.
  4. Wählen Sie für Viewer-Protokollrichtlinie die Option HTTP auf HTTPS umleiten aus.
  5. Wählen Sie für zugelassene HTTP-Endpunkte GET, HEAD, OPTIONS aus, um Leseanforderungen zu unterstützen**.**
  6. Wählen Sie im Abschnitt Origin-Zugriff die Einstellungen für die Origin-Zugriffskontrolle (empfohlen) aus.
  7. Wählen Sie Kontrolleinstellung erstellen aus und verwenden Sie den Standardnamen. Wählen Sie für das Signierungsverhalten die Option Anforderungen signieren (empfohlen) aus und wählen Sie Erstellen aus. Die vom OAC empfohlenen Einstellungen authentifizieren die Anfrage des Betrachters automatisch.
  8. Wählen Sie die Identität in der Dropdownliste aus**.** Nachdem die Verteilung erstellt wurde , aktualisieren Sie die Bucket-Richtlinie, um den Zugriff auf OAC einzuschränken.
  9. Wählen Sie unter Standard-Cacheverhalten, Viewer die Option HTTP auf HTTPS umleiten für Viewer-Protokollrichtlinie aus und belassen Sie die anderen Einstellungen als Standard.
  10. Wählen Sie unter Cache-Schlüssel und Ursprungsanfragen die Option Cache-Richtlinie und Richtlinie für Ursprungsanfragen (Empfohlen). Verwenden Sie dann CachingOptimized für die Cache-Richtlinie und CORS-S3Origin für die Origin-Anforderungsrichtlinie.
  11. Wählen Sie Verteilung erstellen aus, und warten Sie dann, bis der Status auf Aktiviert aktualisiert wird.

Erfordern von signierten Anforderungen für den Zugriff auf Ihre S3-Buckets

Verleihen Sie Ihren S3-Buckets Sicherheit, indem Sie nur signierte Anforderungen unterstützen. Bei signierten Anforderungen folgt OAC Ihren Authentifizierungsparametern und leitet sie an den S3-Ursprung weiter, der dann anonyme Anfragen ablehnt.

Erstellen Sie eine CloudFront-Verteilung, die signierte Anforderungen für den Zugriff auf Ihre S3-Buckets erfordert, wie folgt:

  1. Öffnen Sie die CloudFront-Konsole.
  2. Wählen Sie Verteilung anlegen.
  3. Wählen Sie unter Origin für Origin-Domäne den REST-API-Endpunkt Ihres S3-Buckets aus der Dropdown-Liste aus.
  4. Wählen Sie für Viewer-Protokollrichtlinie die Option HTTP auf HTTPS umleiten aus.
  5. Wählen Sie für zugelassene HTTP-Endpunkte GET, HEAD, OPTIONS aus, um Leseanforderungen zu unterstützen**.**
  6. Wählen Sie im Abschnitt Origin-Zugriff die Einstellungen für die Origin-Zugriffskontrolle (empfohlen) aus.
  7. Blockieren Sie alle nicht signierten Anforderungen, indem Sie die Option Anfragen nicht signieren aktivieren.
    Hinweis: Das Blockieren nicht signierter Anfragen erfordert, dass jeder Kunde seine Anfragen signiert, damit der S3-Ursprung die Berechtigungen auswerten kann.
  8. Erstellen Sie eine benutzerdefinierte Cache-Richtlinie, um den Autorisierungsheader des Kunden an den Ursprung weiterzuleiten.
  9. Wählen Sie unter Cache-Schlüssel und Ursprungsanfragen die Option Cache-Richtlinie und Richtlinie für Ursprungsanfragen (Empfohlen).
  10. Wählen Sie Richtlinie erstellen aus.
  11. Geben Sie im Abschnitt Name einen Namen für die Cache-Richtlinie ein.
  12. Gehen Sie unter Einstellungen für Cache-Schlüssel auf Header und wählen Sie die Option Folgende Header einbeziehen aus.
  13. Wählen Sie unter Header hinzufügen die Option Autorisierung aus.
  14. Wählen Sie Erstellen aus.

Kontrollieren der Sicherheitsrichtlinien des Kunden

Um eine Sicherheitsrichtlinie in CloudFront zu steuern, benötigen Sie eine benutzerdefinierte Domäne. Es ist eine bewährte Methode, einen alternativen Domänennamen für Ihre Verteilung anzugeben. Es ist auch eine bewährte Methode, ein benutzerdefiniertes SSL-Zertifikat zu verwenden, das in AWS Certificate Manager (ACM) konfiguriert ist. Das gibt Ihnen mehr Kontrolle über die Sicherheitsrichtlinie und Kunden können TLS 1.0 weiterhin verwenden. Weitere Informationen finden Sie unter Unterstützte Protokolle und Verschlüsselungen zwischen Besuchern und CloudFront.

Wenn Sie den Standarddomänennamen *.cloudfront.net verwenden, stellt CloudFront automatisch ein Zertifikat bereit und legt die Sicherheitsrichtlinie so fest, dass TLS 1.0 und 1.1 zulässig sind. Weitere Informationen finden Sie unter Verteilungseinstellungen.

Konfigurieren Sie einen alternativen Domänennamen für Ihre CloudFront-Verteilung wie folgt:

  1. Melden Sie sich in der AWS-Managementkonsole an und starten Sie CloudFront-Konsole.
  2. Wählen Sie die ID der Verteilung aus, die Sie aktualisieren möchten.
  3. Wählen Sie auf der Registerkarte Allgemein die Option Bearbeiten.
  4. Wählen Sie für Alternative Domänennamen (CNAMEs) die Option Element hinzufügen und geben Sie Ihren Domänennamen ein.
    Hinweis: Es ist eine bewährte Methode, einen benutzerdefinierten Canonical Name Record (CNAME) für den Zugriff auf Ihre Ressourcen zu verwenden. Die Verwendung eines CNAME gibt Ihnen mehr Kontrolle über das Routing und ermöglicht einen besseren Übergang für Ihre Kunden.
  5. Wählen Sie für Benutzerdefiniertes SSL-Zertifikat das benutzerdefinierte SSL-Zertifikat aus der Dropdown-Liste aus, das Ihren CNAME abdeckt, um es der Verteilung zuzuweisen.
    Hinweis: Weitere Informationen zum Installieren eines Zertifikats finden Sie unter Wie konfiguriere ich meine CloudFront-Verteilung für die Verwendung eines SSL/TLS-Zertifikats?
  6. Wählen Sie Verteilung erstellen und warten Sie, bis der Status auf Aktiviert aktualisiert wird.

Nachdem Sie die Verteilung erstellt haben, müssen Sie OAC den Zugriff auf Ihren Bucket erlauben. Führen Sie die folgenden Schritte aus:

  1. Navigieren Sie zur CloudFront-Konsolenseite und öffnen Sie Ihre CloudFront-Verteilung.
  2. Wählen Sie die Registerkarte Ursprünge, wählen Sie Ihren Ursprung aus, und klicken Sie dann auf Bearbeiten.
  3. Wählen Sie Richtlinie kopieren, öffnen Sie die Bucket-Berechtigung und aktualisieren Sie Ihre Bucket-Richtlinie.
  4. Öffnen Sie die Seite Gehe zu S3-Bucket-Berechtigungen.
  5. Wählen Sie unter Bucket-Richtlinie Bearbeiten aus. Fügen Sie die Richtlinie ein, die Sie zuvor kopiert haben, und wählen Sie dann Speichern. Wenn Ihre Bucket-Richtlinie mehr als das Lesen aus S3 erfordert, können Sie die erforderlichen APIs hinzufügen.

Wenn Sie einen benutzerdefinierten Domänennamen verwenden, ändern Sie Ihre DNS-Einträge so, dass sie die neue CloudFront-Verteilungs-URL verwenden. Wenn Sie keinen benutzerdefinierten Domänennamen verwenden, müssen Sie Ihren Benutzern die neue CloudFront-Verteilungs-URL bereitstellen. Außerdem müssen Sie alle Client- oder Gerätesoftware aktualisieren, die die alte URL verwendet.

Wenn Sie ein AWS SDK für den Zugriff auf Amazon-S3-Objekte verwenden, müssen Sie Ihren Code ändern, um reguläre HTTPS-Endpunkte zu verwenden. Stellen Sie außerdem sicher, dass Sie die neue CloudFront-URL verwenden. Wenn die Objekte nicht öffentlich sind und eine bessere Kontrolle erfordern, können Sie private Inhalte mit signierten URLs und signierten Cookies bereitstellen.

Verwenden von vorsignierten S3-URLs für den Zugriff auf Objekte

Wenn Ihr Workflow auf vorsignierten S3-URLs beruht, verwenden Sie eine CloudFront-Verteilung, um Ihre Abfrage an den S3-Ursprung weiterzuleiten. Generieren Sie zunächst eine vorsignierte URL für das gewünschte Objekt. Ersetzen Sie dann den Host in der URL durch den CloudFront-Endpunkt, um den Aufruf über CloudFront zuzustellen, und aktualisieren Sie das Verschlüsselungsprotokoll automatisch. Führen Sie den folgenden CLI-Befehl aus, um eine vorsignierte URL zu testen und zu generieren:

aws s3 presign s3://BUCKET_NAME/test.jpg

Beispielausgabe:

https://bucket_name.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=%5b...%5d%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=%5b...%5d&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature">https://BUCKET_NAME.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature    =[...]

Ändern Sie jetzt die S3-URL auf den neuen CloudFront-Endpunkt. Ersetzen Sie beispielsweise diese S3-URL:

BUCKET_NAME.s3.eu-west-1.amazonaws.com

mit diesem Endpunkt:

https://DISTRIBUTION_ID.cloudfront.net.

Beispielausgabe:

https://<DISTRIBUTION_ID>.cloudfront.net /test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature=[...]

Um vorsignierte URLs zu verwenden, wenden Sie die folgenden CloudFront-Einstellungen an:

  1. Legen Sie das OAC-Signaturverhalten auf Anfragen nicht signieren fest.
  2. Legen Sie die Richtlinie für die Ursprungsanforderung der CloudFront-Verteilung auf Origin-Anforderungseinstellungen fest: Header – Keine; Cookies – Keine; Abfragezeichenfolgen – Alle.
  3. Setzen Sie die Cache-Richtlinie auf Header – Keine; Cookies – Keine; Abfragezeichenfolgen – Keine.

In AWS CloudTrail wird die GET-Anforderung zum Herunterladen von einer vorsignierten S3-URL als Identität angezeigt, die die vorsignierte URL generiert hat.

Wenn Sie ein AWS SDK für den Zugriff auf S3-Objekte verwenden, müssen Sie Ihren Code so ändern, dass die vorsignierte URL verwendet wird. Verwenden Sie stattdessen eine reguläre HTTPS-Anfrage und die neue CloudFront-URL.

Bestätigen, dass Sie moderne Verschlüsselungsprotokolle für Amazon S3 verwenden

Um Ihre neue Richtlinie zu testen, verwenden Sie den folgenden Beispiel-curl-Befehl, um HTTPS-Anforderungen mit einem bestimmten Legacy-Protokoll zu stellen:

curl https://${CloudFront_Domain}/image.png -v --tlsv1.0 --tls-max 1.0

Der Beispiel-curl-Befehl stellt mithilfe von TLS 1.0 eine Anfrage an CloudFront. Dadurch wird über TLS 1.2 eine Verbindung zum S3-Ursprung hergestellt und die Datei erfolgreich heruntergeladen.

Es ist eine bewährte Methode, AWS CloudTrail Lake zu verwenden, um ältere TLS-Verbindungen zu AWS-Service-Endpunkten zu identifizieren. Sie können den Ereignisdatenspeicher von CloudTrail Lake so konfigurieren, dass Verwaltungsereignisse oder Datenereignisse erfasst werden. Das entsprechende CloudTrail-Ereignis in CloudTrail Lake zeigt TLS Version 1.2 an und bestätigt, dass Ihre Kunden moderne Sicherheitsrichtlinien verwenden, um eine Verbindung zu Amazon S3 herzustellen.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 7 Monaten