Exclure les suites de chiffrement au niveau de la passerelle API à l'aide d'une stratégie de sécurité Network Load Balancer (2023)

Message syndiqué deSid Singoriginalhttps://aws.amazon.com/blogs/security/exclude-cipher-suites-at-the-api-gateway-using-a-network-load-balancer-security-policy/

Dans cet article de blog, nous allons vous montrer comment utiliserÉquilibrage de charge élastique Amazon (ELB)- plus précisément unÉquilibreur de charge réseau—pour appliquer un contrôle plus granulaire sur les suites de chiffrement utilisées entre les clients et les serveurs lors de l'établissement d'une connexion SSL/TLS avecPasserelle d'API Amazon. La solution utilise des points de terminaison de cloud privé virtuel (VPC) (alimentés parAWS PrivateLink) et les politiques ELB. En utilisant cette solution, les secteurs hautement réglementés tels que les services financiers, les soins de santé et les sciences de la vie peuvent exercer davantage de contrôle sur la sélection des suites de chiffrement pour la négociation TLS.

Configurer la version minimale de TLS sur API Gateway

Le protocole TLS est un mécanisme permettant de chiffrer les données en transit, c'est-à-dire les données qui se déplacent d'un endroit à un autre, par exemple sur Internet ou via un réseau. TLS exige que le client et le serveur s'accordent sur la famille d'algorithmes de chiffrement - autrement connue sous le nom desuite de chiffrement— à utiliser pour protéger la communication entre le client et le serveur. Les deux parties s'accordent sur la suite de chiffrement lors de la phase dite dePrise de contact TLS, dans lequel le client fournit d'abord une liste de suites de chiffrement préférées, et le serveur sélectionne ensuite celle qu'il juge la plus appropriée.

Tendance

[$] Traces fiables de la pile de l'espace utilisateur avec SFrame

API Gateway prend en charge unlarge éventail de protocoles et de chiffrementset vous permet de choisir une version minimale de TLS à appliquer en sélectionnant une politique de sécurité spécifique. Une politique de sécurité est une combinaison prédéfinie de la version minimale de TLS et de la suite de chiffrement proposée par API Gateway. Actuellement, vous pouvez choisir une politique de sécurité TLS version 1.2 ou TLS version 1.0. Bien que l'utilisation de TLS v1.0 ou TLSv1.2 couvre un large éventail de cas d'utilisation de la sécurité réseau, elle ne résout pas la situation dans laquelle vous devez exclure des chiffrements spécifiques qui ne répondent pas à vos exigences de sécurité.

Options de contrôle granulaire sur les suites de chiffrement TLS

Si vous souhaitez exclure des chiffrements spécifiques, vous pouvez utiliser les solutions suivantes pour décharger et contrôler la terminaison de la connexion TLS avec une suite de chiffrement personnalisée :

  • Répartition Amazon CloudFrontAmazon CloudFrontfournit la version TLS et la suite de chiffrement dans leEn-tête CloudFront-Viewer-TLS, et vous pouvez le configurer en utilisant unFonction CloudFrontsur la demande de la visionneuse pour ensuite transférer le trafic approprié vers une passerelle API. CloudFront est un service global qui transfère les données client en tant que fonction essentielle du service, vous devez donc examiner attentivement son utilisation en fonction de votre cas d'utilisation spécifique.
  • Proxy inverse autogéré— À l'aide d'un proxy inverse conteneurisé (par exemple, unImage Docker NGINX) qui gère les sessions TLS et transfère le trafic vers une passerelle API est une autre approche pour un contrôle plus granulaire sur les suites de chiffrement. Vous pouvez déployer et gérer cette solution avecAmazon Elastic Container Service (Amazon ECS). Vous pouvez également exécuter Amazon ECS surAWS Fargateafin que vous n'ayez pas à gérer des serveurs ou des clusters deAmazon Elastic Compute Cloud (Amazon EC2)instances. L'approche de proxy inverse autogéré implique une surcharge opérationnelle associée à la configuration et à la gestion de l'application de proxy inverse.
  • Équilibreur de charge réseau— En plaçant un Network Load Balancer devant une API Gateway, vous pouvez utiliser l'équilibreur de charge pour mettre fin à la session TLS côté client et relancer une nouvelle session TLS avec la passerelle API backend. Cette approche, associée à l'utilisation de stratégies ELB, vous offre un contrôle beaucoup plus granulaire sur la suite de chiffrement utilisée pour la communication. Network Load Balancer est un service entièrement géré, ce qui signifie qu'il gère automatiquement l'évolutivité et l'élasticité. Cela représente le principal avantage par rapport à une solution de proxy inverse autogérée qui ajouterait des frais généraux opérationnels en raison de la nécessité de gérer l'application de proxy inverse et le cluster ECS.

