Le Blog Amazon Web Services

Comprendre les liens VPC dans les intégrations privées Amazon API Gateway

Un lien VPC (Virtual Private Cloud) est une ressource dans Amazon API Gateway qui permet de connecter des routes d’API à des ressources privées à l’intérieur d’un VPC. Un lien VPC agit comme tout autre point de terminaison d’intégration pour une API et constitue une couche d’abstraction au-dessus des autres ressources réseau. Cela permet de simplifier la configuration des intégrations privées.

Cet article examine les technologies sous-jacentes qui rendent possibles les liens VPC. Nous décrivons plus en détail ce qui se passe sous le capot lorsqu’un lien VPC est créé pour les API de type REST et HTTP. Comprendre ces détails peut vous aider à mieux évaluer les fonctionnalités et les avantages fournis par chaque type. Cela vous aide également à prendre de meilleures décisions architecturales lors de la conception d’APIs avec Amazon API Gateway.

Cet article suppose que vous avez de l’expérience dans la création d’API dans Amazon API Gateway. L’objectif principal est de fournir une explication plus approfondie des technologies qui rendent possibles les intégrations privées. Pour plus d’informations sur la création d’API avec des intégrations privées sur Amazon API Gateway, consultez la documentation Amazon API Gateway.

Aperçu

L’Hyperplane AWS et AWS PrivateLink

Il existe deux types de liens VPC pour API Gateway : les liens VPC pour les API de type REST et les liens VPC pour les API de type HTTP. Les deux fournissent un accès aux ressources situées à l’intérieur d’un VPC. Ils reposent sur un service AWS interne appelé l’Hyperplane AWS. Il s’agit d’une plate-forme de virtualisation de réseau interne, qui prend en charge la connectivité inter-VPC et le routage entre les VPC. En interne, l’Hyperplane AWS prend en charge plusieurs constructions de virtualisation de réseau que les services AWS utilisent pour se connecter aux ressources des VPC des clients. L’une de ces constructions est AWS PrivateLink, qui est utilisée par Amazon API Gateway pour prendre en charge les API privées et les intégrations privées.

AWS PrivateLink permet d’accéder aux services AWS et aux services hébergés par d’autres clients AWS, tout en maintenant le trafic réseau au sein du réseau AWS. Étant donné que le service est exposé via une adresse IP privée, toutes les communications sont en pratique locales et privées. Cela réduit l’exposition des données à Internet.

Dans AWS PrivateLink, un VPC Endpoint Service (service de point de terminaison de VPC) est une ressource réseau du côté du fournisseur de service qui permet à d’autres comptes AWS d’accéder au service exposé à partir de leurs propres VPC. Les services de point de terminaison VPC permettent de partager un service spécifique situé à l’intérieur du VPC du fournisseur en étendant une connexion virtuelle via une Elastic Network Interfaces (ENI,  Interface réseau Elastic) dans le VPC du consommateur.

Un Interface VPC Endpoint (point de terminaison de VPC d’ínterface) est une ressource réseau du côté consommateur de service, qui représente un ensemble d’une ou plusieurs ENI. Il s’agit du point d’entrée qui permet de se connecter aux services fournis par AWS PrivateLink.

Comparer les API privées et les intégrations privées

Les API privées sont différentes des intégrations privées. Les deux utilisent AWS PrivateLink mais ils sont utilisés de différentes manières.

Une API privée signifie que le point de terminaison de l’API est accessible uniquement via le VPC. Les API privées ne sont accessibles qu’à partir des clients au sein du VPC ou des clients disposant d’une connectivité réseau au VPC. Par exemple, à partir de clients on-premise via AWS Direct Connect. Pour activer les API privées, une connexion AWS PrivateLink est établie entre le VPC du client et le VPC d’API Gateway.

Les clients se connectent aux API privées via un VPC Endpoint, qui achemine les demandes de manière privée vers le service API Gateway. Le trafic est initié à partir du VPC du client et transite via AWS PrivateLink vers le compte de l’AWS API Gateway :

Consommateur connecté au fournisseur via PrivateLink

Figure 1 : Consommateur (consumer) connecté au fournisseur (provider) via PrivateLink

Lorsque le point de terminaison du VPC pour API Gateway est activé, toutes les demandes aux API d’API Gateway effectuées depuis l’intérieur du VPC passent par le point de terminaison du VPC. Cela est vrai pour les API privées et les API publiques. Les API publiques sont toujours accessibles depuis Internet et les API privées ne sont accessibles qu’à partir du point de terminaison du VPC de l’interface. A la date de l’écriture de cet article, seules les API REST peuvent être configurées comme privées (cf. Choix entre les API HTTP et les API REST).

Une intégration privée signifie que le point de terminaison principal réside dans un VPC et qu’il n’est pas accessible depuis l’extérieur. Avec une intégration privée, le service Amazon API Gateway peut accéder aux ressources en backend dans le VPC sans les exposer à Internet.

Une intégration privée utilise un lien VPC pour encapsuler les connexions entre API Gateway et les ressources VPC ciblées. Les liens VPC permettent d’accéder aux ressources HTTP/HTTPS au sein d’un VPC sans avoir à gérer des configurations réseau avancées. Les API REST et les API HTTP offrent des intégrations privées, mais seuls les liens VPC pour les API REST utilisent AWS PrivateLink en interne.

Liens VPC pour les API REST

Lorsque vous créez un lien VPC pour une API REST, un VPC Endpoint Service est également créé, faisant du compte AWS un fournisseur de services (Service provider). Le consommateur de service (Service consumer) dans ce cas est le compte d’API Gateway. Le service API Gateway crée un Interface VPC Endpoint dans son compte pour la région où le lien VPC est créé. Cela établit un AWS PrivateLink du VPC API Gateway vers votre VPC. La cible du VPC Endpoint Service et du lien VPC est un Network Load Balancer (NLB) qui transmet les requêtes aux points de terminaison cibles :

