Ende-zu-Ende-Verschlüsselung in einer Umgebung mit Elastic Beanstalk-Load-Balancing konfigurieren - AWS Elastic Beanstalk

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.

Ende-zu-Ende-Verschlüsselung in einer Umgebung mit Elastic Beanstalk-Load-Balancing konfigurieren

Das Beenden sicherer Verbindungen am Load Balancer und das Verwenden von HTTP am Backend kann ausreichend für Ihre Anwendung sein. Der Netzwerkverkehr zwischen AWS-Ressourcen kann nicht von Instances überwacht werden, die nicht Teil der Verbindung sind, selbst wenn sie im selben Konto ausgeführt werden.

Wenn Sie jedoch eine Anwendung entwickeln, die strenge externe Vorschriften einhalten muss, müssen Sie ggf. alle Netzwerkverbindungen sichern. Sie können die Elastic Beanstalk-Konsole oder Konfigurationsdateien verwenden, damit der Load Balancer der Elastic Beanstalk-Umgebung eine sichere Verbindung zu Backend-Instances herstellt, um diese Anforderungen zu erfüllen. Die folgenden Schritte konzentrieren sich auf Konfigurationsdateien.

Zuerst fügen Sie einen sicheren Listener zu Ihrem Load Balancer hinzu, falls Sie dies noch nicht getan haben.

Sie müssen auch die Instances in Ihrer Umgebung so konfigurieren, dass sie auf dem sicheren Port überwachen und HTTPS-Verbindungen beenden. Die Konfiguration variiert je nach Plattform. Detaillierte Anweisungen finden Sie unter Konfigurieren Ihrer Anwendung, um HTTPS-Verbindungen auf der Instance zu beenden. Sie können ohne Probleme ein selbstsigniertes Zertifikat für die EC2-Instances verwenden.

Anschließend konfigurieren Sie den Listener für die Weiterleitung von Datenverkehr mithilfe von HTTPS auf den sicheren Port, der von Ihrer Anwendung verwendet wird. Verwenden Sie eine der folgenden Konfigurationsdateien, je nach Typ des Load Balancer, den Ihre Umgebung verwendet.

.ebextensions/https-reencrypt-clb.config

Verwenden Sie diese Konfigurationsdatei mit einem Classic Load Balancer. Neben der Konfiguration des Load Balancer ändert die Konfigurationsdatei auch die standardmäßige Zustandsprüfung, sodass Port 443 und HTTPS verwendet werden, um sicherzustellen, dass der Load Balancer in der Lage ist, eine sichere Verbindung herzustellen.

option_settings: aws:elb:listener:443: InstancePort: 443 InstanceProtocol: HTTPS aws:elasticbeanstalk:application: Application Healthcheck URL: HTTPS:443/

.ebextensions/https-reencrypt-alb.config

Verwenden Sie diese Konfigurationsdatei mit einem Application Load Balancer.

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' Protocol: HTTPS aws:elasticbeanstalk:environment:process:https: Port: '443' Protocol: HTTPS

.ebextensions/https-reencrypt-nlb.config

Verwenden Sie diese Konfigurationsdatei mit einem Network Load Balancer.

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' aws:elasticbeanstalk:environment:process:https: Port: '443'

Die Option DefaultProcess hat diesen Namen wegen Application Load Balancers, die Nicht-Standard-Listener auf demselben Port für Datenverkehr auf bestimmten Pfaden haben können (siehe Application Load Balancer für weitere Informationen). Bei einem Network Load Balancer gibt die Option den einzigen Zielprozess für diesen Listener an.

In diesem Beispiel haben wir den Prozess https genannt, da er sicheren (HTTPS) Datenverkehr überwacht. Der Listener sendet den Datenverkehr über das TCP-Protokoll an den Prozess auf dem festgelegten Port, da ein Network Load Balancer nur mit TCP funktioniert. Das ist in Ordnung, da der Netzwerkdatenverkehr für HTTP und HTTPS zusätzlich zu TCP implementiert ist.

Anmerkung

Die EB CLI und Elastic-Beanstalk-Konsole wenden die für die vorhergehenden Optionen empfohlenen Werte an. Diese Einstellungen müssen entfernt werden, wenn Sie Konfigurationsdateien zum Konfigurieren dieser Einstellungen verwenden möchten. Details dazu finden Sie unter Empfohlene Werte.

