Sécurité du dernier kilomètre

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

La sécurité du dernier kilomètre protège les services de backend mis en proxy par les services d'API. Le principal objectif de la sécurité du dernier kilomètre est d'empêcher les attaques dites "end-run", où le développeur d'une application découvre l'URL d'un service de backend et contourne tout proxy d'API pour accéder directement à l'URL du backend.

Voici les principales options de configuration de la sécurité du dernier kilomètre :

  • TLS/SSL client
  • Authentification sortante
  • Module tls Node.js

TLS/SSL client

Le mécanisme principal de sécurisation du dernier kilomètre est le protocole TLS/SSL client, également appelé "authentification mutuelle".

Consultez la section Configurer TLS de Edge vers le backend (Cloud et cloud privé).

Authentification sortante

La sécurité du dernier kilomètre peut également être appliquée en obligeant le proxy d'API à présenter un identifiant au service de backend.

Par exemple, vous pouvez souhaiter qu'un proxy d'API présente une clé API à votre service de backend. Vous pouvez également souhaiter qu'un proxy d'API obtienne et présente un jeton d'accès d'identifiants client OAuth.

Clé API

Les clés API peuvent être appliquées aux requêtes sortantes des proxys d'API vers les services de backend. Cela suppose que le service de backend est une API capable d'émettre et de valider des clés API.

Si vous configurez un proxy d'API pour présenter une clé API lors de requêtes sortantes, vous devez stocker cette clé à un emplacement où elle peut être récupérée par le proxy d'API au moment de l'exécution. Un emplacement disponible pour stocker des clés API est un mappage clé-valeur. Consultez la section Règle des opérations de mappage clé-valeur.

Vous pouvez utiliser le type de règle AssignMessage pour ajouter la clé API en tant qu'en-tête HTTP, paramètre de requête ou élément de charge utile à la requête sortante. Consultez la section sur la règle AssignMessage.

Identifiants clients OAuth

Les identifiants clients OAuth peuvent être utilisés pour ajouter une couche de révocabilité aux clés API. Si vos services de backend sont compatibles avec les identifiants clients OAuth, vous pouvez configurer un proxy d'API pour afficher un jeton d'accès aux identifiants clients pour chaque requête.

Le proxy d'API doit être configuré pour exécuter un appel afin d'obtenir le jeton d'accès à partir du point de terminaison de votre jeton. Le proxy d'API est également tenu de mettre en cache le jeton d'accès, pour l'empêcher d'obtenir un nouveau jeton d'accès pour chaque appel.

Il existe un certain nombre d'approches permettant de mettre en œuvre des identifiants clients sortants.

Vous pouvez modifier cet exemple pour appeler votre point de terminaison de jeton afin d'obtenir un jeton d'accès. Cet exemple utilise JavaScript pour associer le jeton à la requête sortante en tant qu'en-tête d'autorisation HTTP. Vous pouvez également utiliser la règle d'attribution de message à cette fin.

SAML

Le type de règle GenerateSAMLAssertion peut être utilisé pour associer une assertion SAML à un message de requête XML sortant, du proxy d'API à un service de backend. Cela permet au service de backend de procéder à l'authentification et l'autorisation sur les requêtes reçues des proxys d'API.

Consultez la page règles SAMLAssertion.

Node.js

Si votre cible de proxy d'API est une application Node.js, vous pouvez utiliser le module Node.js tls pour créer des connexions sécurisées aux services de backend. Vous effectuez des requêtes sortantes avec le module tls comme vous le feriez normalement dans Node.js. Vous devez essentiellement ajouter des clés et des certificats côté client (fichiers .pem) au répertoire "resources/node" et les charger dans votre script. Pour en savoir plus sur l'utilisation du module tls et de ses méthodes, consultez la documentation du module tls Node.js. Pour plus d'informations, consultez Comprendre la compatibilité d'Edge avec les modules Node.js.