Vous consultez la documentation Apigee Edge.
Accédez à la documentation Apigee X.
Edge Microgateway v. 3.2.x
Cet article explique comment gérer et configurer Edge Microgateway.
Mettre à niveau Edge Microgateway si vous disposez d'une connexion Internet
Cette section explique comment mettre à niveau une installation existante d'Edge Microgateway. Si vous travaillez sans connexion Internet, consultez la section Puis-je installer Edge Microgateway sans connexion Internet ?.
Apigee vous recommande de tester votre configuration existante avec la nouvelle version avant de mettre à niveau votre environnement de production.
- Exécutez la commande
npmsuivante pour passer à la dernière version d'Edge Microgateway :npm upgrade edgemicro -g
Pour installer une version spécifique d'Edge Microgateway, vous devez spécifier le numéro de version dans la commande d'installation. Par exemple, pour installer la version 3.2.3, utilisez la commande suivante :
npm install edgemicro@3.2.3 -g
- Vérifiez le numéro de version. Par exemple, si vous avez installé la version 3.2.3 :
edgemicro --version current nodejs version is v12.5.0 current edgemicro version is 3.2.3 - Enfin, passez à la dernière version du proxy edgemicro-auth :
edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME
Modifier la configuration
Voici les fichiers de configuration que vous devez connaître :
- Fichier de configuration système par défaut
- Fichier de configuration par défaut pour une instance Edge Microgateway nouvellement initialisée
- Fichier de configuration dynamique pour les instances en cours d'exécution
Cette section traite de ces fichiers et de ce que vous devez savoir pour les modifier.
Fichier de configuration système par défaut
Lorsque vous installez Edge Microgateway, un fichier de configuration système par défaut est placé ici :
prefix/lib/node_modules/edgemicro/config/default.yaml
Où prefix est le répertoire du préfixe npm. Si vous ne trouvez pas ce répertoire, consultez Où Edge Microgateway est-il installé ?.
Si vous modifiez le fichier de configuration du système, vous devez réinitialiser, reconfigurer et redémarrer Edge Microgateway :
edgemicro initedgemicro configure [params]edgemicro start [params]
Fichier de configuration par défaut pour les instances Edge Microgateway nouvellement initialisées
Lorsque vous exécutez edgemicro init, le fichier de configuration système (décrit ci-dessus), default.yaml, est placé dans le répertoire ~/.edgemicro.
Si vous modifiez le fichier de configuration dans ~/.edgemicro, vous devez reconfigurer et redémarrer Edge Microgateway :
edgemicro stopedgemicro configure [params]edgemicro start [params]
Fichier de configuration dynamique pour les instances en cours d'exécution
Lorsque vous exécutez edgemicro configure [params], un fichier de configuration dynamique est créé dans ~/.edgemicro. Le fichier est nommé selon le modèle suivant : org-env-config.yaml, où org et env sont les noms de votre organisation et de votre environnement Apigee Edge. Vous pouvez utiliser ce fichier pour modifier la configuration, puis la recharger sans temps d'arrêt. Par exemple, si vous ajoutez et configurez un plug-in, vous pouvez actualiser la configuration sans temps d'arrêt, comme expliqué ci-dessous.
Si Edge Microgateway est en cours d'exécution (option sans temps d'arrêt) :
- Rechargez la configuration d'Edge Microgateway :
edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET
Où :
- $ORG est le nom de votre organisation Edge (vous devez être un administrateur de l'organisation).
- $ENV est un environnement de votre organisation (par exemple, "test" ou "prod").
- $KEY est la clé renvoyée précédemment par la commande de configuration.
- $SECRET est la clé renvoyée précédemment par la commande de configuration.
Exemple
edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \ -s 05c14356e42ed1...4e34ab0cc824
Si Edge Microgateway est arrêté :
- Redémarrez Edge Microgateway :
edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
Où :
- $ORG est le nom de votre organisation Edge (vous devez être un administrateur de l'organisation).
- $ENV est un environnement de votre organisation (par exemple, "test" ou "prod").
- $KEY est la clé renvoyée précédemment par la commande de configuration.
- $SECRET est la clé renvoyée précédemment par la commande de configuration.
Exemple :
edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \ -s 05c1435...e34ab0cc824
Voici un exemple de fichier de configuration. Pour en savoir plus sur les paramètres du fichier de configuration, consultez la documentation de référence sur la configuration d'Edge Microgateway.
edge_config: bootstrap: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' vaultName: microgateway authUri: 'https://%s-%s.apigee.net/edgemicro-auth' baseUri: >- https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s bootstrapMessage: Please copy the following property to the edge micro agent config keySecretMessage: The following credentials are required to start edge micro products: 'https://docs-test.apigee.net/edgemicro-auth/products' edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true oauth: allowNoAuthorization: false allowInvalidAuthorization: false verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey' analytics: uri: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test
Définir des variables d'environnement
Les commandes de l'interface de ligne de commande qui nécessitent des valeurs pour votre organisation et votre environnement Edge, ainsi que la clé et le secret nécessaires au démarrage d'Edge Microgateway, peuvent être stockées dans ces variables d'environnement :
EDGEMICRO_ORGEDGEMICRO_ENVEDGEMICRO_KEYEDGEMICRO_SECRET
La définition de ces variables est facultative. Si vous les définissez, vous n'avez pas besoin de spécifier leurs valeurs lorsque vous utilisez l'interface de ligne de commande (CLI) pour configurer et démarrer Edge Microgateway.
Configurer SSL sur le serveur Edge Microgateway
Regardez les vidéos suivantes pour découvrir comment configurer TLS dans Apigee Edge Microgateway :
| Vidéo | Description |
|---|---|
| Configurer le protocole TLS unidirectionnel Northbound | Découvrez comment configurer TLS dans Apigee Edge Microgateway. Cette vidéo présente le protocole TLS et son importance, présente le protocole TLS dans Edge Microgateway et montre comment configurer le protocole TLS unidirectionnel Northbound. |
| Configurer le protocole TLS bidirectionnel Northbound | Il s'agit de la deuxième vidéo sur la configuration de TLS dans Apigee Edge Microgateway. Cette vidéo explique comment configurer le protocole TLS bidirectionnel northbound. |
| Configurer le protocole TLS Southbound unidirectionnel et bidirectionnel | Cette troisième vidéo sur la configuration de TLS dans Apigee Edge Microgateway explique comment configurer TLS unidirectionnel et bidirectionnel southbound. |
Vous pouvez configurer le serveur Microgateway pour qu'il utilise SSL. Par exemple, lorsque SSL est configuré, vous pouvez appeler des API via Edge Microgateway avec le protocole "https", comme suit :
https://localhost:8000/myapi
Pour configurer SSL sur le serveur Microgateway, procédez comme suit :
- Générez ou obtenez un certificat SSL et une clé à l'aide de l'utilitaire openssl ou de la méthode de votre choix.
- Ajoutez l'attribut
edgemicro:sslau fichier de configuration Edge Microgateway. Pour obtenir la liste complète des options, consultez le tableau ci-dessous. Exemple :
edgemicro: ssl: key: <absolute path to the SSL key file> cert: <absolute path to the SSL cert file> passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2 requestCert: true
- Redémarrez Edge Microgateway. Suivez les étapes décrites dans Apporter des modifications de configuration en fonction du fichier de configuration que vous avez modifié : le fichier par défaut ou le fichier de configuration de l'environnement d'exécution.
Voici un exemple de la section edgemicro du fichier de configuration, avec SSL configuré :
edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth ssl: key: /MyHome/SSL/em-ssl-keys/server.key cert: /MyHome/SSL/em-ssl-keys/server.crt passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2
Voici la liste de toutes les options de serveur compatibles :
| Option | Description |
|---|---|
key |
Chemin d'accès à un fichier ca.key (au format PEM). |
cert |
Chemin d'accès à un fichier ca.cert (au format PEM). |
pfx |
Chemin d'accès à un fichier pfx contenant la clé privée, le certificat et les certificats d'autorité de certification du client au format PFX. |
passphrase |
Chaîne contenant la phrase secrète de la clé privée ou du fichier PFX. |
ca |
Chemin d'accès à un fichier contenant une liste de certificats de confiance au format PEM. |
ciphers |
Chaîne décrivant les algorithmes de chiffrement à utiliser, séparés par un deux-points (":"). |
rejectUnauthorized |
Si la valeur est "true", le certificat du serveur est validé par rapport à la liste des autorités de certification fournies. Si la validation échoue, une erreur est renvoyée. |
secureProtocol |
Méthode SSL à utiliser. Par exemple, SSLv3_method pour forcer SSL à la version 3. |
servername |
Nom du serveur pour l'extension TLS SNI (Server Name Indication). |
requestCert |
"true" pour le SSL bidirectionnel ; "false" pour le SSL unidirectionnel |
Utiliser les options SSL/TLS du client
Vous pouvez configurer Edge Microgateway pour qu'il agisse en tant que client TLS ou SSL lors de la connexion aux points de terminaison cibles. Dans le fichier de configuration de Microgateway, utilisez l'élément targets pour définir les options SSL/TLS. Notez que vous pouvez spécifier plusieurs cibles spécifiques. Vous trouverez ci-dessous un exemple de configuration multicible.
Cet exemple fournit des paramètres qui seront appliqués à tous les hôtes :
edgemicro:
...
targets:
ssl:
client:
key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: trueDans cet exemple, les paramètres ne sont appliqués qu'à l'hôte spécifié :
edgemicro:
...
targets:
- host: 'myserver.example.com'
ssl:
client:
key: /Users/myname/twowayssl/ssl/client.key
cert: /Users/myname/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: trueVoici un exemple pour TLS :
edgemicro:
...
targets:
- host: 'myserver.example.com'
tls:
client:
pfx: /Users/myname/twowayssl/ssl/client.pfx
passphrase: admin123
rejectUnauthorized: trueSi vous souhaitez appliquer des paramètres TLS/SSL à plusieurs cibles spécifiques, vous devez spécifier le premier hôte de la configuration comme "vide", ce qui active les requêtes universelles, puis spécifier des hôtes spécifiques dans n'importe quel ordre. Dans cet exemple, les paramètres sont appliqués à plusieurs hôtes spécifiques :
targets:
- host: ## Note that this value must be "empty"
ssl:
client:
key: /Users/myname/twowayssl/ssl/client.key
cert: /Users/myname/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: true
- host: 'myserver1.example.com'
ssl:
client:
key: /Users/myname/twowayssl/ssl/client.key
cert: /Users/myname/twowayssl/ssl/ca.crt
rejectUnauthorized: true
- host: 'myserver2.example.com'
ssl:
client:
key: /Users/myname/twowayssl/ssl/client.key
cert: /Users/myname/twowayssl/ssl/ca.crt
rejectUnauthorized: trueVoici la liste de toutes les options client compatibles :
| Option | Description |
|---|---|
pfx |
Chemin d'accès à un fichier pfx contenant la clé privée, le certificat et les certificats d'autorité de certification du client au format PFX. |
key |
Chemin d'accès à un fichier ca.key (au format PEM). |
passphrase |
Chaîne contenant la phrase secrète de la clé privée ou du fichier PFX. |
cert |
Chemin d'accès à un fichier ca.cert (au format PEM). |
ca |
Chemin d'accès à un fichier contenant une liste de certificats de confiance au format PEM. |
ciphers |
Chaîne décrivant les algorithmes de chiffrement à utiliser, séparés par un deux-points (":"). |
rejectUnauthorized |
Si la valeur est "true", le certificat du serveur est validé par rapport à la liste des autorités de certification fournies. Si la validation échoue, une erreur est renvoyée. |
secureProtocol |
Méthode SSL à utiliser. Par exemple, SSLv3_method pour forcer SSL à la version 3. |
servername |
Nom du serveur pour l'extension TLS SNI (Server Name Indication). |
Personnaliser le proxy edgemicro-auth
Par défaut, Edge Microgateway utilise un proxy déployé sur Apigee Edge pour l'authentification OAuth2.
Ce proxy est déployé lorsque vous exécutez edgemicro configure pour la première fois. Vous pouvez modifier la configuration par défaut de ce proxy pour ajouter la prise en charge des revendications personnalisées à un jeton Web JSON (JWT), configurer l'expiration des jetons et générer des jetons d'actualisation. Pour en savoir plus, consultez la page edgemicro-auth sur GitHub.
Utiliser un service d'authentification personnalisé
Par défaut, Edge Microgateway utilise un proxy déployé sur Apigee Edge pour l'authentification OAuth2.
Ce proxy est déployé lorsque vous exécutez edgemicro configure pour la première fois. Par défaut, l'URL de ce proxy est spécifiée dans le fichier de configuration d'Edge Microgateway comme suit :
authUri: https://myorg-myenv.apigee.net/edgemicro-auth
Si vous souhaitez utiliser votre propre service personnalisé pour gérer l'authentification, modifiez la valeur authUri dans le fichier de configuration pour qu'elle pointe vers votre service. Par exemple, vous pouvez avoir un service qui utilise LDAP pour valider l'identité.
Gérer les fichiers journaux
Edge Microgateway consigne des informations sur chaque requête et réponse. Les fichiers journaux fournissent des informations utiles pour le débogage et le dépannage.
Emplacement de stockage des fichiers journaux
Par défaut, les fichiers journaux sont stockés dans /var/tmp.
Modifier le répertoire des fichiers journaux par défaut
Le répertoire dans lequel les fichiers journaux sont stockés est spécifié dans le fichier de configuration d'Edge Microgateway. Consultez également Modifier la configuration.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Modifiez la valeur dir pour spécifier un autre répertoire de fichiers journaux.
Envoyer les journaux à la console
Vous pouvez configurer la journalisation de sorte que les informations de journal soient envoyées vers la sortie standard plutôt que vers un fichier journal. Définissez l'option to_console sur "true" comme suit :
edgemicro:
logging:
to_console: trueAvec ce paramètre, les journaux seront envoyés vers la sortie standard. Pour le moment, vous ne pouvez pas envoyer de journaux à la fois vers stdout et vers un fichier journal.
Définir le niveau de journalisation
Vous spécifiez le niveau de journalisation à utiliser dans la configuration edgemicro. Pour obtenir la liste complète des niveaux de journalisation et leur description, consultez la section Attributs edgemicro.
Par exemple, la configuration suivante définit le niveau de journalisation sur debug :
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: debug dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Modifier les intervalles de journalisation
Vous pouvez configurer ces intervalles dans le fichier de configuration d'Edge Microgateway. Consultez également Modifier la configuration.
Les attributs configurables sont les suivants :
- stats_log_interval : (par défaut : 60) intervalle, en secondes, entre l'écriture de l'enregistrement de statistiques dans le fichier journal de l'API.
- rotate_interval (par défaut : 24) : intervalle, en heures, entre les rotations des fichiers journaux. Exemple :
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Assouplir les autorisations strictes des fichiers journaux
Par défaut, Edge Microgateway génère le fichier journal de l'application (api-log.log) avec le niveau d'autorisation de fichier défini sur 0600. Ce niveau d'autorisation ne permet pas aux applications ou aux utilisateurs externes de lire le fichier journal. Pour assouplir ce niveau d'autorisation strict, définissez logging:disableStrictLogFile sur true. Lorsque cet attribut est défini sur true, le fichier journal est créé avec l'autorisation de fichier définie sur 0755. Si la valeur est false ou si l'attribut n'est pas fourni, l'autorisation est définie par défaut sur 0600.
Ajouté dans la version 3.2.3.
Exemple :
edgemicro: logging: disableStrictLogFile: true
Bonnes pratiques de maintenance des fichiers journaux
À mesure que les données des fichiers journaux s'accumulent au fil du temps, Apigee vous recommande d'adopter les pratiques suivantes :
- Les fichiers journaux pouvant devenir assez volumineux, assurez-vous que le répertoire des fichiers journaux dispose d'un espace suffisant. Consultez les sections Où sont stockés les fichiers journaux et Comment modifier le répertoire par défaut des fichiers journaux.
- Supprimez ou déplacez les fichiers journaux vers un répertoire d'archive distinct au moins une fois par semaine.
- Si votre règle consiste à supprimer les journaux, vous pouvez utiliser la commande CLI
edgemicro log -cpour supprimer (nettoyer) les anciens journaux.
Convention d'attribution de noms aux fichiers journaux
Chaque instance Edge Microgateway génère un fichier journal avec l'extension .log. La convention d'attribution de noms pour les fichiers journaux est la suivante :
edgemicro-HOST_NAME-INSTANCE_ID-api.log
Exemple :
edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log
À propos du contenu des fichiers journaux
Ajouté dans la version 2.3.3
Par défaut, le service de journalisation omet le JSON des proxys et produits téléchargés, ainsi que le jeton Web JSON (JWT). Si vous souhaitez afficher ces objets dans la console, définissez le flag de ligne de commande DEBUG=* lorsque vous démarrez Edge Microgateway. Exemple :
DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456
Contenu du fichier journal "api"
Le fichier journal "api" contient des informations détaillées sur le flux de requêtes et de réponses via Edge Microgateway. Les fichiers journaux "api" sont nommés comme suit :
edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log
Pour chaque requête envoyée à Edge Microgateway, quatre événements sont capturés dans le fichier journal "api" :
- Requête entrante du client
- Requête sortante envoyée à la cible
- Réponse entrante de la cible
- Réponse sortante au client
Chacune de ces entrées distinctes est représentée par une notation abrégée pour rendre les fichiers journaux plus compacts. Voici quatre exemples d'entrées représentant chacun des quatre événements. Dans le fichier journal, elles se présentent comme suit (les numéros de ligne sont fournis à titre indicatif uniquement et n'apparaissent pas dans le fichier journal).
(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0 (2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0 (3) 1436403888672 info tres s=200, d=7, i=0 (4) 1436403888676 info res s=200, d=11, i=0
Examinons-les un par un :
1. Exemple de requête entrante du client :
1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
- 1436403888651 : date Unix
- info : niveau de journalisation. Cette valeur dépend du contexte de la transaction et du niveau de journalisation défini dans la configuration
edgemicro. Consultez Définir le niveau de journalisation. Pour les enregistrements de statistiques, le niveau est défini surstats. Les enregistrements de statistiques sont signalés à intervalles réguliers définis avec la configurationstats_log_interval. Consultez également Modifier les intervalles de journalisation. - req : identifie l'événement. Dans ce cas, demandez-le au client.
- m : verbe HTTP utilisé dans la requête.
- u : partie de l'URL qui suit le chemin de base.
- h : hôte et numéro de port sur lesquels Edge Microgateway écoute.
- r : hôte et port distants d'où provient la requête du client.
- i : ID de la requête. Les quatre entrées d'événement partageront cet ID. Chaque requête se voit attribuer un ID de requête unique. La corrélation des enregistrements de journaux par ID de requête peut fournir des informations précieuses sur la latence de la cible.
- d : durée en millisecondes depuis la réception de la requête par Edge Microgateway. Dans l'exemple ci-dessus, la réponse de la cible à la requête 0 a été reçue après 7 millisecondes (ligne 3), et la réponse a été envoyée au client après 4 millisecondes supplémentaires (ligne 4). En d'autres termes, la latence totale de la requête était de 11 millisecondes, dont 7 millisecondes ont été prises par la cible et 4 millisecondes par Edge Microgateway lui-même.
2. Exemple de requête sortante envoyée à la cible :
1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
- 1436403888651 : date Unix
- info : niveau de journalisation. Cette valeur dépend du contexte de la transaction et du niveau de journalisation défini dans la configuration
edgemicro. Consultez Définir le niveau de journalisation. Pour les enregistrements de statistiques, le niveau est défini surstats. Les enregistrements de statistiques sont signalés à intervalles réguliers définis avec la configurationstats_log_interval. Consultez également Modifier les intervalles de journalisation. - treq : identifie l'événement. Dans ce cas, la requête cible.
- m : verbe HTTP utilisé dans la requête cible.
- u : partie de l'URL qui suit le chemin de base.
- h : hôte et numéro de port de la cible backend.
- i : ID de l'entrée de journal. Les quatre entrées d'événement partageront cet ID.
3. Exemple de réponse entrante de la cible
1436403888672 info tres s=200, d=7, i=0
1436403888651 : date Unix
- info : niveau de journalisation. Cette valeur dépend du contexte de la transaction et du niveau de journalisation défini dans la configuration
edgemicro. Consultez Définir le niveau de journalisation. Pour les enregistrements de statistiques, le niveau est défini surstats. Les enregistrements de statistiques sont signalés à intervalles réguliers définis avec la configurationstats_log_interval. Consultez également Modifier les intervalles de journalisation. - tres : identifie l'événement. Dans ce cas, la réponse cible.
- s : état de la réponse HTTP.
- d : durée en millisecondes. Temps nécessaire à l'appel d'API par la cible.
- i : ID de l'entrée de journal. Les quatre entrées d'événement partageront cet ID.
4. Exemple de réponse sortante au client
1436403888676 info res s=200, d=11, i=0
1436403888651 : date Unix
- info : niveau de journalisation. Cette valeur dépend du contexte de la transaction et du niveau de journalisation défini dans la configuration
edgemicro. Consultez Définir le niveau de journalisation. Pour les enregistrements de statistiques, le niveau est défini surstats. Les enregistrements de statistiques sont signalés à intervalles réguliers définis avec la configurationstats_log_interval. Consultez également Modifier les intervalles de journalisation. - res : identifie l'événement. Dans ce cas, la réponse au client.
- s : état de la réponse HTTP.
- d : durée en millisecondes. Il s'agit du temps total pris par l'appel d'API, y compris le temps pris par l'API cible et le temps pris par Edge Microgateway lui-même.
- i : ID de l'entrée de journal. Les quatre entrées d'événement partageront cet ID.
Planification du fichier journal
La rotation des fichiers journaux est effectuée à l'intervalle spécifié par l'attribut de configuration rotate_interval. Les entrées continueront d'être ajoutées au même fichier journal jusqu'à l'expiration de l'intervalle de rotation. Cependant, chaque fois qu'Edge Microgateway est redémarré, il reçoit un nouvel UID et crée un nouvel ensemble de fichiers journaux avec cet UID. Consultez également Bonnes pratiques de maintenance des fichiers journaux.
Messages d'erreur
Certaines entrées de journal contiennent des messages d'erreur. Pour identifier où et pourquoi les erreurs se produisent, consultez la documentation de référence sur les erreurs Edge Microgateway.
Documentation de référence sur la configuration d'Edge Microgateway
Emplacement du fichier de configuration
Les attributs de configuration décrits dans cette section se trouvent dans le fichier de configuration Edge Microgateway. Consultez également Modifier la configuration.
Attributs edge_config
Ces paramètres permettent de configurer l'interaction entre l'instance Edge Microgateway et Apigee Edge.
- bootstrap : (par défaut : aucun) URL pointant vers un service spécifique à Edge Microgateway s'exécutant sur Apigee Edge. Edge Microgateway utilise ce service pour communiquer avec Apigee Edge. Cette URL est renvoyée lorsque vous exécutez la commande pour générer la paire de clés publique/privée :
edgemicro genkeys. Pour en savoir plus, consultez Configurer Edge Microgateway. - jwt_public_key : (par défaut : aucune) URL qui pointe vers le proxy Edge Microgateway déployé sur Apigee Edge. Ce proxy sert de point de terminaison d'authentification pour émettre des jetons d'accès signés pour les clients. Cette URL est renvoyée lorsque vous exécutez la commande pour déployer le proxy : edgemicro configure. Pour en savoir plus, consultez Configurer Edge Microgateway.
- quotaUri : définissez cette propriété de configuration si vous souhaitez gérer les quotas via le proxy
edgemicro-authdéployé dans votre organisation. Si cette propriété n'est pas définie, le point de terminaison de quota est défini par défaut sur le point de terminaison Edge Microgateway interne.edge_config: quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
Attributs edgemicro
Ces paramètres configurent le processus Edge Microgateway.
- port : (par défaut : 8000) numéro de port sur lequel le processus Edge Microgateway écoute.
- max_connections : (par défaut : -1) spécifie le nombre maximal de connexions entrantes simultanées qu'Edge Microgateway peut recevoir. Si ce nombre est dépassé, l'état suivant est renvoyé :
res.statusCode = 429; // Too many requests
- max_connections_hard : (par défaut : -1) Nombre maximal de requêtes simultanées qu'Edge Microgateway peut recevoir avant d'arrêter la connexion. Ce paramètre est destiné à déjouer les attaques par déni de service. En règle générale, définissez-le sur un nombre supérieur à max_connections.
-
logging :
-
level : (par défaut : error)
- info : (recommandé) consigne toutes les requêtes et réponses qui transitent par une instance Edge Microgateway.
- warn : ne consigne que les messages d'avertissement.
- error : consigne uniquement les messages d'erreur.
- debug : consigne les messages de débogage ainsi que les messages d'information, d'avertissement et d'erreur.
- trace : consigne les informations de trace pour les messages d'erreur, ainsi que les messages d'information, d'avertissement et d'erreur.
- none : ne crée pas de fichier journal.
- dir (par défaut : /var/tmp) : répertoire dans lequel les fichiers journaux sont stockés.
- stats_log_interval : (par défaut : 60) intervalle, en secondes, entre l'écriture de l'enregistrement des statistiques dans le fichier journal de l'API.
- rotate_interval (par défaut : 24) : intervalle, en heures, entre les rotations des fichiers journaux.
-
level : (par défaut : error)
- plug-ins : les plug-ins ajoutent des fonctionnalités à Edge Microgateway. Pour en savoir plus sur le développement de plug-ins, consultez Développer des plug-ins personnalisés.
- dir : chemin relatif du répertoire ./gateway au répertoire ./plugins, ou chemin absolu.
- sequence : liste des modules de plug-in à ajouter à votre instance Edge Microgateway. Les modules s'exécuteront dans l'ordre dans lequel ils sont spécifiés ici.
-
debug : ajoute le débogage à distance au processus Edge Microgateway.
- port : numéro de port sur lequel écouter. Par exemple, configurez votre débogueur IDE pour qu'il écoute sur ce port.
- args : arguments du processus de débogage. Exemple :
args --nolazy
- config_change_poll_interval: (par défaut : 600 secondes) : Edge Microgateway charge régulièrement une nouvelle configuration et l'exécute si des modifications ont été apportées. L'interrogation récupère toutes les modifications apportées sur Edge (modifications apportées aux produits, aux proxys compatibles avec Microgateway, etc.) ainsi que les modifications apportées au fichier de configuration local.
- disable_config_poll_interval (par défaut : false) : définissez cette option sur true pour désactiver l'interrogation automatique des modifications.
- request_timeout : définit un délai avant expiration pour les requêtes cibles. Le délai avant expiration est défini en secondes. Si un délai avant expiration est atteint, Edge Microgateway répond avec un code d'état 504. (Ajouté dans la version 2.4.x)
- keep_alive_timeout : cette propriété vous permet de définir le délai avant expiration d'Edge Microgateway (en millisecondes). (Par défaut : 5 secondes) (Ajouté dans la version 3.0.6)
- headers_timeout : cet attribut limite la durée (en millisecondes) pendant laquelle l'analyseur HTTP attend de recevoir les en-têtes HTTP complets.
Exemple :
edgemicro: keep_alive_timeout: 6000 headers_timeout: 12000
En interne, le paramètre définit l'attribut Node.js
Server.headersTimeoutsur les requêtes. (Par défaut : cinq secondes de plus que la durée définie avecedgemicro.keep_alive_timeout. Ce paramètre par défaut empêche les équilibreurs de charge ou les proxys de supprimer la connexion par erreur.) (Ajouté dans la v3.1.1) - noRuleMatchAction (chaîne) : action à effectuer (autoriser ou refuser l'accès) si la règle de correspondance spécifiée dans le plug-in
accesscontroln'est pas résolue (ne correspond pas). Valeurs valides :ALLOWouDENY. Valeur par défaut :ALLOW(ajouté dans la version 3.1.7) - enableAnalytics (valeur par défaut : true) : définissez l'attribut sur false pour empêcher le chargement du plug-in d'analyse. Dans ce cas, aucun appel ne sera effectué vers Apigee Edge Analytics. Si cet attribut est défini sur true ou s'il n'est pas fourni, le plug-in Analytics fonctionne comme d'habitude. Pour en savoir plus, consultez Attributs edgemicro. (Ajouté dans la version 3.1.8).
Exemple :
edgemicro enableAnalytics=false|true
- on_target_response_abort : cet attribut vous permet de contrôler le comportement d'Edge Microgateway si la connexion entre le client (Edge Microgateway) et le serveur cible se ferme prématurément.
Valeur Description Par défaut Si on_target_response_abortn'est pas spécifié, le comportement par défaut consiste à tronquer la réponse sans afficher d'erreur. Dans les fichiers journaux, un message d'avertissement s'affiche avectargetResponse abortedet un code de réponse 502.appendErrorToClientResponseBodyL'erreur personnalisée TargetResponseAbortedest renvoyée au client. Dans les fichiers journaux, un message d'avertissement s'affiche avectargetResponse abortedet un code de réponse 502. En outre, l'erreurTargetResponseAbortedest consignée avec le messageTarget response ended prematurely..abortClientRequestEdge Microgateway annule la requête et un avertissement est écrit dans les fichiers journaux : TargetResponseAbortedavec le code d'état de requête 502.
Exemple :
edgemicro: on_target_response_abort: appendErrorToClientResponseBody | abortClientRequest
attributs d'en-tête
Ces paramètres configurent la manière dont certains en-têtes HTTP sont traités.
- x-forwarded-for : (valeur par défaut : true) Définissez cette option sur "false" pour empêcher la transmission des en-têtes x-forwarded-for à la cible. Notez que si un en-tête x-forwarded-for est présent dans la requête, sa valeur sera définie sur la valeur client-ip dans Edge Analytics.
- x-forwarded-host : (par défaut : true) Définissez cette option sur "false" pour empêcher la transmission des en-têtes x-forwarded-host à la cible.
- x-request-id : (par défaut : true) Définissez cette option sur "false" pour empêcher la transmission des en-têtes x-request-id à la cible.
- x-response-time : (par défaut : true) Définissez cette option sur "false" pour empêcher la transmission des en-têtes x-response-time à la cible.
- via : (par défaut : true) définissez cette option sur "false" pour empêcher la transmission des en-têtes "via" à la cible.
attributs oauth
Ces paramètres configurent la manière dont l'authentification du client est appliquée par Edge Microgateway.
- allowNoAuthorization : (par défaut : false) si la valeur est définie sur true, les appels d'API sont autorisés à passer par Edge Microgateway sans aucun en-tête d'autorisation. Définissez cette option sur "false" pour exiger un en-tête d'autorisation (par défaut).
- allowInvalidAuthorization : (par défaut : false) si la valeur est définie sur "true", les appels d'API sont autorisés à passer si le jeton transmis dans l'en-tête Authorization n'est pas valide ou a expiré. Définissez cette option sur "false" pour exiger des jetons valides (par défaut).
- authorization-header : (par défaut : Authorization: Bearer) en-tête utilisé pour envoyer le jeton d'accès à Edge Microgateway. Vous pouvez modifier la valeur par défaut si la cible doit utiliser l'en-tête Authorization à d'autres fins.
- api-key-header : (par défaut : x-api-key) nom de l'en-tête ou du paramètre de requête utilisé pour transmettre une clé API à Edge Microgateway. Consultez également Utiliser une clé API.
- keep-authorization-header (par défaut : false) : si la valeur est définie sur "true", l'en-tête Authorization envoyé dans la requête est transmis à la cible (il est conservé).
- allowOAuthOnly : si la valeur est définie sur "true", chaque API doit comporter un en-tête d'autorisation avec un jeton d'accès de support. Permet d'autoriser uniquement le modèle de sécurité OAuth (tout en maintenant la rétrocompatibilité). (Ajouté dans la version 2.4.x)
- allowAPIKeyOnly : si la valeur est définie sur "true", chaque API doit comporter un en-tête x-api-key (ou un emplacement personnalisé) avec une clé API.Vous pouvez ainsi n'autoriser que le modèle de sécurité de clé API (tout en conservant la rétrocompatibilité). (Ajouté à la version 2.4.x)
- gracePeriod : ce paramètre permet d'éviter les erreurs causées par de légères différences entre l'horloge de votre système et les heures "Not Before" (nbf) ou "Issued At" (iat) spécifiées dans le jeton d'autorisation JWT. Définissez ce paramètre sur le nombre de secondes à autoriser pour de tels écarts. (Ajouté dans la version 2.5.7)
Attributs spécifiques au plug-in
Pour en savoir plus sur les attributs configurables de chaque plug-in, consultez la section "Utiliser des plug-ins".
Filtrer les proxys
Vous pouvez filtrer les proxys compatibles avec Microgateway qu'une instance Edge Microgateway traitera.
Lorsque Edge Microgateway démarre, il télécharge tous les proxys compatibles avec Microgateway dans l'organisation à laquelle il est associé. Utilisez la configuration suivante pour limiter les proxys que la micro-passerelle traitera. Par exemple, cette configuration limite à trois le nombre de proxys que la microgateway traitera : edgemicro_proxy-1, edgemicro_proxy-2 et edgemicro_proxy-3 :
edgemicro: proxies: - edgemicro_proxy-1 - edgemicro_proxy-2 - edgemicro_proxy-3
Filtrage des produits par nom
Utilisez la configuration suivante pour limiter le nombre de produits d'API qu'Edge Microgateway télécharge et traite. Pour filtrer les produits téléchargés, ajoutez le paramètre de requête productnamefilter à l'API /products répertoriée dans le fichier *.config.yaml d'Edge Microgateway. Exemple :
edge_config:
bootstrap: >-
https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey'
managementUri: 'https://api.enterprise.apigee.com'
vaultName: microgateway
authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
baseUri: >-
https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
bootstrapMessage: Please copy the following property to the edge micro agent config
keySecretMessage: The following credentials are required to start edge micro
products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'
Notez que la valeur du paramètre de requête doit être spécifiée au format d'expression régulière et encodée au format URL. Par exemple, l'expression régulière ^[Ee]dgemicro.*$ détecte des noms tels que "edgemicro-test-1" , "edgemicro_demo" et "Edgemicro_New_Demo". La valeur encodée au format URL, adaptée à une utilisation dans le paramètre de requête, est : %5E%5BEe%5Ddgemicro.%2A%24.
Le résultat de débogage suivant montre que seuls les produits filtrés ont été téléchargés :
...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
"apiProduct":[
{
"apiResources":[
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1590549037549,
"createdBy":"k***@g********m",
"displayName":"test upper case in name",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1590549037549,
"lastModifiedBy":"k***@g********m",
"name":"Edgemicro_New_Demo",
"proxies":[
"catchall"
],
"quota":"null",
"quotaInterval":"null",
"quotaTimeUnit":"null",
"scopes":[
]
},
{
"apiResources":[
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1590548328998,
"createdBy":"k***@g********m",
"displayName":"edgemicro test 1",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1590548328998,
"lastModifiedBy":"k***@g********m",
"name":"edgemicro-test-1",
"proxies":[
"Lets-Encrypt-Validation-DoNotDelete"
],
"quota":"null",
"quotaInterval":"null",
"quotaTimeUnit":"null",
"scopes":[
]
},
{
"apiResources":[
"/",
"/**"
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1558182193472,
"createdBy":"m*********@g********m",
"displayName":"Edge microgateway demo product",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1569077897465,
"lastModifiedBy":"m*********@g********m",
"name":"edgemicro_demo",
"proxies":[
"edgemicro-auth",
"edgemicro_hello"
],
"quota":"600",
"quotaInterval":"1",
"quotaTimeUnit":"minute",
"scopes":[
]
}
]
}Filtrer les produits par attributs personnalisés
Pour filtrer les produits en fonction d'attributs personnalisés :
- Dans l'interface utilisateur Edge, sélectionnez le proxy edgemicro_auth dans l'organisation/l'environnement où vous avez configuré Edge Microgateway.
- Dans l'onglet "Develop" (Développer), ouvrez la règle JavaCallout dans l'éditeur.
- Ajoutez un attribut personnalisé avec la clé
products.filter.attributeset une liste de noms d'attributs séparés par une virgule. Seuls les produits contenant l'un des noms d'attributs personnalisés seront renvoyés à Edge Microgateway. - Vous pouvez éventuellement désactiver la vérification pour voir si le produit est activé pour l'environnement actuel en définissant l'attribut personnalisé
products.filter.env.enablesurfalse. (La valeur par défaut est "true".) - (Cloud privé uniquement) Si vous utilisez Edge for Private Cloud, définissez la propriété
org.noncpssurtruepour extraire les produits des environnements non CPS.
Exemple :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout">
<DisplayName>JavaCallout</DisplayName>
<FaultRules/>
<Properties>
<Property name="products.filter.attributes">attrib.one, attrib.two</Property>
<Property name="products.filter.env.enable">false</Property>
<Property name="org.noncps">true</Property>
</Properties>
<ClassName>io.apigee.microgateway.javacallout.Callout</ClassName>
<ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL>
</JavaCallout>Filtrage des produits par état de révocation
Les produits d'API ont trois codes d'état : "En attente", "Approuvé" et "Révoqué". Une nouvelle propriété appelée allowProductStatus a été ajoutée à la règle Set JWT Variables dans le proxy edgemicro-auth. Pour utiliser cette propriété afin de filtrer les produits d'API listés dans le jeton JWT :
- Ouvrez le proxy edgemicro-auth dans l'éditeur de proxy Apigee.
- Ajoutez la propriété
allowProductStatusau code XML de la règle SetJWTVariables et spécifiez une liste de codes d'état séparés par une virgule sur lesquels filtrer. Par exemple, pour filtrer sur les états En attente et Révoqué :<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Javascript timeLimit="20000" async="false" continueOnError="false" enabled="true" name="Set-JWT-Variables"> <DisplayName>Set JWT Variables</DisplayName> <FaultRules/> <Properties> <Property name="allowProductStatus">Pending,Revoked</Property> </Properties> <ResourceURL>jsc://set-jwt-variables.js</ResourceURL> </Javascript>
Si vous ne souhaitez lister que les produits approuvés, définissez la propriété comme suit :
<Property name="allowProductStatus">Approved</Property>
- Enregistrez le proxy.
Si la balise Property n'est pas présente, les produits associés à tous les codes d'état seront listés dans le jeton JWT.
Pour utiliser cette nouvelle propriété, vous devez mettre à niveau le proxy edgemicro-auth.
Configurer la fréquence d'envoi des données analytiques
Utilisez ces paramètres de configuration pour contrôler la fréquence à laquelle Edge Microgateway envoie des données d'analyse à Apigee :
- bufferSize (facultatif) : nombre maximal d'enregistrements d'analyse que le tampon peut contenir avant de commencer à supprimer les enregistrements les plus anciens. Par défaut : 10000
- batchSize (facultatif) : taille maximale d'un lot d'enregistrements d'analyse envoyés à Apigee. Par défaut : 500
- flushInterval (facultatif) : nombre de millisecondes entre chaque vidage d'un lot d'enregistrements d'analyse envoyés à Apigee. Valeur par défaut : 5000
Exemple :
analytics: bufferSize: 15000 batchSize: 1000 flushInterval: 6000
Masquer les données d'analyse
La configuration suivante empêche l'affichage des informations sur le chemin de la requête dans Edge Analytics. Ajoutez les éléments suivants à la configuration de la micro-passerelle pour masquer l'URI de la demande et/ou le chemin d'accès de la requête. Notez que l'URI se compose du nom d'hôte et du chemin d'accès de la requête.
analytics: mask_request_uri: 'string_to_mask' mask_request_path: 'string_to_mask'
Séparer les appels d'API dans Edge Analytics
Vous pouvez configurer le plug-in d'analyse pour séparer un chemin d'API spécifique afin qu'il apparaisse en tant que proxy distinct dans les tableaux de bord Edge Analytics. Par exemple, vous pouvez séparer une API de vérification d'état dans le tableau de bord pour éviter de la confondre avec les appels de proxy d'API réels. Dans le tableau de bord Analytics, les proxys séparés suivent le format de nommage suivant :
edgemicro_proxyname-health
L'image suivante montre deux proxys distincts dans le tableau de bord Analytics : edgemicro_hello-health et edgemicro_mock-health :

Utilisez ces paramètres pour séparer les chemins d'accès relatifs et absolus dans le tableau de bord Analytics en tant que proxys distincts :
- relativePath (facultatif) : spécifie un chemin relatif à séparer dans le tableau de bord Analytics. Par exemple, si vous spécifiez
/healthcheck, tous les appels d'API contenant le chemin d'accès/healthchecks'afficheront dans le tableau de bord sous la formeedgemicro_proxyname-health. Notez que cette option ignore le chemin de base du proxy. Pour séparer les données en fonction d'un chemin d'accès complet, y compris le chemin d'accès de base, utilisez l'optionproxyPath. - proxyPath (facultatif) : spécifie un chemin d'accès complet au proxy d'API, y compris le chemin de base du proxy, à séparer dans le tableau de bord d'analyse. Par exemple, si vous spécifiez
/mocktarget/healthcheck, où/mocktargetest le chemin de base du proxy, tous les appels d'API avec le chemin d'accès/mocktarget/healthcheckapparaîtront dans le tableau de bord sous la formeedgemicro_proxyname-health.
Par exemple, dans la configuration suivante, tout chemin d'API contenant /healthcheck sera séparé par le plug-in d'analyse. Cela signifie que /foo/healthcheck et /foo/bar/healthcheck seront séparés en tant que proxy distinct appelé edgemicro_proxyname-health dans le tableau de bord d'analyse.
analytics:
uri: >-
https://xx/edgemicro/ax/org/docs/environment/test
bufferSize: 100
batchSize: 50
flushInterval: 500
relativePath: /healthcheckDans la configuration suivante, toute API dont le chemin d'accès au proxy est /mocktarget/healthcheck sera séparée en tant que proxy distinct appelé edgemicro_proxyname-health dans le tableau de bord d'analyse.
analytics:
uri: >-
https://xx/edgemicro/ax/org/docs/environment/test
bufferSize: 100
batchSize: 50
flushInterval: 500
proxyPath: /mocktarget/healthcheckConfigurer Edge Microgateway derrière un pare-feu d'entreprise
Utiliser un proxy HTTP pour communiquer avec Apigee Edge
Ajouté dans la version 3.1.2.
Pour utiliser un proxy HTTP pour la communication entre Edge Microgateway et Apigee Edge, procédez comme suit :
- Définissez les variables d'environnement
HTTP_PROXY,HTTPS_PROXYetNO_PROXY. Ces variables contrôlent les hôtes de chaque proxy HTTP que vous souhaitez utiliser pour communiquer avec Apigee Edge, ou les hôtes qui ne doivent pas gérer la communication avec Apigee Edge. Exemple :export HTTP_PROXY='http://localhost:3786' export HTTPS_PROXY='https://localhost:3786' export NO_PROXY='localhost,localhost:8080'
Notez que
NO_PROXYpeut être une liste de domaines séparés par une virgule vers lesquels Edge Microgateway ne doit pas envoyer de proxy.Pour en savoir plus sur ces variables, consultez https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables.
- Redémarrez Edge Microgateway.
Utiliser un proxy HTTP pour la communication avec la cible
Ajouté dans la version 3.1.2.
Pour utiliser un proxy HTTP pour la communication entre Edge Microgateway et les cibles de backend, procédez comme suit :
- Ajoutez la configuration suivante au fichier de configuration de Microgateway :
edgemicro: proxy: tunnel: true | false url: proxy_url bypass: target_host # target hosts to bypass the proxy. enabled: true | falseOù :
- tunnel : (facultatif) Lorsque la valeur est "true", Edge Microgateway utilise la méthode HTTP CONNECT pour tunneliser les requêtes HTTP sur une seule connexion TCP. (Il en va de même si les variables d'environnement, comme mentionné ci-dessous, pour la configuration du proxy sont compatibles avec TLS). Par défaut :
false - url : URL du proxy HTTP.
- bypass : (facultatif) spécifie une ou plusieurs URL d'hôte cible séparées par une virgule qui doivent contourner le proxy HTTP. Si cette propriété n'est pas définie, utilisez la variable d'environnement NO_PROXY pour spécifier les URL cibles à contourner.
- enabled : si la valeur est "true" et que
proxy.urlest défini, utilisez la valeurproxy.urlpour le proxy HTTP. Si la valeur est "true" et queproxy.urln'est pas défini, utilisez les proxys spécifiés dans les variables d'environnement du proxy HTTPHTTP_PROXYetHTTPS_PROXY, comme décrit dans Utiliser un proxy HTTP pour communiquer avec Apigee Edge.
Exemple :
edgemicro: proxy: tunnel: true url: 'http://localhost:3786' bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy. enabled: true - tunnel : (facultatif) Lorsque la valeur est "true", Edge Microgateway utilise la méthode HTTP CONNECT pour tunneliser les requêtes HTTP sur une seule connexion TCP. (Il en va de même si les variables d'environnement, comme mentionné ci-dessous, pour la configuration du proxy sont compatibles avec TLS). Par défaut :
- Redémarrez Edge Microgateway.
Utiliser des caractères génériques dans les proxys compatibles avec Microgateway
Vous pouvez utiliser un ou plusieurs caractères génériques "*" dans le chemin de base d'un proxy edgemicro_* (compatible avec Microgateway). Par exemple, un chemin de base /team/*/members permet aux clients d'appeler https://[host]/team/blue/members et https://[host]/team/green/members sans que vous ayez besoin de créer des proxys d'API pour prendre en charge de nouvelles équipes. Notez que /**/ n'est pas accepté.
Important : Apigee n'accepte PAS l'utilisation d'un caractère générique "*" comme premier élément d'un chemin de base. Par exemple, la recherche /*/ n'est PAS acceptée.
Effectuer une rotation des clés JWT
Après avoir généré un jeton JWT, vous devrez peut-être modifier la paire de clés publique/privée stockée dans la KVM chiffrée Edge. Ce processus de génération d'une nouvelle paire de clés est appelé "rotation des clés".
Comment Edge Microgateway utilise les jetons JWT
Le jeton Web JSON (JWT) est une norme de jeton décrite dans la RFC7519. Le jeton JWT permet de signer un ensemble de revendications, qui peuvent être vérifiées de manière fiable par le destinataire du jeton JWT.
Vous pouvez générer un jeton JWT à l'aide de la CLI et l'utiliser dans l'en-tête d'autorisation des appels d'API au lieu d'une clé API. Exemple :
curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"
Pour en savoir plus sur la génération de jetons JWT avec la CLI, consultez Générer un jeton.
Qu'est-ce que la rotation des clés ?
Après avoir généré un jeton JWT, vous devrez peut-être modifier la paire de clés publique/privée stockée dans la KVM chiffrée Edge. Ce processus de génération d'une nouvelle paire de clés est appelé "rotation des clés". Lorsque vous effectuez une rotation des clés, une nouvelle paire de clés privée/publique est générée et stockée dans la KVM "microgateway" de votre organisation/environnement Apigee Edge. De plus, l'ancienne clé publique est conservée avec sa valeur d'ID de clé d'origine.
Pour générer un jeton JWT, Edge utilise les informations stockées dans le KVM chiffré. Un KVM appelé microgateway a été créé et renseigné avec des clés lors de la configuration initiale d'Edge Microgateway. Les clés de la KVM sont utilisées pour signer et chiffrer un jeton JWT.
Les clés KVM incluent :
-
private_key : dernière clé privée RSA (la plus récemment créée) utilisée pour signer les jetons JWT.
-
public_key : dernier certificat (le plus récemment créé) utilisé pour valider les jetons JWT signés avec la clé private_key.
-
private_key_kid : ID de la clé privée la plus récente (créée le plus récemment). Cet ID de clé est associé à la valeur private_key et est utilisé pour la rotation des clés.
-
public_key1_kid : ID de la clé publique la plus récente (créée le plus récemment). Cette clé est associée à la valeur public_key1 et permet d'assurer la rotation des clés. Cette valeur est identique au kid de la clé privée.
-
public_key1 : clé publique la plus récente (créée le plus récemment).
Lorsque vous effectuez une rotation des clés, les valeurs de clé existantes sont remplacées dans le mappage et de nouvelles clés sont ajoutées pour conserver les anciennes clés publiques. Exemple :
-
public_key2_kid : ID de l'ancienne clé publique. Cette clé est associée à la valeur public_key2 et permet d'assurer la rotation des clés.
-
public_key2 : l'ancienne clé publique.
Les jetons JWT présentés pour validation seront validés à l'aide de la nouvelle clé publique. Si la validation échoue, l'ancienne clé publique est utilisée jusqu'à l'expiration du jeton JWT (après l'intervalle token_expiry*, par défaut 30 minutes). De cette façon, vous pouvez effectuer une rotation des clés sans perturber immédiatement le trafic de l'API.
Effectuer une rotation des clés
Cette section explique comment effectuer une rotation des clés.
- Pour mettre à niveau KVM, utilisez la commande
edgemicro upgradekvm. Pour en savoir plus sur l'exécution de cette commande, consultez Mettre à niveau KVM. Vous n'avez besoin d'effectuer cette étape qu'une seule fois. - Pour mettre à niveau le proxy edgemicro-oauth, utilisez la commande
edgemicro upgradeauth. Pour en savoir plus sur l'exécution de cette commande, consultez Mettre à niveau le proxy edgemicro-auth. Vous n'avez besoin d'effectuer cette étape qu'une seule fois. - Ajoutez la ligne suivante à votre fichier
~/.edgemicro/org-env-config.yaml, où vous devez spécifier l'organisation et l'environnement que vous avez configurés pour l'utilisation de la micro-passerelle :jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
Exécutez la commande de rotation des clés pour effectuer la rotation des clés. Pour en savoir plus sur cette commande, consultez Effectuer la rotation des clés.
edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET
Exemple :
edgemicro rotatekey -o docs -e test \ -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \ -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
Après la rotation des clés, Edge renvoie plusieurs clés à Edge Microgateway. Notez que dans l'exemple suivant, chaque clé possède une valeur "kid" (ID de clé) unique. La micro-passerelle utilise ensuite ces clés pour valider les jetons d'autorisation. Si la validation du jeton échoue, la micro-passerelle vérifie s'il existe une clé plus ancienne dans l'ensemble de clés et l'essaie. Le format des clés renvoyées est JSON Web Key (JWK). Pour en savoir plus sur ce format, consultez la RFC 7517.
{
"keys": [
{
"kty": "RSA",
"n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
"e": "AQAB",
"kid": "2"
},
{
"kty": "RSA",
"n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
"e": "AQAB",
"kid": "1"
}
]
}Configurer un délai "pas avant"
Pour les versions 3.1.5 et antérieures, la nouvelle clé privée générée par la commande rotatekey prenait effet immédiatement, et les nouveaux jetons générés étaient signés avec la nouvelle clé privée. Toutefois, la nouvelle clé publique n'était mise à la disposition des instances Edge Microgateway que toutes les 10 minutes (par défaut) lors de l'actualisation de la configuration de la microgateway. En raison de ce décalage entre la signature du jeton et l'actualisation de l'instance Microgateway, les jetons signés avec la dernière clé sont rejetés jusqu'à ce que toutes les instances aient reçu la dernière clé publique.
Lorsqu'il existe plusieurs instances de microgateway, le décalage de la clé publique entraîne parfois des erreurs d'exécution intermittentes avec l'état 403, car la validation du jeton est transmise à une instance, mais échoue sur une autre instance jusqu'à ce que toutes les instances soient actualisées.
À partir de la version 3.1.6, une nouvelle option de la commande rotatekey vous permet de spécifier un délai avant que la nouvelle clé privée ne devienne effective, ce qui laisse le temps à toutes les instances de microgateway d'être actualisées et de recevoir la nouvelle clé publique. Le nouveau flag est --nbf, qui signifie "pas avant".
Cette option accepte une valeur entière, qui correspond au nombre de minutes de délai.
Dans l'exemple suivant, le délai est défini sur 15 minutes :
edgemicro rotatekey -o docs -e test \ -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \ -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \ --nbf 15
Notez qu'il est recommandé de définir un délai supérieur au paramètre de configuration config_change_poll_internal, qui est de 10 minutes par défaut. Consultez également Attributs edgemicro.
Filtrage des proxys téléchargés…
Par défaut, Edge Microgateway télécharge tous les proxys de votre organisation Edge qui commencent par le préfixe de nom "edgemicro_". Vous pouvez modifier cette valeur par défaut pour télécharger des proxys dont les noms correspondent à un modèle.
- Ouvrez votre fichier de configuration Edge Micro :
~/.edgemicro/org-env-config.yaml. - Ajoutez l'élément proxyPattern sous edge_config. Par exemple, le modèle suivant télécharge des proxys tels que edgemicro_foo, edgemicro_fast et edgemicro_first.
edge_config: … proxyPattern: edgemicro_f*
Spécifier des produits sans proxys d'API
Dans Apigee Edge, vous pouvez créer un produit d'API qui ne contient aucun proxy d'API. Cette configuration de produit permet à une clé API associée à ce produit de fonctionner avec n'importe quel proxy déployé dans votre organisation. À partir de la version 2.5.4, Edge Microgateway est compatible avec cette configuration de produit.
Débogage et dépannage
Se connecter à un débogueur
Vous pouvez exécuter Edge Microgateway avec un débogueur, tel que node-inspector. Cela s'avère utile pour résoudre les problèmes et déboguer les plug-ins personnalisés.
- Redémarrez Edge Microgateway en mode débogage. Pour ce faire, ajoutez
DEBUG=*au début de la commandestart:DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
Pour diriger la sortie de débogage vers un fichier, vous pouvez utiliser la commande suivante :
export DEBUG=* nohup edgemicro start \ -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log
- Démarrez votre débogueur et configurez-le pour qu'il écoute sur le numéro de port du processus de débogage.
- Vous pouvez maintenant parcourir le code Edge Microgateway, définir des points d'arrêt, surveiller des expressions, etc.
Vous pouvez spécifier des options Node.js standards liées au mode débogage. Par exemple, --nolazy permet de déboguer du code asynchrone.
Vérifier les fichiers journaux
Si vous rencontrez des problèmes, veillez à examiner les fichiers journaux pour obtenir des détails sur l'exécution et des informations sur les erreurs. Pour en savoir plus, consultez Gérer les fichiers journaux.
Utiliser la sécurité des clés API
Les clés API fournissent un mécanisme simple pour authentifier les clients qui envoient des requêtes à Edge Microgateway. Vous pouvez obtenir une clé API en copiant la valeur de la clé client (également appelée ID client) à partir d'un produit Apigee Edge qui inclut le proxy d'authentification Edge Microgateway.
Mise en cache des clés
Les clés API sont échangées contre des jetons de support, qui sont mis en cache. Vous pouvez désactiver la mise en cache en définissant l'en-tête Cache-Control: no-cache sur les requêtes entrantes vers Edge Microgateway.
Utiliser une clé API
Vous pouvez transmettre la clé API dans une requête API, soit en tant que paramètre de requête, soit dans un en-tête. Par défaut, le nom de l'en-tête et celui du paramètre de requête sont tous deux x-api-key.
Exemple de paramètre de requête :
curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz
Exemple d'en-tête :
curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
Configurer le nom de la clé API
Par défaut, x-api-key est le nom utilisé pour l'en-tête de la clé API et le paramètre de requête.
Vous pouvez modifier cette valeur par défaut dans le fichier de configuration, comme expliqué dans Apporter des modifications à la configuration. Par exemple, pour remplacer le nom par apiKey :
oauth: allowNoAuthorization: false allowInvalidAuthorization: false api-key-header: apiKey
Dans cet exemple, le nom du paramètre de requête et celui de l'en-tête sont tous deux remplacés par apiKey. Le nom x-api-key ne fonctionnera plus dans les deux cas. Consultez également Modifier la configuration.
Exemple :
curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
Pour en savoir plus sur l'utilisation de clés API avec des requêtes de proxy, consultez Sécuriser Edge Microgateway.
Activer les codes de réponse en amont
Par défaut, le plug-in oauth ne renvoie que les codes d'état d'erreur 4xx si la réponse n'est pas un état 200. Vous pouvez modifier ce comportement afin qu'il renvoie toujours le code 4xx ou 5xx exact, en fonction de l'erreur.
Pour activer cette fonctionnalité, ajoutez la propriété oauth.useUpstreamResponse: true à votre configuration Edge Microgateway. Exemple :
oauth: allowNoAuthorization: false allowInvalidAuthorization: false gracePeriod: 10 useUpstreamResponse: true
Utiliser la sécurité des jetons OAuth2
Cette section explique comment obtenir des jetons d'accès et d'actualisation OAuth2. Les jetons d'accès sont utilisés pour effectuer des appels d'API sécurisés via la micro-passerelle. Les jetons d'actualisation permettent d'obtenir de nouveaux jetons d'accès.
Obtenir un jeton d'accès
Cette section explique comment utiliser le proxy edgemicro-auth pour obtenir un jeton d'accès.
Vous pouvez également obtenir un jeton d'accès à l'aide de la commande CLI edgemicro token.
Pour en savoir plus sur la CLI, consultez Gérer les jetons.
API 1 : Envoyer les identifiants en tant que paramètres de corps
Remplacez les noms de votre organisation et de votre environnement dans l'URL, puis remplacez les valeurs de l'ID client et du code secret du client obtenues à partir d'une application de développeur sur Apigee Edge par les paramètres de corps client_id et client_secret :
curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"
API 2 : Envoyer des identifiants dans un en-tête d'authentification de base
Envoyez les identifiants client en tant qu'en-tête d'authentification de base et le grant_type en tant que paramètre de formulaire. Cette forme de commande est également abordée dans la RFC 6749 : framework d'autorisation OAuth 2.0.
http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \ -d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"
Exemple de résultat
L'API renvoie une réponse JSON. Notez qu'il n'y a aucune différence entre les propriétéstoken et access_token. Vous pouvez utiliser l'un ou l'autre. Notez que expires_in est une valeur entière spécifiée en secondes.
{ "token": "eyJraWQiOiIxIiwidHlwIjoi", "access_token": "eyJraWQiOiIxIiwid", "token_type": "bearer", "expires_in": 1799 }
Obtenir un jeton d'actualisation
Pour obtenir un jeton d'actualisation, envoyez un appel d'API au point de terminaison /token du proxy edgemicro-auth. Vous DEVEZ effectuer cet appel d'API avec le type d'autorisation password. Les étapes suivantes décrivent le processus.
- Obtenez un jeton d'accès et un jeton d'actualisation avec l'API
/token. Notez que le type d'autorisation estpassword:curl -X POST \ https://your_organization-your_environment.apigee.net/edgemicro-auth/token \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq", "client_secret":"bUdDcFgv3nXffnU", "grant_type":"password", "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq", "password":"bUdD2FvnMsXffnU" }'L'API renvoie un jeton d'accès et un jeton d'actualisation. La réponse ressemble à ceci. Notez que les valeurs
expires_insont des entiers et sont spécifiées en secondes.{ "token": "your-access-token", "access_token": "your-access-token", "token_type": "bearer", "expires_in": 108, "refresh_token": "your-refresh-token", "refresh_token_expires_in": 431, "refresh_token_issued_at": "1562087304302", "refresh_token_status": "approved" } - Vous pouvez maintenant utiliser le jeton d'actualisation pour obtenir un nouveau jeton d'accès en appelant le point de terminaison
/refreshde la même API. Exemple :curl -X POST \ https://willwitman-test.apigee.net/edgemicro-auth/refresh \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq", "client_secret":"bUdDc2Fv3nMXffnU", "grant_type":"refresh_token", "refresh_token":"your-refresh-token" }'L'API renvoie un nouveau jeton d'accès. La réponse ressemble à ce qui suit :
{ "token": "your-new-access-token" }
Surveillance permanente
Forever est un outil Node.js qui redémarre automatiquement une application Node.js en cas d'arrêt ou d'erreur du processus. Edge Microgateway dispose d'un fichier forever.json que vous pouvez configurer pour contrôler le nombre de fois et les intervalles auxquels Edge Microgateway doit être redémarré. Ce fichier configure un service Forever appelé forever-monitor, qui gère Forever de manière programmatique.
Vous trouverez le fichier forever.json dans le répertoire d'installation racine d'Edge Microgateway. Consultez la section Où Edge Microgateway est-il installé ?. Pour en savoir plus sur les options de configuration, consultez la documentation de forever-monitor.
La commande edgemicro forever inclut des options qui vous permettent de spécifier l'emplacement du fichier forever.json (option -f) et de démarrer/arrêter le processus de surveillance Forever (option -a). Exemple :
edgemicro forever -f ~/mydir/forever.json -a start
Pour en savoir plus, consultez la section Surveillance permanente dans la documentation de référence de la CLI.
Spécifier un point de terminaison de fichier de configuration
Si vous exécutez plusieurs instances Edge Microgateway, vous pouvez gérer leurs configurations à partir d'un seul emplacement. Pour ce faire, spécifiez un point de terminaison HTTP à partir duquel Edge Micro peut télécharger son fichier de configuration. Vous pouvez spécifier ce point de terminaison lorsque vous démarrez Edge Micro à l'aide de l'option -u.
Exemple :
edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key
où le point de terminaison mgconfig renvoie le contenu de votre fichier de configuration. Il s'agit du fichier qui, par défaut, se trouve dans ~/.edgemicro et suit la convention d'attribution de noms org-env-config.yaml.
Désactiver la mise en mémoire tampon des données de connexion TCP
Vous pouvez utiliser l'attribut de configuration nodelay pour désactiver la mise en mémoire tampon des données pour les connexions TCP utilisées par Edge Microgateway.
Par défaut, les connexions TCP utilisent l'algorithme de Nagle pour mettre en mémoire tampon les données avant de les envoyer. Définir nodelay sur true désactive ce comportement (les données sont immédiatement envoyées chaque fois que socket.write() est appelé). Pour en savoir plus, consultez également la documentation Node.js.
Pour activer nodelay, modifiez le fichier de configuration Edge Micro comme suit :
edgemicro:
nodelay: true
port: 8000
max_connections: 1000
config_change_poll_interval: 600
logging:
level: error
dir: /var/tmp
stats_log_interval: 60
rotate_interval: 24
Exécuter Edge Microgateway en mode autonome
Vous pouvez exécuter Edge Microgateway complètement déconnecté de toute dépendance Apigee Edge. Ce scénario, appelé mode autonome, vous permet d'exécuter et de tester Edge Microgateway sans connexion Internet.
En mode autonome, les fonctionnalités suivantes ne fonctionnent pas, car elles nécessitent une connexion à Apigee Edge :
- OAuth et clé API
- Quota
- Analytics
En revanche, les plug-ins personnalisés et l'arrêt des pics fonctionnent normalement, car ils ne nécessitent pas de connexion à Apigee Edge. De plus, un nouveau plug-in appelé extauth vous permet d'autoriser les appels d'API vers la micro-passerelle avec un jeton JWT en mode autonome.
Configurer et démarrer la passerelle
Pour exécuter Edge Microgateway en mode autonome :
- Créez un fichier de configuration nommé comme suit :
$HOME/.edgemicro/$ORG-$ENV-config.yamlExemple :
vi $HOME/.edgemicro/foo-bar-config.yaml
- Collez le code suivant dans le fichier :
edgemicro: port: 8000 max_connections: 1000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - extauth - spikearrest headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true extauth: publickey_url: https://www.googleapis.com/oauth2/v1/certs spikearrest: timeUnit: second allow: 10 buffersize: 0 - Exportez la variable d'environnement suivante avec la valeur "1" :
export EDGEMICRO_LOCAL=1
- Exécutez la commande
startsuivante, en fournissant des valeurs pour instancier le proxy local :edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \ -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH
Où :
- $ORG est le nom de l'organisation que vous avez utilisé dans le nom du fichier de configuration.
- $ENV est le nom "env" que vous avez utilisé dans le nom du fichier de configuration.
- $LOCAL_PROXY_NAME est le nom du proxy local qui sera créé. Vous pouvez utiliser n'importe quel nom.
- $LOCAL_PROXY_VERSION est le numéro de version du proxy.
- $TARGET_URL est l'URL de la cible du proxy. (La cible est le service appelé par le proxy.)
- $BASE_PATH est le chemin de base du proxy. Cette valeur doit commencer par une barre oblique. Pour un chemin de base racine, spécifiez simplement une barre oblique, par exemple "/".
Exemple :
edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- Tester la configuration
curl http://localhost:8000/echo { "error" : "missing_authorization" }Comme le plug-in
extauthse trouve dans le fichierfoo-bar-config.yaml, vous obtenez une erreur "missing_authorization". Ce plug-in valide un jeton JWT qui doit être présent dans l'en-tête Authorization de l'appel d'API. Dans la section suivante, vous allez obtenir un jeton JWT qui permettra aux appels d'API d'aboutir sans erreur.
Exemple : Obtenir un jeton d'autorisation
L'exemple suivant montre comment obtenir un jeton JWT à partir du point de terminaison JWT d'Edge Microgateway sur Apigee Edge (edgemicro-auth/jwkPublicKeys). Ce point de terminaison est déployé lorsque vous effectuez une configuration standard d'Edge Microgateway.
Pour obtenir le jeton JWT à partir du point de terminaison Apigee, vous devez d'abord effectuer la configuration standard d'Edge Microgateway et être connecté à Internet. Le point de terminaison Apigee est utilisé ici à titre d'exemple uniquement et n'est pas obligatoire. Vous pouvez utiliser un autre point de terminaison de jeton JWT si vous le souhaitez. Si vous le faites, vous devrez obtenir le jeton JWT à l'aide de l'API fournie pour ce point de terminaison.
Les étapes suivantes expliquent comment obtenir un jeton à l'aide du point de terminaison edgemicro-auth/jwkPublicKeys :
- Vous devez effectuer une configuration standard d'Edge Microgateway pour déployer le proxy
edgemicro-authdans votre organisation/environnement sur Apigee Edge. Si vous avez déjà effectué cette étape, vous n'avez pas besoin de la répéter. - Si vous avez déployé Edge Microgateway sur Apigee Cloud, vous devez être connecté à Internet pour pouvoir obtenir un jeton JWT à partir de ce point de terminaison.
-
Arrêtez Edge Microgateway :
edgemicro stop
- Dans le fichier de configuration que vous avez créé précédemment (
$HOME/.edgemicro/org-env-config.yaml), faites pointer l'attributextauth:publickey_urlvers le point de terminaisonedgemicro-auth/jwkPublicKeysde votre organisation/environnement Apigee Edge. Exemple :extauth: publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
-
Redémarrez Edge Microgateway comme vous l'avez fait précédemment, en utilisant les noms d'organisation et d'environnement que vous avez utilisés dans le nom du fichier de configuration. Exemple :
edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
-
Obtenez un jeton JWT à partir du point de terminaison d'autorisation. Comme vous utilisez le point de terminaison
edgemicro-auth/jwkPublicKeys, vous pouvez utiliser cette commande CLI :
Vous pouvez générer un jeton JWT pour Edge Microgateway à l'aide de la commande edgemicro token ou d'une API. Exemple :
edgemicro token get -o your_org -e your_env \ -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
Où :
- your_org est le nom de l'organisation Apigee pour laquelle vous avez précédemment configuré Edge Microgateway.
- your_env est un environnement de l'organisation.
- L'option
ispécifie la clé client d'une application de développeur qui possède un produit incluant le proxyedgemicro-auth. - L'option
sspécifie le code secret du client d'une application de développeur qui dispose d'un produit incluant le proxyedgemicro-auth.
Cette commande demande à Apigee Edge de générer un jeton JWT qui peut ensuite être utilisé pour vérifier les appels d'API.
Consultez également Générer un jeton.Tester la configuration autonome
Pour tester la configuration, appelez l'API avec le jeton ajouté dans l'en-tête Authorization comme suit :
curl http://localhost:8000/echo -H "Authorization: Bearer your_token
Exemple :
curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"
Exemple de résultat :
{
"headers":{
"user-agent":"curl/7.54.0",
"accept":"*/*",
"x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
"client_received_start_timestamp":"1535134472699",
"x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
"target_sent_start_timestamp":"1535134472702",
"x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
"x-forwarded-proto":"http",
"x-forwarded-host":"localhost:8000",
"host":"mocktarget.apigee.net",
"x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
"via":"1.1 localhost, 1.1 google",
"x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
"connection":"Keep-Alive"
},
"method":"GET",
"url":"/",
"body":""
}Utiliser le mode proxy local
En mode proxy local, Edge Microgateway ne nécessite pas le déploiement d'un proxy compatible avec Microgateway sur Apigee Edge. À la place, vous configurez un "proxy local" en fournissant un nom de proxy local, un chemin de base et une URL cible lorsque vous démarrez la micro-passerelle. Les appels d'API vers la microgateway sont ensuite envoyés à l'URL cible du proxy local. À tous les autres égards, le mode proxy local fonctionne exactement de la même manière que l'exécution d'Edge Microgateway en mode normal. L'authentification fonctionne de la même manière, tout comme la protection contre les pics de trafic, l'application des quotas, les plug-ins personnalisés, etc.
Cas d'utilisation et exemple
Le mode proxy local est utile lorsque vous n'avez besoin d'associer qu'un seul proxy à une instance Edge Microgateway. Par exemple, vous pouvez injecter Edge Microgateway dans Kubernetes en tant que proxy side-car, où une micro-passerelle et un service s'exécutent chacun dans un seul pod, et où la micro-passerelle gère le trafic vers et depuis son service associé. La figure suivante illustre cette architecture dans laquelle Edge Microgateway fonctionne comme un proxy side-car dans un cluster Kubernetes. Chaque instance de micro-passerelle ne communique qu'avec un seul point de terminaison sur son service associé :

L'un des avantages de ce style d'architecture est qu'Edge Microgateway fournit une gestion des API pour les services individuels déployés dans un environnement de conteneur, tel qu'un cluster Kubernetes.
Configurer le mode proxy local
Pour configurer Edge Microgateway afin qu'il s'exécute en mode proxy local, procédez comme suit :
- Exécutez
edgemicro initpour configurer votre environnement de configuration local, exactement comme vous le feriez dans une configuration Edge Microgateway classique. Consultez également Configurer Edge Microgateway. - Exécutez
edgemicro configure, comme vous le feriez dans une procédure de configuration Edge Microgateway classique. Exemple :edgemicro configure -o your_org -e your_env -u your_apigee_username
Cette commande déploie la règle edgemicro-auth sur Edge et renvoie une clé et un secret dont vous aurez besoin pour démarrer la micro-passerelle. Si vous avez besoin d'aide, consultez Configurer Edge Microgateway.
- Sur Apigee Edge, créez un produit d'API avec les exigences de configuration obligatoires suivantes (vous pouvez gérer toutes les autres configurations comme vous le souhaitez) :
- Vous devez ajouter le proxy edgemicro-auth au produit. Ce proxy a été déployé automatiquement lorsque vous avez exécuté
edgemicro configure. - Vous devez fournir un chemin d'accès à la ressource. Apigee recommande d'ajouter ce chemin d'accès au produit :
/**. Pour en savoir plus, consultez Configurer le comportement du chemin d'accès à la ressource. Consultez également Créer des produits d'API dans la documentation Edge.
- Vous devez ajouter le proxy edgemicro-auth au produit. Ce proxy a été déployé automatiquement lorsque vous avez exécuté
Sur Apigee Edge, créez un développeur ou utilisez un développeur existant si vous le souhaitez. Pour obtenir de l'aide, consultez Ajouter des développeurs à l'aide de l'interface utilisateur de gestion Edge.
- Sur Apigee Edge, créez une application de développeur. Vous devez ajouter le produit d'API que vous venez de créer à l'application. Pour obtenir de l'aide, consultez la section Enregistrer une application dans l'interface utilisateur de gestion Edge.
- Sur la machine où Edge Microgateway est installé, exportez la variable d'environnement suivante avec la valeur "1".
export EDGEMICRO_LOCAL_PROXY=1
- Exécutez la commande
startsuivante :edgemicro start -o your_org -e your_environment -k your_key -s your_secret \ -a local_proxy_name -v local_proxy_version -t target_url -b base_pathOù :
- your_org est votre organisation Apigee.
- your_environment est un environnement de votre organisation.
- your_key est la clé renvoyée lorsque vous avez exécuté
edgemicro configure. - your_secret est le secret renvoyé lorsque vous avez exécuté
edgemicro configure. - local_proxy_name est le nom du proxy local qui sera créé.
- local_proxy_version est le numéro de version du proxy.
- target_url est l'URL de la cible du proxy (le service que le proxy appellera).
- base_path est le chemin de base du proxy. Cette valeur doit commencer par une barre oblique. Pour un chemin de base racine, spécifiez simplement une barre oblique, par exemple "/".
Exemple :
edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \ -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \ -t http://mocktarget.apigee.net -b /echo
Tester la configuration
Vous pouvez tester la configuration du proxy local en appelant le point de terminaison du proxy. Par exemple, si vous avez spécifié un chemin de base /echo, vous pouvez appeler le proxy comme suit :
curl http://localhost:8000/echo
{
"error" : "missing_authorization",
"error_description" : "Missing Authorization header"
}Cet appel d'API initial a généré une erreur, car vous n'avez pas fourni de clé API valide. Vous trouverez la clé dans l'application de développement que vous avez créée précédemment. Ouvrez l'application dans l'interface utilisateur Edge, copiez la clé client et utilisez-la comme suit :
curl http://localhost:8000/echo -H 'x-api-key:your_api_key'
Exemple :
curl http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"
Exemple de résultat :
{
"headers":{
"user-agent":"curl/7.54.0",
"accept":"*/*",
"x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
"client_received_start_timestamp":"1535134472699",
"x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
"target_sent_start_timestamp":"1535134472702",
"x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
"x-forwarded-proto":"http",
"x-forwarded-host":"localhost:8000",
"host":"mocktarget.apigee.net",
"x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
"via":"1.1 localhost, 1.1 google",
"x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
"connection":"Keep-Alive"
},
"method":"GET",
"url":"/",
"body":""
}Utiliser le synchronisateur
Cette section explique comment utiliser le synchronisateur, une fonctionnalité facultative qui améliore la résilience d'Edge Microgateway en lui permettant de récupérer les données de configuration d'Apigee Edge et de les écrire dans une base de données Redis locale. Lorsqu'une instance de synchroniseur est en cours d'exécution, les autres instances Edge Microgateway exécutées sur différents nœuds peuvent récupérer leur configuration directement à partir de cette base de données.
La fonctionnalité de synchronisation est actuellement compatible avec Redis 5.0.x.
Qu'est-ce que le synchronisateur ?
Le synchronisateur fournit un niveau de résilience pour Edge Microgateway. Cela permet de s'assurer que chaque instance d'Edge Microgateway utilise la même configuration et que, en cas de perturbation d'Internet, les instances d'Edge Microgateway peuvent démarrer et s'exécuter correctement.
Par défaut, les instances Edge Microgateway doivent pouvoir communiquer avec Apigee Edge pour récupérer et actualiser leurs données de configuration, telles que les configurations de proxy d'API et de produit d'API. Si la connexion Internet avec Edge est interrompue, les instances de microgateway peuvent continuer à fonctionner, car les dernières données de configuration sont mises en cache. Toutefois, les nouvelles instances de microgateway ne peuvent pas démarrer sans une connexion claire. En outre, une interruption d'Internet peut entraîner l'exécution d'une ou de plusieurs instances de microgateway avec des informations de configuration non synchronisées avec d'autres instances.
Le synchronisateur Edge Microgateway fournit un mécanisme alternatif permettant aux instances Edge Microgateway de récupérer les données de configuration dont elles ont besoin pour démarrer et traiter le trafic des proxys d'API.
Les données de configuration récupérées à partir des appels à Apigee Edge incluent l'appel jwk_public_keys, l'appel jwt_public_key, l'appel d'amorçage et l'appel de produits d'API.
Le synchronisateur permet à toutes les instances Edge Microgateway exécutées sur différents nœuds de démarrer correctement et de rester synchronisées, même si la connexion Internet entre Edge Microgateway et Apigee Edge est interrompue.
Le synchronisateur est une instance d'Edge Microgateway spécialement configurée. Son seul objectif est d'interroger Apigee Edge (le délai est configurable), de récupérer les données de configuration et de les écrire dans une base de données Redis locale. L'instance du synchronisateur ne peut pas traiter le trafic du proxy d'API. D'autres instances d'Edge Microgateway exécutées sur différents nœuds peuvent être configurées pour récupérer les données de configuration à partir de la base de données Redis plutôt qu'à partir d'Apigee Edge. Étant donné que toutes les instances de microgateway extraient leurs données de configuration de la base de données locale, elles peuvent démarrer et traiter les requêtes API même en cas de perturbation d'Internet.
Configurer une instance de synchronisateur
Ajoutez la configuration suivante au fichier org-env/config.yaml de l'installation Edge Microgateway que vous souhaitez utiliser comme synchronisateur :
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 1 redisBasedConfigCache: true
Exemple :
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 1 redisBasedConfigCache: true
| Option | Description |
|---|---|
redisHost |
Hôte sur lequel votre instance Redis est exécutée. Par défaut : 127.0.0.1 |
redisPort |
Port de l'instance Redis. Valeur par défaut : 6379 |
redisDb |
Base de données Redis à utiliser. Valeur par défaut : 0 |
redisPassword |
Le mot de passe de votre base de données. |
Enfin, enregistrez le fichier de configuration et démarrez l'instance Edge Microgateway. Il commence à interroger Apigee Edge et à stocker les données de configuration téléchargées dans la base de données Redis.
Configurer des instances Edge Microgateway standards
Une fois le synchronisateur en cours d'exécution, vous pouvez configurer des nœuds Edge Microgateway supplémentaires pour exécuter des instances Microgateway standards qui traitent le trafic des proxys d'API. Toutefois, vous configurez ces instances pour obtenir leurs données de configuration à partir de la base de données Redis plutôt que d'Apigee Edge.
Ajoutez la configuration suivante au fichier org-env/config.yaml de chaque nœud Edge Microgateway supplémentaire. Notez que la propriété synchronizerMode est définie sur 0. Cette propriété configure l'instance pour qu'elle fonctionne comme une instance Edge Microgateway normale qui traite le trafic du proxy d'API. L'instance obtiendra ses données de configuration à partir de la base de données Redis.
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 0 redisBasedConfigCache: true
Exemple :
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 0 redisBasedConfigCache: true
Propriétés de configuration
Les propriétés de configuration suivantes ont été ajoutées pour permettre l'utilisation du synchronisateur :
| Attribut | Valeurs | Description |
|---|---|---|
edge_config.synchronizerMode |
0 ou 1 | Si la valeur est 0 (valeur par défaut), Edge Microgateway fonctionne en mode standard. Si la valeur est 1, démarrez l'instance Edge Microgateway pour qu'elle fonctionne comme un synchronisateur. Dans ce mode, l'instance extrait les données de configuration d'Apigee Edge et les stocke dans une base de données Redis locale. Cette instance ne peut pas traiter les requêtes de proxy d'API. Son seul objectif est d'interroger Apigee Edge pour obtenir des données de configuration et les écrire dans la base de données locale. Vous devez ensuite configurer d'autres instances de microgateway pour lire à partir de la base de données. |
edge_config.redisBasedConfigCache |
true ou false | Si la valeur est "true", l'instance Edge Microgateway récupère ses données de configuration à partir de la base de données Redis au lieu d'Apigee Edge. La base de données Redis doit être la même que celle sur laquelle le synchronisateur est configuré pour écrire. Si la base de données Redis n'est pas disponible ou si elle est vide, la micro-passerelle recherche un fichier cache-config.yaml existant pour sa configuration.
Si la valeur est "false" (valeur par défaut), l'instance Edge Microgateway récupère les données de configuration d'Apigee Edge comme d'habitude. |
edgemicro.config_change_poll_interval |
Intervalle de temps, en secondes | Spécifie l'intervalle d'interrogation du synchronisateur pour extraire les données d'Apigee Edge. |
Configurer des URL d'exclusion pour les plug-ins
Vous pouvez configurer la micro-passerelle pour qu'elle ignore le traitement des plug-ins pour des URL spécifiées. Vous pouvez configurer ces URL d'exclusion de manière globale (pour tous les plug-ins) ou pour des plug-ins spécifiques.
Exemple :
...
edgemicro:
...
plugins:
excludeUrls: '/hello,/proxy_one' # global exclude urls
sequence:
- oauth
- json2xml
- quota
json2xml:
excludeUrls: '/hello/xml' # plugin level exclude urls
...
Dans cet exemple, les plug-ins ne traiteront pas les appels de proxy d'API entrants avec les chemins d'accès /hello ou /proxy_one. De plus, le plug-in json2xml sera ignoré pour les API dont le chemin d'accès contient /hello/xml.
Définir des attributs de configuration avec des valeurs de variables d'environnement
Vous pouvez spécifier des variables d'environnement à l'aide de balises dans le fichier de configuration. Les tags de variable d'environnement spécifiés sont remplacés par les valeurs réelles des variables d'environnement. Les remplacements ne sont stockés qu'en mémoire et ne sont pas stockés dans les fichiers de configuration ou de cache d'origine.
Dans cet exemple, l'attribut key est remplacé par la valeur de la variable d'environnement TARGETS_SSL_CLIENT_KEY, et ainsi de suite.
targets:
- ssl:
client:
key: <E>TARGETS_SSL_CLIENT_KEY</E>
cert: <E>TARGETS_SSL_CLIENT_CERT</E>
passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>
Dans cet exemple, la balise <n> est utilisée pour indiquer une valeur entière. Seuls les entiers positifs sont acceptés.
edgemicro: port: <E><n>EMG_PORT</n></E>
Dans cet exemple, la balise <b> est utilisée pour indiquer une valeur booléenne (c'est-à-dire "true" ou "false").
quotas: useRedis: <E><b>EMG_USE_REDIS</b></E>