In der nächsten Aufgabe müssen Sie die Sicherheitsgruppe des Load Balancer so ändern, dass Datenverkehr zulässig ist. Abhängig von der Amazon Virtual Private Cloud (Amazon VPC) (die Standard-VPC oder eine benutzerdefinierte VPC), in der Sie Ihre Umgebung starten, variiert die Sicherheitsgruppe des Load Balancers. In einer Standard-VPC bietet Elastic Load Balancing eine Standard-Sicherheitsgruppe, die alle Load Balancer verwenden können. In einer von Ihnen erstellten Amazon VPC erstellt Elastic Beanstalk eine Sicherheitsgruppe, die der Load Balancer verwenden kann.

Zur Unterstützung beider Szenarien können Sie eine Sicherheitsgruppe erstellen und Elastic Beanstalk anweisen, diese zu verwenden. Die folgende Konfigurationsdatei erstellt eine Sicherheitsgruppe und fügt Sie an den Load Balancer an.

.ebextensions/https-lbsecuritygroup.config

option_settings: # Use the custom security group for the load balancer aws:elb:loadbalancer: SecurityGroups: '`{ "Ref" : "loadbalancersg" }`' ManagedSecurityGroup: '`{ "Ref" : "loadbalancersg" }`' Resources: loadbalancersg: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: load balancer security group VpcId: vpc-######## SecurityGroupIngress: - IpProtocol: tcp FromPort: 443 ToPort: 443 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 SecurityGroupEgress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0

Ersetzen Sie den markierten Text mit der Standard- oder benutzerdefinierten VPC-ID. Das vorherige Beispiel enthält ein- und ausgehenden Datenverkehr über Port 80, um HTTP-Verbindungen zuzulassen. Sie können diese Eigenschaften entfernen, wenn Sie nur sichere Verbindungen zulassen möchten.

Fügen Sie nun Eingangs- und Ausgangsregeln hinzu, mit denen die Kommunikation über Port 443 zwischen der Sicherheitsgruppe des Load Balancer und der Sicherheitsgruppe der Instances möglich ist.

.ebextensions/https-backendsecurity.config

Resources: # Add 443-inbound to instance security group (AWSEBSecurityGroup) httpsFromLoadBalancerSG: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 SourceSecurityGroupId: {"Fn::GetAtt" : ["loadbalancersg", "GroupId"]} # Add 443-outbound to load balancer security group (loadbalancersg) httpsToBackendInstances: Type: AWS::EC2::SecurityGroupEgress Properties: GroupId: {"Fn::GetAtt" : ["loadbalancersg", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 DestinationSecurityGroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}

Wenn Sie dies separat von der Erstellung der Sicherheitsgruppe durchführen, können Sie die Quell- und Zielsicherheitsgruppen beschränken, ohne einen Zirkelbezug zu erstellen.

Wenn alle vorherigen Aufgaben durchgeführt wurden, stellt der Load Balancer eine sichere Verbindung zu Ihren Backend-Instances über HTTPS her. Der Load Balancer berücksichtigt nicht, ob das Zertifikat der Instance selbstsigniert oder von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde, und akzeptiert alle Zertifikate, die im vorgelegt werden.

Sie können dieses Verhalten ändern, indem Sie Richtlinien zum Load Balancer hinzufügen, die besagen, dass nur einem bestimmten Zertifikat vertraut werden darf. Mit der folgenden Konfigurationsdatei werden zwei Richtlinien erstellt. Eine Richtlinie gibt ein öffentliches Zertifikat an und die andere weist den Load Balancer an, nur diesem Zertifikat für Verbindungen zum Instance-Port 443 zu vertrauen

.ebextensions/https-backendauth.config

option_settings: # Backend Encryption Policy aws:elb:policies:backendencryption: PublicKeyPolicyNames: backendkey InstancePorts: 443 # Public Key Policy aws:elb:policies:backendkey: PublicKey: | -----BEGIN CERTIFICATE----- ################################################################ ################################################################ ################################################################ ################################################################ ################################################ -----END CERTIFICATE-----

Ersetzen Sie den markierten Text mit den Inhalt des öffentlichen Zertifikats Ihrer EC2-Instance.