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 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, exécutez 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 à 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 de préfixe npm. Consultez
Où Edge Microgateway est-il installé ? si vous ne trouvez pas ce répertoire.
Si vous modifiez le fichier de configuration 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 recharger la configuration sans aucun 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 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 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 les variables d'environnement suivantes :
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, introduit TLS dans Edge Microgateway et montre comment configurer le protocole TLS unidirectionnel Northbound. |
| Configurer le protocole TLS bidirectionnel vers le nord | 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 unidirectionnel et bidirectionnel pour le trafic sortant | Cette troisième vidéo sur la configuration de TLS dans Apigee Edge Microgateway explique comment configurer le protocole TLS unidirectionnel et bidirectionnel southbound. |
Vous pouvez configurer le serveur Microgateway pour qu'il utilise SSL. Par exemple, avec SSL configuré, vous pouvez appeler des API via Edge Microgateway avec le protocole "https", comme ceci :
https://localhost:8000/myapi
Pour configurer SSL sur le serveur Microgateway, procédez comme suit :
- Générez ou obtenez un certificat et une clé SSL à 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. Par 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 à la configuration en fonction du fichier de configuration que vous avez modifié : le fichier par défaut ou le fichier de configuration du runtime.
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 de l'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 approuvés au format PEM. |
ciphers |
Chaîne décrivant les codes secrets à utiliser, séparés par un ":". |
rejectUnauthorized |
Si la valeur est "true", le certificat de serveur est vérifié 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 à utiliser la version 3. |
servername |
Nom du serveur pour l'extension TLS SNI (Server Name Indication). |
requestCert |
"true" pour le protocole SSL bidirectionnel, "false" pour le protocole SSL unidirectionnel |
Utiliser les options SSL/TLS du client
Vous pouvez configurer Edge Microgateway pour qu'il soit un client TLS ou SSL lors de la connexion aux points de terminaison cibles. Dans le fichier de configuration Microgateway, utilisez l'élément "targets" pour définir les options SSL/TLS. Notez que vous pouvez spécifier plusieurs cibles spécifiques. Un exemple multicible est inclus ci-dessous.
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 s'appliquent 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 permet 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 de l'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 approuvés au format PEM. |
ciphers |
Chaîne décrivant les codes secrets à utiliser, séparés par un ":". |
rejectUnauthorized |
Si la valeur est "true", le certificat de serveur est vérifié 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 à utiliser 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 du jeton 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 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 disposer d'un service qui utilise LDAP pour valider l'identité.
Gérer les fichiers journaux
Edge Microgateway enregistre 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 du fichier journal par défaut
Le répertoire dans lequel les fichiers journaux sont stockés est spécifié dans le fichier de configuration 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 des journaux à la console
Vous pouvez configurer la journalisation de sorte que les informations de journal soient envoyées à la sortie standard au lieu d'un fichier journal. Définissez l'indicateur to_console sur "true" comme suit :
edgemicro:
logging:
to_console: trueAvec ce paramètre, les journaux seront envoyés à 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 de leurs descriptions, consultez 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 Edge Microgateway. Consultez également Modifier une configuration.
Les attributs configurables sont les suivants :
- stats_log_interval : (par défaut : 60) Intervalle, en secondes, auquel l'enregistrement des statistiques est écrit dans le fichier journal de l'API.
- rotate_interval : (par défaut : 24) Intervalle, en heures, auquel les fichiers journaux sont permutés. 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 du fichier défini sur 0600. Ce niveau d'autorisation ne permet pas aux applications ni 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
Étant donné que les données des fichiers journaux s'accumulent au fil du temps, Apigee vous recommande d'adopter les pratiques suivantes :
- Étant donné que les fichiers journaux peuvent devenir assez volumineux, assurez-vous que le répertoire des fichiers journaux dispose de suffisamment d'espace. 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 journaux plus anciens.
Convention de dénomination des fichiers journaux
Chaque instance Edge Microgateway génère un fichier journal avec l'extension .log. La convention de dénomination des 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 code JSON des produits, des proxys téléchargés et du jeton Web JSON (JWT). Si vous souhaitez afficher ces objets dans la console, définissez l'indicateur 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 enregistrés dans le fichier journal "api" :
- Demande 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 sous forme 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, ils se présentent comme suit (les numéros de ligne ne sont fournis que pour référence dans le document, ils 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 d'un client :
1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
- 1436403888651 : code temporel 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 à un intervalle régulier défini avec la configurationstats_log_interval. Consultez également Comment modifier les intervalles de journaux. - req : identifie l'événement. Dans ce cas, il s'agit d'une requête du 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 est à l'écoute.
- r : hôte et port distants d'où provient la requête du client.
- i : ID de la demande. Les quatre entrées d'événement partageront cet ID. Chaque requête se voit attribuer un ID 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 pour la cible et 4 millisecondes pour 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 : code temporel 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 à un intervalle régulier défini avec la configurationstats_log_interval. Consultez également Comment modifier les intervalles de journaux. - treq : identifie l'événement. Dans ce cas, il s'agit d'une demande 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 de 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 : code temporel 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 à un intervalle régulier défini avec la configurationstats_log_interval. Consultez également Comment modifier les intervalles de journaux. - tres : identifie l'événement. Dans ce cas, il s'agit de la réponse cible.
- s : état de la réponse HTTP.
- d : durée en millisecondes. Temps nécessaire à la cible pour effectuer l'appel d'API.
- 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 : code temporel 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 à un intervalle régulier défini avec la configurationstats_log_interval. Consultez également Comment modifier les intervalles de journaux. - 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 des fichiers journaux
Les fichiers journaux sont alternés à l'intervalle spécifié par l'rotate_interval rotate_interval. Des entrées continueront d'être ajoutées au même fichier journal jusqu'à l'expiration de l'intervalle de rotation. Toutefois, 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 permettant de 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 aux clients. Cette URL est renvoyée lorsque vous exécutez la commande de déploiement du 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 du 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 de fermer la connexion. Ce paramètre vise à contrecarrer 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 : enregistre uniquement les messages d'avertissement.
- error : enregistre uniquement les messages d'erreur.
- debug : enregistre les messages de débogage ainsi que les messages d'information, d'avertissement et d'erreur.
- trace : enregistre les informations de trace pour les erreurs, ainsi que les messages d'information, d'avertissement et d'erreur.
- none : ne créez 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, auquel l'enregistrement des statistiques est écrit dans le fichier journal de l'API.
- rotate_interval : (par défaut : 24) Intervalle, en heures, auquel les fichiers journaux sont permutés.
-
level : (par défaut : error)
- plugins : 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 vers le répertoire ./plugins ou chemin absolu.
- sequence : liste des modules de plug-in à ajouter à votre instance Edge Microgateway. Les modules s'exécutent 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 à écouter. Par exemple, configurez le débogueur de votre IDE pour qu'il écoute sur ce port.
- args : arguments du processus de débogage. Exemple :
args --nolazy
- config_change_poll_interval: (valeur par défaut : 600 secondes) : Edge Microgateway charge une nouvelle configuration périodiquement et exécute un rechargement en cas de modification. L'interrogation détecte toutes les modifications apportées à Edge (modifications des produits, des proxys compatibles avec la passerelle Microgateway, etc.) ainsi que celles apportées au fichier de configuration local.
- disable_config_poll_interval : (par défaut : false) Définissez 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. En cas de délai avant expiration, Edge Microgateway répond avec un code d'état 504. (Ajouté v2.4.x)
- keep_alive_timeout : cette propriété vous permet de définir le délai avant expiration d'Edge Microgateway (en millisecondes). (Valeur par défaut : 5 secondes) (ajouté dans la version 3.0.6)
- headers_timeout : cet attribut limite le temps (en millisecondes) pendant lequel l'analyseur HTTP attendra 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
Server.headersTimeoutNode.js sur les requêtes. (Par défaut : 5 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 version 3.1.1) - noRuleMatchAction : (String) 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 (sans correspondance). 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 Analytics. Dans ce cas, aucun appel aux données analytiques Apigee Edge ne sera effectué. Si la valeur est définie sur true ou si cet attribut n'est pas fourni, le plug-in d'analyse fonctionnera 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 abandonne 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 permettent de configurer le traitement de certains en-têtes HTTP.
- x-forwarded-for : (par défaut : true) Définissez 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 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 la valeur 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 sur "false" pour empêcher la transmission des en-têtes x-response-time à la cible.
- via : (par défaut : true) Définissez sur "false" pour empêcher la transmission des en-têtes "via" à la cible.
Attributs OAuth
Ces paramètres configurent la façon 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 à transiter par Edge Microgateway sans aucun en-tête d'autorisation. Définissez cette valeur sur "false" pour exiger un en-tête d'autorisation (par défaut).
- allowInvalidAuthorization : (valeur 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 valeur sur "false" pour exiger des jetons valides (valeur 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 d'autorisation à 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 Bearer. Vous permet d'autoriser uniquement le modèle de sécurité OAuth (tout en conservant 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é dans 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 ces écarts. (Ajouté dans la version 2.5.7)
Attributs spécifiques aux plug-ins
Pour en savoir plus sur les attributs configurables de chaque plug-in, consultez "Utiliser des plug-ins".
Serveurs proxy de filtrage
Vous pouvez filtrer les proxys compatibles avec les microgateways qu'une instance Edge Microgateway traitera.
Lorsqu'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 le microgateway traitera. Par exemple, cette configuration limite à trois le nombre de proxys que la micro-passerelle traitera : edgemicro_proxy-1, edgemicro_proxy-2 et edgemicro_proxy-3 :
edgemicro: proxies: - edgemicro_proxy-1 - edgemicro_proxy-2 - edgemicro_proxy-3
Filtrer les 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 listé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 être encodée au format URL. Par exemple, l'expression régulière ^[Ee]dgemicro.*$ capture les noms suivants : "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 la suivante : %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 pour le cloud privé, définissez la propriété
org.noncpssurtruepour extraire les produits pour les 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>Filtrer les 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 de définition des variables JWT dans le proxy edgemicro-auth. Pour utiliser cette propriété afin de filtrer les produits d'API listés dans le 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 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 avec tous les codes d'état seront listés dans le 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 analytiques à Apigee :
- bufferSize (facultatif) : nombre maximal d'enregistrements Analytics que le tampon peut contenir avant de commencer à supprimer les enregistrements les plus anciens. Valeur par défaut : 10 000
- batchSize (facultatif) : taille maximale d'un lot d'enregistrements d'analyse envoyés à Apigee. Valeur 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 : 5 000
Exemple :
analytics: bufferSize: 15000 batchSize: 1000 flushInterval: 6000
Masquer les données analytiques
La configuration suivante empêche les informations sur le chemin de requête de s'afficher dans les données analytiques Edge. Ajoutez les éléments suivants à la configuration de la passerelle de microservices pour masquer l'URI de la demande et/ou le chemin d'accès de la demande. 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 Analytics pour isoler un chemin d'API spécifique afin qu'il apparaisse comme un proxy distinct dans les tableaux de bord Edge Analytics. Par exemple, vous pouvez isoler une API de vérification de l'é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 isolés suivent le modèle de dénomination 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 relatifs et absolus dans le tableau de bord Analytics en tant que proxys distincts :
- relativePath (facultatif) : spécifie un chemin d'accès relatif à isoler 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 cet indicateur ignore le chemin de base du proxy. Pour effectuer une ségrégation basée sur un chemin d'accès complet, y compris le chemin de base, utilisez l'indicateurproxyPath. - proxyPath (facultatif) : spécifie un chemin d'accès complet au proxy d'API, y compris le chemin de base du proxy, à segmenter dans le tableau de bord Analytics. Par exemple, si vous spécifiez
/mocktarget/healthcheck, où/mocktargetest le chemin de base du proxy, tous les appels d'API avec le chemin/mocktarget/healthchecks'afficheront dans le tableau de bord sous la formeedgemicro_proxyname-health.
Par exemple, dans la configuration suivante, tout chemin d'API contenant /healthcheck sera segmenté 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 Analytics.
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 de proxy est /mocktarget/healthcheck sera séparée en tant que proxy distinct appelé edgemicro_proxyname-health dans le tableau de bord des données analytiques.
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 rediriger le trafic.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 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 la passerelle micro :
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 transférer 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 configurer le 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 de 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 transférer 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 configurer le 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 de /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 de proxys d'API pour gérer les nouvelles équipes. Notez que /**/ n'est pas accepté.
Important : Apigee n'accepte PAS le caractère générique "*" en tant que premier élément d'un chemin de base. Par exemple, la recherche /*/ n'est PAS acceptée.
Rotation des clés JWT
Après la génération initiale d'un jeton JWT, vous pouvez être amené à modifier la paire de clés publique/privée stockée dans la KVM chiffrée d'Edge. Ce processus de génération d'une nouvelle paire de clés est appelé rotation des clés.
Utilisation des JWT par Edge Microgateway
Un jeton Web JSON (JWT) est une norme de jeton décrite dans la RFC7519. 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 savoir comment générer des JWT avec la CLI, consultez Générer un jeton.
Qu'est-ce que la rotation des clés ?
Après la génération initiale d'un jeton JWT, vous pouvez être amené à modifier la paire de clés publique/privée stockée dans la KVM chiffrée d'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 son 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 rempli avec des clés lors de la configuration initiale d'Edge Microgateway. Les clés du mappage clé-valeur 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écente) utilisée pour signer les jetons JWT.
-
public_key : dernier certificat créé utilisé pour valider les jetons JWT signés avec la clé privée.
-
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 permet la rotation des clés.
-
public_key1_kid : ID de la clé publique la plus récente (celle qui a été créée le plus récemment). Cette clé est associée à la valeur public_key1 et permet la rotation des clés. Cette valeur est identique au kid de la clé privée.
-
public_key1 : la clé publique la plus récente (celle qui a été créée le plus récemment).
Lorsque vous effectuez une rotation des clés, les valeurs de clé existantes sont remplacées dans la carte et de nouvelles clés sont ajoutées pour conserver les anciennes clés publiques. Exemple :
-
public_key2_kid : ancien ID de clé publique. Cette clé est associée à la valeur public_key2 et permet la rotation des clés.
-
public_key2 : 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*, qui est de 30 minutes par défaut). Vous pouvez ainsi "faire tourner" les 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 action qu'une seule fois. - Pour mettre à niveau le proxy edgemicro-oauth, utilisez la commande
edgemicro upgradeauth. Pour savoir comment exécuter cette commande, consultez Mettre à niveau le proxy edgemicro-auth. Vous n'avez besoin d'effectuer cette action qu'une seule fois. - Ajoutez la ligne suivante à votre fichier
~/.edgemicro/org-env-config.yaml, en spécifiant la même organisation et le même environnement que ceux que vous avez configurés pour le microgateway :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 Alterner les 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, le microgateway 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 à disposition des instances Edge Microgateway que toutes les 10 minutes (par défaut) lors de l'actualisation de la configuration du microgateway. En raison de ce décalage entre la signature du jeton et l'actualisation de l'instance de microgateway, les jetons signés avec la dernière clé seraient refusés jusqu'à ce que toutes les instances reçoivent la dernière clé publique.
Dans les cas où plusieurs instances de microgateway existent, le décalage de la clé publique entraînait parfois des erreurs d'exécution intermittentes avec l'état 403, car la validation du jeton réussissait sur une instance, mais échouait sur une autre jusqu'à ce que toutes les instances soient actualisées.
À partir de la version 3.1.6, un nouvel indicateur de la commande rotatekey vous permet de spécifier un délai avant que la nouvelle clé privée ne devienne effective. Cela laisse le temps à toutes les instances de microgateway d'être actualisées et de recevoir la nouvelle clé publique. Le nouveau indicateur est --nbf, qui signifie "pas avant".
Cet indicateur prend 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 les attributs edgemicro.
Filtrer les 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 nommage "edgemicro_". Vous pouvez modifier cette valeur par défaut pour télécharger les 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échargera les 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 dépanner 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 rediriger 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 le numéro de port pour le processus de débogage.
- Vous pouvez maintenant parcourir le code Edge Microgateway, définir des points d'arrêt, observer des expressions, etc.
Vous pouvez spécifier des indicateurs Node.js standards liés 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 informations sur l'exécution et 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 du porteur, 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 en tant que paramètre de requête ou dans un en-tête. Par défaut, le nom de l'en-tête et du paramètre de requête est 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 et le paramètre de requête de la clé API.
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 paramètre de requête et le nom de l'en-tête sont remplacés par apiKey. Dans les deux cas, le nom x-api-key ne fonctionnera plus. Consultez également Modifier une configuration.
Exemple :
curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
Pour en savoir plus sur l'utilisation des clés API avec les 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 pour 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 permettent d'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 edgemicro token de la CLI.
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, et remplacez les valeurs de l'ID client et du code secret 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 les 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 grant_type en tant que paramètre de formulaire. Cette forme de commande est également abordée dans RFC 6749 : The OAuth 2.0 Authorization Framework.
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'une 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, effectuez 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 vous guident tout au long du processus.
- Obtenez un jeton d'accès et d'actualisation avec l'API
/token. Notez que le type d'attribution 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 nombres 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 à ceci :
{ "token": "your-new-access-token" }
Surveillance continue
Forever est un outil Node.js qui redémarre automatiquement une application Node.js en cas de problème ou d'erreur. Edge Microgateway dispose d'un fichier forever.json que vous pouvez configurer pour contrôler le nombre de redémarrages d'Edge Microgateway et les intervalles entre ces redémarrages. 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 Où Edge Microgateway est-il installé ?. Pour en savoir plus sur les options de configuration, consultez la documentation forever-monitor.
La commande edgemicro forever inclut des indicateurs qui vous permettent de spécifier l'emplacement du fichier forever.json (indicateur -f) et de démarrer/arrêter le processus de surveillance Forever (indicateur -a). Exemple :
edgemicro forever -f ~/mydir/forever.json -a start
Pour en savoir plus, consultez la section Surveillance continue 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 d'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'indicateur -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 qui suit la convention de nommage 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. Si vous définissez nodelay sur true, ce comportement est désactivé (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 à la microgateway 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 de l'environnement 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 que le proxy appelle.)
- $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" }Étant donné que le plug-in
extauthse trouve dans le fichierfoo-bar-config.yaml, une erreur "missing_authorization" s'affiche. Ce plug-in valide un jeton JWT qui doit être présent dans l'en-tête d'autorisation de l'appel d'API. Dans la section suivante, vous obtiendrez un JWT qui permettra aux appels d'API de passer sans erreur.
Exemple : Obtenir un jeton d'autorisation
L'exemple suivant montre comment obtenir un jeton JWT à partir du point de terminaison JWT 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 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 c'est le cas, 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 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), pointez l'attributextauth:publickey_urlvers le point de terminaisonedgemicro-auth/jwkPublicKeysdans 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 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 votre organisation Apigee pour laquelle vous avez déjà configuré Edge Microgateway.
- your_env est un environnement de l'organisation.
- L'option
ispécifie la clé client d'une application de développeur disposant d'un produit incluant le proxyedgemicro-auth. - L'option
sspécifie le code secret du consommateur à partir d'une application de développeur qui possède un produit incluant le proxyedgemicro-auth.
Cette commande demande à Apigee Edge de générer un jeton JWT qui peut ensuite être utilisé pour valider 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 de proxy compatible avec Microgateway à déployer sur Apigee Edge. Au lieu de cela, 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 passerelle de microservices. Les appels d'API au microgateway sont ensuite envoyés à l'URL cible du proxy local. Pour le reste, 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 l'arrêt des pics et 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 microgateway et un service s'exécutent chacun dans un seul pod, et où la microgateway 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 microgateway 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 conteneurs, 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 typique. Consultez également Configurer Edge Microgateway. - Exécutez
edgemicro configure, comme vous le feriez dans une procédure de configuration Edge Microgateway typique. 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 code secret dont vous aurez besoin pour démarrer la passerelle microgateway. Si vous avez besoin d'aide, consultez Configurer Edge Microgateway.
- Sur Apigee Edge, créez un produit d'API en respectant 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 aux ressources. 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-en un existant si vous le souhaitez. Pour obtenir de l'aide, consultez Ajouter des développeurs à l'aide de l'interface utilisateur de gestion Edge.
- Dans 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 Enregistrer une application dans l'UI de gestion Edge.
- Sur la machine sur laquelle 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 correspond au 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 Developer 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 synchroniseur
Cette section explique comment utiliser le synchroniseur, une fonctionnalité facultative qui améliore la résilience d'Edge Microgateway en lui permettant de récupérer les données de configuration depuis Apigee Edge et de les écrire dans une base de données Redis locale. Avec une instance de synchroniseur en cours d'exécution, d'autres instances Edge Microgateway s'exécutant 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 synchroniseur offre un certain niveau de résilience pour Edge Microgateway. Cela permet de s'assurer que chaque instance d'Edge Microgateway utilise la même configuration et qu'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 produits d'API et de proxys 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 connexion claire. De plus, une interruption d'Internet peut entraîner l'exécution d'une ou plusieurs instances de microgateway avec des informations de configuration qui ne sont pas synchronisées avec d'autres instances.
Le synchroniseur Edge Microgateway fournit un autre mécanisme 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 de proxy 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 synchroniseur permet à toutes les instances Edge Microgateway s'exécutant 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 synchroniseur est une instance d'Edge Microgateway spécialement configurée. Son seul objectif est d'interroger Apigee Edge (la fréquence 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 de synchronisateur elle-même ne peut pas traiter le trafic de 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. Comme 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 pour l'installation Edge Microgateway que vous souhaitez utiliser comme synchroniseur :
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 en cours d'exécution. Par défaut : 127.0.0.1 |
redisPort |
Port de l'instance Redis. Par défaut : 6379 |
redisDb |
Base de données Redis à utiliser. Valeur par défaut : 0 |
redisPassword |
Mot de passe de votre base de données. |
Enfin, enregistrez le fichier de configuration et démarrez l'instance Edge Microgateway. Il commencera à 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 régulières
Une fois le synchroniseur en cours d'exécution, vous pouvez configurer des nœuds Edge Microgateway supplémentaires pour exécuter des instances de microgateway régulières qui traitent le trafic de proxy d'API. Toutefois, vous configurez ces instances pour qu'elles obtiennent 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é définit l'instance pour qu'elle fonctionne comme une instance Edge Microgateway normale qui traite le trafic de proxy d'API. L'instance obtient 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 synchroniseur :
| Attribut | Valeurs | Description |
|---|---|---|
edge_config.synchronizerMode |
0 ou 1 | Si la valeur est définie sur 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 synchroniseur. 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 n'est pas en mesure de traiter les requêtes de proxy d'API. Son seul objectif est d'interroger Apigee Edge pour obtenir des données de configuration et de les écrire dans la base de données locale. Vous devez ensuite configurer d'autres instances de microgateway pour qu'elles lisent les données 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 dans laquelle le synchroniseur est configuré pour écrire. Si la base de données Redis n'est pas disponible ou si elle est vide, la passerelle de microservices recherche un fichier cache-config.yaml existant pour sa configuration.
Si la valeur est "false" (par défaut), l'instance Edge Microgateway récupère les données de configuration depuis 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 à exclure pour les plug-ins
Vous pouvez configurer le microgateway pour qu'il ignore le traitement des plug-ins pour les 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 variables d'environnement spécifiés sont remplacés par les valeurs réelles des variables d'environnement. Les remplacements sont stockés uniquement en mémoire et non 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 nombres 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>