Network Load Balancer est la solution avec l'ensemble de compromis le plus approprié : il minimise les frais généraux opérationnels tout en offrant la flexibilité nécessaire pour contrôler et sécuriser la connexion entre le client et le serveur. Par conséquent, nous nous concentrons sur l'utilisation de Network Load Balancer dans cet article.

Conditions préalables

Pour montrer comment un Équilibreur de charge du réseau peut mettre en pratique une passerelle API, nous vous guiderons à travers un exemple concret. Pour suivre, assurez-vous que les conditions préalables suivantes sont en place :

Exclure les suites de chiffrement au niveau de la passerelle API à l'aide d'une stratégie de sécurité Network Load Balancer (1)

Figure 1 : Exemple d'architecture d'API Gateway avec le backend Lambda

Utiliser Network Load Balancer pour la sélection de la suite de chiffrement

Nous commençons par un scénario dans lequel un client interagit avec le domaine de la passerelle API (par exemple,api.exemple.com) sur un ensemble de combinaisons TLS/chiffrement qui ne sont pas acceptables pour des raisons de sécurité. Dans les étapes suivantes, nous introduirons une couche d'équilibreur de charge du réseau pour mettre en avant le domaine de la passerelle API sans affecter l'interaction de l'utilisateur final avec le domaine de la passerelle API. Dans cette section, nous vous expliquerons comment rendre l'application accessible via un Network Load Balancer et utiliser les stratégies ELB pour exclure la suite de chiffrement TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384. Ce faisant, nous limiterons autant que possible les frais généraux opérationnels, tout en gardant l'application évolutive, élastique et hautement disponible.

La figure 2 montre la solution que vous allez créer.

Exclure les suites de chiffrement au niveau de la passerelle API à l'aide d'une stratégie de sécurité Network Load Balancer (2)

Figure 2 : Architecture cible, avec un équilibreur de charge pour la sélection de la suite de chiffrement

Le diagramme précédent montre un flux de travail de l'interaction de l'utilisateur avec le domaine de la passerelle API abstraite par la couche Network Load Balancer. Pour la première interaction, l'utilisateur récupère le domaine de la passerelle API à partir de la zone hébergée Route 53. Ce domaine de passerelle API est un alias du point de terminaison Network Load Balancer. Dans l'interaction suivante, l'utilisateur envoie une demande HTTPS au point de terminaison de domaine avec une combinaison TLS/chiffrement du côté client. La connexion TLS est acceptée ou refusée en fonction de la politique de sécurité configurée sur l'équilibreur de charge du réseau. Dans la suite de cet article, nous vous expliquerons comment configurer cette architecture.

Étape 1 : Créer un point de terminaison de VPC

La première étape consiste à créer un point de terminaison de VPC privé pour API Gateway.

