Strikte Transportsicherheit auf CloudFront mit S3-Ursprung?

6

Die Website meines Unternehmens verfügt aus Geschwindigkeits- und Kostengründen über eine statische Homepage. Wir verwenden S3 als Ursprung für CloudFront. Jetzt möchten wir Strict-Transport-Security für die gesamte Domain deklarieren, aber S3 scheint keine von uns angegebenen Header zu senden (über diejenigen hinaus, die mit x-aws-- beginnen). CloudFront scheint auch keine benutzerdefinierte Header-Option zu haben.

Ist das möglich?

StackExchange-Benutzer
quelle
Nicht direkt möglich, obwohl es einige denkbare Problemumgehungen gibt ... Welchen Nutzen bietet Ihnen HTTP STS, wenn die Site zu 100% statisch ist? Oder möchten Sie es auf der "gesamten Domain" für Nebenwirkungen ... in dem Sinne, dass eine an die Hauptwebsite gerichtete Anfrage (?) Auch allen Subdomains STS auferlegt?
Michael - sqlbot
1
Michael Während die Homepage statisch ist, ist unser Backend nicht. Es ist auf einer Subdomain. Ja, das ist das Ziel.
StackExchange User

Antworten:

0

Davids Antwort verweist auf die Dokumente , die sich auf Folgendes beschränken:

  1. Erstellen Sie eine Lambda-Funktion wie folgt. Beachten Sie, dass Lambda @ Edge im Vergleich zu anderen Lambda-Funktionen nur eine begrenzte Anzahl von Laufzeiten und einige zusätzliche Einschränkungen aufweist. Beispielsweise müssen alle Funktionen in erstellt werden us-east-1- CloudFront repliziert sie automatisch in andere Regionen - Ebenen werden nicht unterstützt, und alle Trigger müssen eine explizite ARN verwenden - keine Aliase oder verwenden $LATEST.
'use strict';
exports.handler = (event, context, callback) => {
  const response = event.Records[0].cf.response;
  const headers = response.headers;

  headers['strict-transport-security'] = [{
    key: 'Strict-Transport-Security',
    /* 
     * verify that max-age and 'includeSubdomains' are the settings you want
     */
    value: 'max-age=31536000; includeSubdomains; preload' 
  }];

  callback(null, response);
};
  1. Veröffentlichen Sie eine Version und stellen Sie sie für Lambda @ Edge bereit. Sie können keinen $LATESTAlias ​​für den nächsten Schritt verwenden.
  2. Verknüpfen Sie die veröffentlichte Funktionsversion mit einer CloudFront-Distribution. Wenn dies eine einmalige Aufgabe ist, ist es wahrscheinlich einfacher, sie über die Lambda-Konsole auszuführen . Wenn Sie Ihre Funktion mehreren Distributionen zuordnen möchten, ist es wahrscheinlich einfacher, die CloudFront-Konsole zu verwenden .
  3. Sie möchten den Ereignistyp als origin-response(zwischen S3 und dem Cache) oder viewer-response(zwischen Cache und Browser) festlegen und die ARN mit der oben veröffentlichten Version angeben - z

    arn:aws:lambda:us-east-1:1234567890:function:MY-FUNCTION-NAME:v1

  4. Warten Sie, bis die Distribution aktualisiert wurde, und testen Sie, ob die Header in der Antwort vorhanden sind

Curtis Mattoon
quelle