Lien VPC pour les API REST

Figure 2 : Lien VPC pour les API REST

Avant d’établir une connexion AWS PrivateLink, le fournisseur de services doit approuver la demande de connexion. Les demandes des comptes API Gateway sont automatiquement approuvées dans le processus de création de lien VPC. En effet, les comptes AWS qui servent API Gateway pour chaque région sont autorisés dans le service de point de terminaison de VPC.

Lorsqu’un Network Load Balancer est associé à un service de point de terminaison, le trafic vers les cibles provient du NLB. Du point de vue des cibles les adresses sources sont les adresses IP privées du NLB, et non les adresses IP des consommateurs de service.

Ceci est utile lors de la configuration des Security groups (groupes de sécurité) des instances derrière NLB pour deux raisons. Premièrement, vous ne connaissez pas la plage d’adresses IP du VPC qui se connecte au service. Deuxièmement, les ENI du NLB n’ont aucun groupe de sécurité attaché. Cela signifie qu’ils ne peuvent pas être utilisés comme source dans les groupes de sécurité des cibles. Pour en savoir plus, lisez comment trouver les adresses IP internes attribuées à un NLB.

Pour créer une API privée avec une intégration privée, deux connexions AWS PrivateLink sont établies. La première va d’un VPC client au VPC d’API Gateway afin que les clients du VPC puissent atteindre le point de terminaison du service API Gateway. L’autre va du VPC d’API Gateway au VPC client afin qu’API Gateway puisse atteindre le point de terminaison principal. Voici un exemple d’architecture :

Figure 3 : APIs privées avec intégrations privées

Liens VPC pour les API HTTP

L’API HTTP est la dernière génération d’API API Gateway qui est plus économique et plus rapide que l’API REST. Les liens VPC pour les API HTTP ne nécessitent pas la création de VPC endpoint Service, un Network Load Balancer n’est donc pas nécessaire. Avec les liens VPC pour les API HTTP, vous pouvez désormais utiliser un Application Load Balancer (ALB) ou le service AWS Cloud Map pour exposer des ressources privées. Cela permet plus de flexibilité et d’évolutivité dans la configuration requise des deux côtés.

La configuration de plusieurs cibles d’intégration est également plus facile avec les liens VPC pour les API HTTP. Par exemple, les liens VPC pour les API REST ne peuvent être associés qu’à un seul NLB. Dans ce cas, la configuration de plusieurs points de terminaison principaux nécessite certaines solutions de contournement, telles que l’utilisation de plusieurs listeners sur le NLB, associés à différents target groups.

En revanche, un seul lien VPC pour les API HTTP peut être associé à plusieurs points de terminaison principaux sans configuration supplémentaire. De plus, avec le nouveau lien VPC, les clients disposant d’applications conteneurisées peuvent utiliser des ALB au lieu des NLB et tirer parti des capacités d’équilibrage de charge au niveau de la couche 7 du modèle OSI et d’autres fonctionnalités telles que l’authentification et l’autorisation.

L’Hyperplane AWS prend en charge plusieurs types de constructions de virtualisation de réseau, y compris AWS PrivateLink. Les liens VPC pour les API REST reposent sur AWS PrivateLink. Cependant, les liens VPC pour les API HTTP utilisent le NAT de VPC à VPC, qui offre un niveau d’abstraction plus élevé.

Ce nouveau concept est similaire à un tunnel entre les deux VPC. Ceux-ci sont créés via des attachements d’ENI du côté du fournisseur et du consommateur, qui sont tous deux gérés par l’Hyperplane AWS. Ce tunnel permet à un service hébergé dans le VPC du fournisseur (API Gateway) d’initier des communications avec les ressources du VPC d’un consommateur. API Gateway dispose d’une connectivité directe à ces ENI et peut atteindre les ressources du VPC directement à partir de leur propre VPC. Les connexions sont autorisées en fonction de la configuration des groupes de sécurité attachés aux ENI du côté client.

Bien qu’ils semblent fournir les mêmes fonctionnalités qu’AWS PrivateLink, ces concepts diffèrent au niveau de l’implémentation. Un point de terminaison de service dans AWS PrivateLink permet plusieurs connexions à un seul point de terminaison (le NLB), tandis que la nouvelle approche permet à un VPC source de se connecter à plusieurs points de terminaison de destination. Par conséquent, un seul lien VPC peut s’intégrer à plusieurs Application Load Balancers, Network Load Balancers ou ressources enregistrées auprès d’un service AWS Cloud Map côté client :

Figure 4 : VPC Link pour APIs HTTP

Conclusion

Cet article a expliqué comment les liens VPC peuvent configurer des API API Gateway avec des intégrations privées. Les liens VPC pour les API REST encapsulent les ressources AWS PrivateLink telles que les points de terminaison de VPC d’interface et les services de point de terminaison de VPC pour configurer les connexions du VPC d’API Gateway au VPC du client pour accéder aux points de terminaison de backend privés.

Les liens VPC pour les API HTTP utilisent une conception différente dans l’Hyperplane AWS pour fournir à API Gateway un accès réseau direct aux ressources privées VPC. Il est important de comprendre les différences entre les deux lors de l’ajout d’intégrations privées dans le cadre de la conception de votre architecture d’API.

Article original écrit par Jose Eduardo Montilla Lugo, Consultant Sécurité AWS. Adapté en français par Vincent Bontoux, Solution Architect dans les équipes AWS France.