Configuration du chiffrement de bout en bout dans un environnement Elastic Beanstalk à charge équilibrée - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration du chiffrement de bout en bout dans un environnement Elastic Beanstalk à charge équilibrée

La suspension des connexions sécurisées au niveau de l'équilibreur de charge et l'utilisation de HTTP sur le backend peuvent s'avérer suffisantes pour votre application. Le trafic réseau entre les ressources AWS ne peut pas être écouté par les instances qui ne font pas partie de la connexion, même si elles sont exécutées sous le même compte.

Toutefois, si vous développez une application qui doit respecter des réglementations externes strictes, vous pouvez être contraint de sécuriser toutes les connexions réseau. Pour respecter ces obligations, vous pouvez utiliser la console Elastic Beanstalk ou les fichiers de configuration afin que l'équilibreur de charge de votre environnement Elastic Beanstalk se connecte aux instances backend en toute sécurité. La procédure suivante se concentre sur les fichiers de configuration.

Commencez par ajouter un écouteur sécurisé à votre équilibreur de charge, si vous ne l'avez pas encore fait.

Vous devez également configurer les instances de votre environnement pour autoriser l'écoute sur le port sécurisé et la suspension des connexions HTTPS. La configuration varie selon la plateforme. Pour obtenir des instructions, consultez Configuration de votre application pour suspendre des connexions HTTPS sur l'instance. Vous pouvez utiliser un certificat auto-signé pour les instances EC2 sans difficulté.

Ensuite, configurez l'écouteur pour transférer le trafic à l'aide du protocole HTTPS vers le port sécurisé utilisé par votre application. Utilisez l'un des fichiers de configuration suivants en fonction du type d'équilibreur de charge utilisé par votre environnement.

.ebextensions/https-reencrypt-clb.config

Utilisez ce fichier de configuration avec un équilibreur Classic Load Balancer. En plus de configurer l'équilibreur de charge, le fichier de configuration modifie également par défaut la vérification de l'état pour utiliser le port 443 et HTTPS, afin de veiller à ce que l'équilibreur de charge puisse se connecter en toute sécurité.

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

.ebextensions/https-reencrypt-alb.config

Utilisez ce fichier de configuration avec un équilibreur 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

Utilisez ce fichier de configuration avec un équilibreur Network Load Balancer.

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

L'option DefaultProcess est nommée ainsi en raison des équilibreurs de charge Application Load Balancer, qui peuvent avoir des écouteurs autres que ceux par défaut sur le même port pour le trafic vers des chemins spécifiques (voir Application Load Balancer pour plus de détails). Pour un équilibreur de charge Network Load Balancer, l'option spécifie le seul processus cible de cet écouteur.

Dans cet exemple, nous avons nommé le processus https, car il écoute le trafic sécurisé (HTTPS). L'écouteur envoie le trafic vers le processus sur le port désigné à l'aide du protocole TCP, car un équilibreur de charge Network Load Balancer fonctionne uniquement avec TCP. C'est tout à fait normal, car le trafic réseau pour HTTP et HTTPS est mis en œuvre par-dessus TCP.

Note

L'interface de ligne de commande (CLI) EB et la console Elastic Beanstalk appliquent les valeurs recommandées pour les options précédentes. Vous devez supprimer ces paramètres si vous voulez utiliser des fichiers de configuration pour configurer la même chose. Consultez Valeurs recommandées pour plus de détails.

Dans la tâche suivante, vous devez modifier le groupe de sécurité de l'équilibreur de charge pour autoriser le trafic. Selon l'Amazon Virtual Private Cloud (Amazon VPC) dans lequel vous lancez votre environnement (le VPC par défaut ou un VPC personnalisé), le groupe de sécurité de l'équilibreur de charge varie. Dans un VPC par défaut, Elastic Load Balancing fournit un groupe de sécurité par défaut que tous les équilibreurs de charge peuvent utiliser. Dans un VPC Amazon que vous créez, Elastic Beanstalk crée un groupe de sécurité que l'équilibreur de charge doit utiliser.

Pour prendre en charge les deux scénarios, vous pouvez créer un groupe de sécurité et demander à Elastic Beanstalk de l'utiliser. Le fichier de configuration suivant crée un groupe de sécurité et l'associe à l'équilibreur de charge.

.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

Remplacez le texte en surbrillance par l'ID de votre VPC par défaut ou personnalisé. L'exemple précédent inclut le trafic entrant et sortant via le port 80 pour autoriser les connexions HTTP. Vous pouvez supprimer ces propriétés si vous souhaitez autoriser uniquement les connexions sécurisées.

Enfin, ajoutez des règles de trafic entrant et sortant qui autorisent la communication sur le port 443 entre le groupe de sécurité de l'équilibreur de charge et le groupe de sécurité des instances.

.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"]}

Si vous effectuez cette opération en dehors du processus de création du groupe de sécurité, vous pouvez limiter les groupes de sécurité source et de destination sans créer de dépendance circulaire.

Après avoir effectué toutes les tâches précédentes, l'équilibreur de charge se connecte à vos instances backend en toute sécurité à l'aide du protocole HTTPS. L'équilibreur de charge ne s'occupe pas de savoir si le certificat de votre instance est auto-signé ou a été émis par une autorité de certification compétente : il accepte tous les certificats qui lui sont présentés.

Pour modifier ce comportement, vous pouvez ajouter des stratégies à l'équilibreur de charge en lui demandant de ne faire confiance qu'à un certificat spécifique. Le fichier de configuration suivant crée deux stratégies. La première spécifie un certificat public, et la deuxième indique à l'équilibreur de charge qu'il ne doit faire confiance qu'à ce certificat pour les connexions au port 443 de l'instance.

.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-----

Remplacez le texte en surbrillance par le contenu du certificat public de votre instance EC2.