Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Beschränken des Zugriffs auf Application Load Balancer
Sie können sowohl interne als auch über das Internet zugängliche Application Load Balancer mit Amazon verwenden. CloudFront Sie können interne Application Load Balancer in privaten Subnetzen verwenden, indem Sie VPC-Ursprünge verwenden. CloudFront CloudFront VPC-Ursprünge ermöglichen es Ihnen, Inhalte von Anwendungen bereitzustellen, die in privaten VPC-Subnetzen gehostet werden, ohne sie dem öffentlichen Internet zugänglich zu machen. Weitere Informationen finden Sie unter Zugriffsbeschränkung mit VPC-Ursprüngen.
Wenn Sie einen mit dem Internet verbundenen Application Load Balancer mit verwenden, können Sie mithilfe der folgenden Sicherheitsmaßnahmen verhindern CloudFront, dass Benutzer direkt auf einen Application Load Balancer zugreifen, und den Zugriff nur über diesen zulassen. CloudFront
-
Konfigurieren Sie CloudFront die Konfiguration so, dass Anforderungen, die an den Application Load Balancer gesendet werden, mit einem benutzerdefinierten HTTP-Header versehen werden.
-
Konfigurieren Sie den Application Load Balancer so, dass nur Anforderungen weitergeleitet werden, die den benutzerdefinierten HTTP-Header enthalten.
-
Fordern Sie HTTPS an, um die Sicherheit dieser Lösung zu verbessern.
CloudFront kann auch dazu beitragen, die Latenz zu reduzieren und sogar einige Distributed-Denial-of-Service (DDoS) -Angriffe abzufangen.
Wenn Ihr Anwendungsfall den doppelten Zugriff auf Webanwendungen sowohl von beiden als auch CloudFront von Application Load Balancer direkt über das Internet erfordert, sollten Sie erwägen, Ihre Webanwendungs-APIs wie folgt aufzuteilen:
APIs, die durchgehen müssen. CloudFront In diesem Fall sollten Sie erwägen, einen separaten privaten Application Load Balancer als Ursprung zu verwenden.
APIs, die Zugriff über Application Load Balancer erfordern. In diesem Fall umgehen Sie CloudFront.
Alternativ können Sie für eine Webanwendung oder andere Inhalte, die von einem mit dem Internet verbundenen Application Load Balancer in Elastic Load Balancing bereitgestellt CloudFront werden, Objekte zwischenspeichern und sie Benutzern (Zuschauern) direkt zur Verfügung stellen, wodurch die Last auf Ihrem Application Load Balancer reduziert wird. Ein mit dem Internet verbundener Load Balancer hat einen öffentlich auflösbaren DNS-Namen und leitet Anforderungen von Clients über das Internet an Ziele weiter.
Weitere Informationen finden Sie unter den folgenden Themen. Nachdem Sie diese Schritte abgeschlossen haben, können Benutzer nur noch über diesen auf Ihren Application Load Balancer zugreifen. CloudFront
Konfigurieren Sie CloudFront , um Anfragen einen benutzerdefinierten HTTP-Header hinzuzufügen
Sie können so konfigurieren CloudFront , dass den Anforderungen, die an Ihren Ursprung gesendet werden, ein benutzerdefinierter HTTP-Header hinzugefügt wird (in diesem Fall ein Application Load Balancer).
Wichtig
Dieser Anwendungsfall beruht darauf, den Namen und den Wert des benutzerdefinierten Headers geheim zu halten. Wenn der Header-Name und der Wert nicht geheim sind, könnten andere HTTP-Clients sie möglicherweise in Anfragen aufnehmen, die sie direkt an den Application Load Balancer senden. Dies kann dazu führen, dass sich der Application Load Balancer so verhält, als kämen die Anfragen von einem Ort, an dem CloudFront sie nicht stammen. Um dies zu verhindern, halten Sie den Namen und den Wert des benutzerdefinierten Headers geheim.
Sie können mithilfe der CloudFront Konsole oder der CloudFront API konfigurieren CloudFront , dass den ursprünglichen Anfragen ein benutzerdefinierter HTTP-Header hinzugefügt wird. CloudFormation
- Um einen benutzerdefinierten HTTP-Header hinzuzufügen (CloudFront Konsole)
-
Verwende in der CloudFront Konsole die Einstellung für benutzerdefinierte Origin-Header in den Origin-Einstellungen. Geben Sie den Header-Namen und seinen Wert ein.
Anmerkung
Verwenden Sie in der Produktion zufällig generierte Header-Namen und -Werte. Behandeln Sie Header-Namen und -Werte wie sichere Anmeldeinformationen, wie Benutzernamen und Passwörter.
Du kannst die Origin-Einstellung für benutzerdefinierte Header bearbeiten, wenn du einen Origin für eine bestehende CloudFront Distribution erstellst oder bearbeitest und wenn du eine neue Distribution erstellst. Weitere Informationen erhalten Sie unter Eine Verteilung aktualisieren und Eine Distribution erstellen.
- So fügen Sie einen benutzerdefinierten HTTP-Header hinzu (CloudFormation)
-
Verwenden Sie die
OriginCustomHeadersEigenschaft in einer CloudFormation Vorlage, wie im folgenden Beispiel gezeigt.Anmerkung
Der Header-Name und der Wert in diesem Beispiel dienen nur zur Demonstration. Verwenden Sie in der Produktion zufällig generierte Werte. Behandeln Sie den Namen und den Wert des Headers als sichere Berechtigung, ähnlich einem Benutzernamen und einem Passwort.
AWSTemplateFormatVersion: '2010-09-09' Resources: TestDistribution: Type: 'AWS::CloudFront::Distribution' Properties: DistributionConfig: Origins: - DomainName: app-load-balancer.example.com Id: Example-ALB CustomOriginConfig: OriginProtocolPolicy: https-only OriginSSLProtocols: - TLSv1.2 OriginCustomHeaders: - HeaderName: X-Custom-Header HeaderValue: random-value-1234567890 Enabled: 'true' DefaultCacheBehavior: TargetOriginId: Example-ALB ViewerProtocolPolicy: allow-all CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6 PriceClass: PriceClass_All ViewerCertificate: CloudFrontDefaultCertificate: 'true'Weitere Informationen finden Sie unter Origin und OriginCustomHeader Eigenschaften im AWS CloudFormation Benutzerhandbuch.
- Um einen benutzerdefinierten HTTP-Header (CloudFront API) hinzuzufügen
-
Verwenden Sie in der CloudFront API das darin
CustomHeadersenthaltene ObjektOrigin. Weitere Informationen finden Sie unter CreateDistribution und UpdateDistribution in der CloudFront Amazon-API-Referenz sowie in der Dokumentation für Ihr SDK oder einen anderen API-Client.
Es gibt einige Header-Namen, die Sie nicht als benutzerdefinierte Ursprungs-Header angeben können. Weitere Informationen finden Sie unter Benutzerdefinierte Header, die nicht zu CloudFront ursprünglichen Anfragen hinzugefügt werden können.
Konfigurieren eines Application Load Balancers zum Weiterleiten von Anforderungen, die einen bestimmten Header enthalten
Nachdem Sie den Anforderungen CloudFront , die er an Ihren Application Load Balancer sendet, einen benutzerdefinierten HTTP-Header hinzugefügt haben (siehe vorheriger Abschnitt), können Sie den Load Balancer so konfigurieren, dass er nur Anfragen weiterleitet, die diesen benutzerdefinierten Header enthalten. Dazu fügen Sie eine neue Regel hinzu und ändern die Standardregel im Listener Ihres Load Balancers.
Voraussetzungen
Um die folgenden Verfahren verwenden zu können, benötigen Sie einen Application Load Balancer mit mindestens einem Listener. Wenn Sie noch keinen erstellt haben, lesen Sie Create an Application Load Balancer im Benutzerhandbuch für Application Load Balancer.
Die folgenden Verfahren ändern einen HTTPS-Listener. Sie können den gleichen Prozess verwenden, um einen HTTP-Listener zu ändern.
So aktualisieren Sie die Regeln in einem Application Load Balancer-Listener
-
Fügen Sie eine neue Regel hinzu. Folgen Sie den Anleitungen unter Regel hinzufügen mit den folgenden Änderungen:
Fügen Sie die Regel dem Load Balancer hinzu, der der Ursprung Ihrer Distribution ist. CloudFront
Wählen Sie für Bedingung hinzufügen die Option HTTP-Header aus. Geben Sie den Namen und den Wert des HTTP-Headers an, den Sie als benutzerdefinierten Quell-Header hinzugefügt haben. CloudFront
Wählen Sie für Aktion hinzufügen die Option Weiterleiten an aus. Wählen Sie die Zielgruppe aus, in die Sie Anfragen weiterleiten möchten.
-
Bearbeiten Sie die Standardregel im Listener Ihres Load Balancers. Folgen Sie den Anleitungen unter Bearbeiten einer Regel mit den folgenden Änderungen:
Bearbeiten Sie die Standardregel des Load Balancers, der der Ursprung Ihrer CloudFront Distribution ist.
Löschen Sie die Standardaktion und wählen Sie dann für Aktion hinzufügen die Option Feststehende Antwort zurückgeben aus.
Geben Sie für den Antwortcode
403ein.Geben Sie für den Antworttext
Access deniedein.
Nachdem Sie diese Schritte ausgeführt haben, hat Ihr Load Balancer-Listener zwei Regeln. Eine Regel leitet Anfragen weiter, die den HTTP-Header enthalten (Anfragen, die von CloudFront stammen). Die andere Regel sendet eine feste Antwort auf alle anderen Anfragen (Anfragen, von denen nicht stammt CloudFront).
Sie können überprüfen, ob die Lösung funktioniert, indem Sie eine Anfrage an Ihre CloudFront Distribution und eine an Ihren Application Load Balancer senden. Die Anfrage an sendet Ihre Webanwendung oder Ihren Inhalt CloudFront zurück, und die Anfrage, die direkt an Ihren Application Load Balancer gesendet wird, gibt eine 403 Antwort mit der Klartextnachricht zurück. Access denied
(Optional) Verbesserung der Sicherheit dieser Lösung
Um die Sicherheit dieser Lösung zu verbessern, können Sie Ihre CloudFront Distribution so konfigurieren, dass beim Senden von Anfragen an Ihren Application Load Balancer immer HTTPS verwendet wird. Denken Sie daran, dass diese Lösung nur funktioniert, wenn Sie den benutzerdefinierten Header-Namen und den Wert geheim halten. Die Verwendung von HTTPS kann dazu beitragen, dass ein Spion den Namen und den Wert des Headers entdeckt. Wir empfehlen außerdem, den Namen und den Wert des Headers regelmäßig zu wechseln.
Verwenden von HTTPS für Origin-Anfragen
Um die Verwendung von HTTPS für Quellanfragen CloudFront zu konfigurieren, setzen Sie die Origin Protocol Policy-Einstellung auf Nur HTTPS. Diese Einstellung ist in der CloudFront Konsole und in der CloudFront API verfügbar. CloudFormation Weitere Informationen finden Sie unter Protokoll (nur benutzerdefinierte Ursprünge).
Folgendes gilt auch, wenn Sie CloudFront die Verwendung von HTTPS für Quellanfragen konfigurieren:
-
Sie CloudFront müssen so konfigurieren, dass der
HostHeader mit der Quellanforderungsrichtlinie an den Ursprung weitergeleitet wird. Sie können die Richtlinie für AllViewer verwaltete Ursprungsanfragen verwenden. -
Stellen Sie sicher, dass Ihr Application Load Balancer über einen HTTPS-Listener verfügt (wie im vorherigen Abschnitt gezeigt). Weitere Informationen finden Sie unter Erstellen eines HTTPS-Listeners im Benutzerhandbuch für Application Load Balancers. Für die Verwendung eines HTTPS-Listeners benötigen Sie ein SSL/TLS Zertifikat, das dem Domainnamen entspricht, der an Ihren Application Load Balancer weitergeleitet wird.
-
SSL/TLS Zertifikate für CloudFront können nur im In (ACM) angefordert (oder importiert) werden.
us-east-1AWS-Region AWS Certificate Manager Da es CloudFront sich um einen globalen Dienst handelt, verteilt er das Zertifikat automatisch aus derus-east-1Region an alle Regionen, die Ihrer CloudFront Distribution zugeordnet sind.-
Wenn Sie beispielsweise einen Application Load Balancer (ALB) in der
ap-southeast-2Region haben, müssen Sie SSL/TLS Zertifikate sowohl in derap-southeast-2Region (für die Verwendung von HTTPS zwischen CloudFront und dem ALB-Ursprung) als auch in derus-east-1Region (für die Verwendung von HTTPS zwischen Zuschauern und) konfigurieren. CloudFront Beide Zertifikate sollten dem Domainnamen entsprechen, der an Ihren Application Load Balancer weitergeleitet wird. Weitere Informationen finden Sie unter AWS-Region for AWS Certificate Manager.
-
-
Wenn die Endbenutzer (auch als Viewer oder Kunden bezeichnet) Ihrer Webanwendung HTTPS verwenden können, können Sie auch so konfigurieren CloudFront , dass HTTPS-Verbindungen von Endbenutzern bevorzugt werden (oder sogar erforderlich sind). Verwenden Sie dazu die Einstellung Betrachter-Protokollrichtlinie. Sie können es so einstellen, dass Endbenutzer von HTTP auf HTTPS umgeleitet oder Anfragen, die HTTP verwenden, abgelehnt werden. Diese Einstellung ist in der CloudFront Konsole und in der CloudFront API verfügbar. CloudFormation Weitere Informationen finden Sie unter Viewer-Protokollrichtlinien.
Wechseln des Header-Namens und des Werts
Zusätzlich zur Verwendung von HTTPS empfehlen wir auch, den Header-Namen und -Wert regelmäßig zu ändern. Befolgen Sie hierfür die folgenden Schritte:
-
Konfigurieren Sie CloudFront die Konfiguration so, dass den Anforderungen, die an den Application Load Balancer gesendet werden, ein zusätzlicher benutzerdefinierter HTTP-Header hinzugefügt wird.
-
Aktualisieren Sie die Application Load Balancer-Listener-Regel, um Anforderungen weiterzuleiten, die diesen zusätzlichen benutzerdefinierten HTTP-Header enthalten.
-
Konfigurieren Sie CloudFront die Konfiguration so, dass der ursprüngliche benutzerdefinierte HTTP-Header nicht mehr zu Anfragen hinzugefügt wird, die an den Application Load Balancer gesendet werden.
-
Aktualisieren Sie die Application Load Balancer-Listener-Regel, um die Weiterleitung von Anforderungen zu beenden, die den ursprünglichen benutzerdefinierten HTTP-Header enthalten.
Weitere Informationen zum Ausführen dieser Schritte finden Sie in den vorherigen Abschnitten.
(Optional) Beschränken Sie den Zugriff auf Origin mithilfe der AWS-verwaltete Präfixliste für CloudFront
Um den Zugriff auf Ihren Application Load Balancer weiter einzuschränken, können Sie die dem Application Load Balancer zugeordnete Sicherheitsgruppe so konfigurieren, dass sie nur Datenverkehr akzeptiert, CloudFront wenn der Dienst eine verwaltete Präfixliste verwendet AWS. Dadurch wird verhindert, dass Datenverkehr, der nicht von CloudFront Ihnen stammt, Ihren Application Load Balancer auf der Netzwerkebene (Ebene 3) oder Transportebene (Schicht 4) erreicht.
Weitere Informationen finden Sie im CloudFront Blogbeitrag