Pour créer un point de terminaison de VPC

  1. Ouvrez leConsole Amazon VPC.
  2. Dans le volet de navigation de gauche, choisissezPoints finaux, et sélectionnezCréer un point de terminaison.
  3. PourPorte-nom, entrez un nom pour votre point de terminaison. Pour cette procédure pas à pas, nous entreronsMyEndPointcomme nom du point de terminaison.
  4. PourPrestations de service, Rechercherexécuter-apiet sélectionnez le nom du service, qui ressemblera à ce qui suit :com.amazonaws..execute-api.
  5. PourVPC, sélectionnez le VPC sur lequel vous souhaitez déployer le point de terminaison. Pour cette procédure pas à pas, nous utiliseronsMonVPCen tant que VPC.
  6. PourSous-réseaux, sélectionnez les sous-réseaux privés où vous souhaitez que le point de terminaison privé soit accessible. Pour garantir une disponibilité et une résilience élevées, veillez à sélectionner au moins deux sous-réseaux.
  7. (Facultatif) Spécifiez leStratégie de point de terminaison de VPCpour autoriser l'accès au point de terminaison de VPC uniquement aux utilisateurs ou services souhaités. Assurez-vous d'appliquer leprincipe du moindre privilège.
  8. PourGroupes de sécurité, sélectionnez (ou créez) un groupe de sécurité pour le point de terminaison du VPC API Gateway. Ce groupe de sécurité autorisera ou refusera le trafic vers le point de terminaison du VPC. Vous pouvez choisir les ports et les protocoles ainsi que la plage d'adresses IP source et de destination pour autoriser le trafic entrant et sortant. Dans cet exemple, vous souhaitez que le point de terminaison du VPC soit accessible uniquement à partir de l'équilibreur de charge du réseau. Veillez donc à autoriser le trafic entrant depuis le routage inter-domaine sans classe (CIDR) du VPC sur le port 443.
  9. Laissez les autres options de configuration telles quelles, puis choisissezCréer un point de terminaison. Attendez que le point de terminaison de VPC soit déployé.
  10. Lorsque le point de terminaison du VPC a terminé le provisionnement, notez l'ID du point de terminaison et les adresses IP qui lui sont associées, car vous aurez besoin de ces informations dans les étapes suivantes. Vous trouverez une adresse pour chaque sous-réseau où vous avez choisi de déployer le point de terminaison VPC. Après avoir sélectionné le point de terminaison nouvellement créé, vous pouvez trouver les adresses IP attribuées dans leSous-réseauxlanguette.

Étape 2 : Associer API Gateway au point de terminaison d'un VPC et au domaine personnalisé

L'étape suivante consiste à demander à la passerelle API de n'accepter que les appels provenant du point de terminaison du VPC, puis de mapper vos API avec le nom de domaine personnalisé.

Pour associer API Gateway au point de terminaison VPC et au domaine personnalisé

  1. Ouvrez leConsole de passerelle d'API Amazonet notez l'ID de votre API.
  2. Choisissez votre API existante dans la console. Pour cette procédure pas à pas, nous utiliserons une API appeléeMonAPI.
  3. Dans le volet de navigation de gauche, sousAPI : , choisirPolitique de ressources.
  4. Collez la stratégie suivante et remplacez,,, etavec vos propres informations :
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource" : "arn:aws:execute-api :::/*/*/*", "Condition": { "StringEquals": { "aws:SourceVpce": "" } } } ]}
  5. Dans le volet de navigation de gauche, sousAPI : , choisirParamètres.
  6. Dans leConfiguration du point de terminaisonpartie, pourID de point de terminaison de VPC, saisissez votre ID de point de terminaison de VPC.
  7. Laissez les autres options de configuration telles quelles et choisissezSauvegarder les modifications.
  8. Dans le volet de navigation de gauche, sousAPI : , choisirRessources.
  9. ChoisirActionset sélectionnezDéployer l'API.
  10. Sélectionnez une étape existante ou, si vous n'en avez pas encore créé, sélectionnez[Nouvelle étape]et entrez un nom pour l'étape (par exemple,produit). Alors choisiDéployer.
  11. Revenez à la console Amazon API Gateway et, dans le volet de navigation de gauche, choisissezNoms de domaine personnalisés.
  12. ChoisirCréer.
  13. PourNom de domaine, saisissez le nom de domaine complet que vous prévoyez d'associer à votre API Gateway (par exemple,api.exemple.com).
  14. PourCertificat ACM, sélectionnez le certificat du domaine que vous possédez (par exemple,*.exemple.com).
  15. Laissez le reste tel quel et choisissezCréer un nom de domaine.
  16. Sélectionnez le nom de domaine que vous venez d'associer à API Gateway et sélectionnezMappages d'API.
  17. ChoisirConfigurer le mappage d'API.
  18. PourAPI, sélectionnez votre API, et pourOrganiser, sélectionnez votre étape préférée.
  19. Laissez les autres options de configuration telles quelles et choisissezSauvegarder.

