Ne pas autoriser les appels directs à Microservices. Autoriser uniquement via API Gateway

C’est peut-être une question étrange (je suis nouveau avec Microservices). Mais je cherche des informations sur la manière de procéder. N’a pas besoin d’être spécifique à Spring, mais c’est le framework que j’utilise pour le moment.

Exemple: Disons que nous avons deux microservices

a) http://myurlfortesting.com:8085/api/rest/serviceone

b) http://myurlfortesting.com:8090/api/rest/servicetwo

et nous avons configuré Spring Zuul (agissant en tant que passerelle API) avec les règles suivantes qui transfèrent les appels entrants:

/ rest / one -> http://myurlfortesting.com:8085/api/rest/serviceone

/ rest / deux -> http://myurlfortesting.com:8090/api/rest/servicetwo

La question … Existe-t-il un moyen d’empêcher les utilisateurs d’accéder directement aux services mentionnés aux points A et B (autoriser uniquement ceux qui passent par la passerelle API)?

Cela peut-il être fait avec Springs Zuul (faisant office de passerelle API) en configurant des filtres supplémentaires ou le configurons-nous dans les points de terminaison Microservices?

J’aimerais même savoir s’il existe un moyen de ne même pas traiter les appels directs sur les points de terminaison Microservices qui ne passent pas par la passerelle API.

Peut-être que cela est résolu avec des règles spécifiques au serveur et n’a rien à voir avec Spring?

Merci beaucoup,

/RÉ

En supposant que vous ayez un pare-feu en place, vous pouvez limiter le trafic entrant du serveur aux ports sur lesquels vos points de terminaison Zuul sont exposés et interdire à quiconque d’accéder directement aux ports des microservices.

Si vous souhaitez éviter de passer par la route du pare-feu, vous pouvez forcer les points finaux à rechercher un en-tête HTTP spécifique ou un élément défini par Zuul avant de transmettre une demande, mais cela serait difficile à contourner. D’après mes expériences passées, la “bonne” méthode serait de le faire via un pare-feu. Votre application devrait être responsable du traitement des demandes. Votre pare-feu doit être responsable de décider qui peut atteindre des points de terminaison spécifiques.

En règle générale, ce type de situation est traité en mettant en œuvre le serveur OAuth approprié, dans lequel seule votre passerelle API gère la validation du jeton. Tout appel direct à microservice n’aura pas l’échange de jetons approprié et les demandes seront donc abandonnées.

Si vous avez déployé vos micro-services sur n’importe quel nuage, vous pouvez y parvenir en exposant les itinéraires à la passerelle API uniquement. Et oui, le blocage du pare-feu, la liste blanche IP sont quelques-uns des autres moyens de restreindre l’access à vos microservices.

Nous utilisons jHipster-Gateway dans le même but:

Regardez ICI pour une architecture plus détaillée.

La meilleure façon de procéder avec AWS API Gateway serait d’utiliser l’intégration récemment lancée «VPC Link», qui sécurise la connexion entre API Gateway et votre serveur principal dans votre VPC.

https://aws.amazon.com/about-aws/whats-new 2017/11/amazon-api-gateway-supports-endpoint-integrations-with-private-vpcs/