Étape 3 : Créer un nouveau groupe cible pour l'équilibreur de charge du réseau

Avant de créer un Network Load Balancer, vous devez créer un groupe cible vers lequel il redirigera les requêtes. Vous allez configurer le groupe cible pour rediriger les demandes vers le point de terminaison de VPC.

Pour créer un nouveau groupe cible pour Network Load Balancer

  1. Ouvrez leConsole AmazonEC2.
  2. Dans le volet de navigation de gauche, choisissezGroupes cibles, puis choisissezCréer un groupe cible.
  3. PourChoisissez un type de cible, sélectionnerAdresses IP.
  4. PourNom du groupe cible, saisissez le nom du groupe cible souhaité. Pour cette procédure pas à pas, nous entreronsMon groupecomme nom du groupe cible.
  5. PourProtocole, sélectionnerTLS.
  6. PourPort, entrer443.
  7. SélectionnerMonVPC.
  8. SousProtocole de bilan de santé, sélectionnerHTTPS, et sousParcours de bilan de santé,entrer/ping.
  9. Laissez le reste tel quel et choisissezSuivant.
  10. PourRéseau, sélectionnerMonVPC.
  11. ChoisirAjouter une adresse IPv4et ajoutez les adresses IP associées au point de terminaison VPC une par une (il s'agit de l'adresse IP associée au point de terminaison VPC et détaillée à l'étape 10 de la sectionÉtape 1 : Créer un point de terminaison de VPC).
  12. PourPorts, entrer443, puis choisissezInclure comme en attente ci-dessous.
  13. ChoisirCréer un groupe cible, puis attendez que le groupe cible termine la création.

Étape 4 : Créer un équilibreur de charge réseau

Vous pouvez maintenant créer l'équilibreur de charge du réseau. Vous le configurerez pour rediriger le trafic vers le groupe cible que vous avez défini à l'étape 3.

Pour créer l'équilibreur de charge du réseau

  1. Ouvrez leConsole AmazonEC2.
  2. Dans le volet de navigation de gauche, choisissezÉquilibreurs de charge, puis choisissezCréer un équilibreur de charge.
  3. Dans leÉquilibreur de charge réseausection, choisissezCréer.
  4. PourNom de l'équilibreur de charge, saisissez un nom pour votre équilibreur de charge. Pour cette procédure pas à pas, nous utiliserons le nomMaNLB.
  5. PourSchème, sélectionnerInterne.
  6. PourVPC, sélectionnerMonVPC.
  7. PourMappages, sélectionnez les mêmes sous-réseaux que vous avez sélectionnés lors de la création du point de terminaison de VPC dansÉtape 1 : Créer un point de terminaison de VPC.
  8. Dans leAuditeurs et routagepartie, pourPort, entrer443.
  9. Redirigez le trafic versMon groupe.
  10. Sélectionnez une stratégie de sécurité qui exclut les suites de chiffrement que vous ne souhaitez pas autoriser. Pour en savoir plus sur les politiques disponibles, consultezPolitiques de sécurité. Dans cet exemple, nous sélectionneronsELBSecurityPolicy-TLS13-1-2-Res-2021-06, qui exclut le chiffrement TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384.
  11. PourCertificat SSL par défaut,choisirSélectionnez un certificatpuis sélectionnez votre certificat (par exemple,*.exemple.com).
  12. Laissez le reste tel quel et choisissezCréer un équilibreur de charge. Attendez que l'équilibreur de charge termine le déploiement.

Étape 5 : Configurer le transfert DNS

La dernière étape consiste à configurer le système de noms de domaine (DNS) pour associer le nom de domaine personnalisé à nos API.

Pour configurer le transfert DNS

  1. Ouvrez la console Route53.
  2. Dans le volet de navigation de gauche, choisissezZones hébergées.
  3. Sélectionnez la zone hébergée privée qui gère votre domaine.
  4. ChoisirCréer un enregistrement.
  5. PourNom de l'enregistrement, saisissez le nom de domaine que vous prévoyez d'associer à votre API (par exemple,api.exemple.com— le même nom que dansÉtape 2 : Associer API Gateway au point de terminaison d'un VPC et au domaine personnalisé).
  6. PourType d'enregistrement, laissez la valeur par défautA – Achemine le trafic vers une adresse IPV4 et certaines ressources AWS.
  7. AllumerAlias.
  8. PourAcheminer le trafic vers, sélectionnerAlias ​​vers Network Load Balancer. Sélectionnez la région AWS dans laquelle vous avez déployé vos ressources, puis sélectionnez votre équilibreur de charge.
  9. ChoisirCréer des enregistrements.

Étape 6 : Validez votre solution

À ce stade, vous avez déployé les ressources dont vous avez besoin pour implémenter la solution. Vous devez maintenant valider que cela fonctionne comme prévu.

Vos ressources sont déployées dans des sous-réseaux privés, vous devez donc les tester en envoyant des demandes depuis le sous-réseau privé lui-même. Par exemple, vous pouvez le faire enconnexion à une instance Linuxque vous avez en cours d'exécution à l'intérieur du sous-réseau privé.

Après vous être connecté à votre instance EC2 privée, vous pouvez valider votre solution en envoyant des requêtes à votre point de terminaison.

Depuis le terminal de votre choix, exécutez les commandes suivantes. Remplaceravec le nom de domaine que vous avez choisi, par exemple,api.example.com/.

boucle https://‐‐chiffrement ECDHE-RSA-AES128-GCM-SHA256

Cette commande envoie une requête GET à API Gateway en sélectionnant une suite de chiffrement autorisée par la stratégie ELB. Par conséquent, l'équilibreur de charge du réseau autorise la connexion et renvoie le succès.

boucle https://‐‐chiffrement ECDHE-RSA-AES128-SHA256

Cette commande envoie une demande GET à la passerelle API en sélectionnant une suite de chiffrement exclue par la stratégie ELB. Par conséquent, l'équilibreur de charge du réseau refuse la connexion et renvoie une réponse d'erreur.

La figure 3 montre le comportement attendu.

Exclure les suites de chiffrement au niveau de la passerelle API à l'aide d'une stratégie de sécurité Network Load Balancer (3)

Figure 3 : Comportement de la cible : accepter uniquement les connexions avec les suites de chiffrement sélectionnées

Conclusion

Dans cet article de blog, vous avez appris à utiliser un Network Load Balancer comme proxy inverse pour vos API privées gérées par Amazon API Gateway. Avec cette solution, l'équilibreur de charge du réseau vous permet d'exclure des suites de chiffrement spécifiques en sélectionnant la stratégie ELB la plus appropriée pour votre cas d'utilisation.


Si vous avez des commentaires sur ce message, soumettez des commentaires dans lecommentairessection ci-dessous. Si vous avez des questions sur ce post,contacter l'assistance AWS.

Vous voulez plus d'informations sur la sécurité AWS ? Suivez-nous surTwitter.

References

Top Articles
Latest Posts
Article information

Author: Prof. Nancy Dach

Last Updated: 04/27/2023

Views: 5259

Rating: 4.7 / 5 (57 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Prof. Nancy Dach

Birthday: 1993-08-23

Address: 569 Waelchi Ports, South Blainebury, LA 11589

Phone: +9958996486049

Job: Sales Manager

Hobby: Web surfing, Scuba diving, Mountaineering, Writing, Sailing, Dance, Blacksmithing

Introduction: My name is Prof. Nancy Dach, I am a lively, joyous, courageous, lovely, tender, charming, open person who loves writing and wants to share my knowledge and understanding with you.