Documentation de référence sur l'opération et la configuration d'Edge Micropasser

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

Edge Microgateway version 3.1.5 et ultérieure

Cette rubrique 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 utilisez une connexion Internet sans connexion, 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.

  1. Exécutez la commande npm suivante pour passer à la dernière version d'Edge Microgateway :
    npm upgrade edgemicro -g

    Pour effectuer une mise à niveau vers une version spécifique d'Edge Microgateway, vous devez spécifier le numéro de version dans la commande de mise à niveau. Si vous ne spécifiez pas le numéro de version, la dernière version sera installée. Par exemple, pour la mise à niveau vers la version 3.1.0, utilisez la commande suivante:

    npm upgrade edgemicro@3.1.0 -g
  2. Vérifiez le numéro de version. Par exemple, si vous avez installé la version 3.1.0 :
    edgemicro --version
    current nodejs version is v12.5.0
    current edgemicro version is 3.1.0
        
  3. Enfin, installez la dernière version du proxy edgemicro-auth :
    edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME

Apporter des modifications à 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 d'une instance Edge Microgateway nouvellement initialisée
  • Fichier de configuration dynamique pour les instances en cours d'exécution

Cette section décrit ces fichiers et vous explique comment 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

prefix est le répertoire de préfixes npm. Consultez la section Où est installé Edge Microgateway 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 init
edgemicro 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 stop
edgemicro 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 ce modèle: 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 l'actualiser sans temps d'arrêt. Par exemple, si vous ajoutez et configurez un plug-in, vous pouvez actualiser la configuration sans subir de temps d'arrêt, comme expliqué ci-dessous.

Si Edge Microgateway est en cours d'exécution (option sans temps d'arrêt):

  1. Actualisez la configuration 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 (tel que "test" ou "prod").
    • $KEY est la clé renvoyée précédemment par la commande "config".
    • $SECRET est la clé renvoyée précédemment par la commande "config".

    Exemple

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \
      -s 05c14356e42ed1...4e34ab0cc824

Si Edge Microgateway est arrêté:

  1. 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 (tel que "test" ou "prod").
    • $KEY est la clé renvoyée précédemment par la commande "config".
    • $SECRET est la clé renvoyée précédemment par la commande "config".

    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 code secret nécessaires au démarrage d'Edge Microgateway peuvent être stockés dans les variables d'environnement suivantes:

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_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 en savoir plus sur la configuration du protocole TLS dans Apigee Edge Microgateway:

Vidéo Description
Configurer une liaison TLS unidirectionnelle vers le nord Découvrez comment configurer le protocole TLS dans Apigee Edge Microgateway. Cette vidéo présente TLS et son importance, présente TLS dans Edge Microgateway et explique comment configurer le protocole TLS à sens unique de liaison nord.
Configurer l'authentification TLS bidirectionnelle 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 de liaison nord.
Configurer les protocoles TLS unidirectionnels et bidirectionnels Cette troisième vidéo sur la configuration du protocole TLS dans Apigee Edge Microgateway explique comment configurer les protocoles TLS unidirectionnel et bidirectionnel pour la liaison sud.

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 à l'aide du protocole "https", comme suit:

https://localhost:8000/myapi

Pour configurer SSL sur le serveur Microgateway, procédez comme suit:

  1. 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.
  2. Ajoutez l'attribut edgemicro:ssl au 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
  3. Redémarrez Edge Microgateway. Suivez les étapes décrites dans la section Modifier la configuration en fonction du fichier de configuration que vous avez modifié: fichier par défaut ou 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 CA du client au format PFX.
passphrase Chaîne contenant la phrase secrète de la clé privée ou 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 le caractère ":".
rejectUnauthorized Si la valeur est "true", le certificat du 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 à deux voies ; "false" pour le protocole SSL à sens unique

Utiliser les options SSL/TLS du client

Vous pouvez configurer Edge Microgateway en tant que client TLS ou SSL lors de la connexion aux points de terminaison cibles. Dans le fichier de configuration Microgateway, définissez les options SSL/TLS à l'aide de l'élément "targets".

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: true

Dans 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: true

Voici un exemple pour TLS:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    tls:
      client:
        pfx: /Users/myname/twowayssl/ssl/client.pfx
        passphrase: admin123
        rejectUnauthorized: true

Voici la liste de toutes les options de client compatibles:

Option Description
pfx Chemin d'accès à un fichier pfx contenant la clé privée, le certificat et les certificats CA 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 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 le caractère ":".
rejectUnauthorized Si la valeur est "true", le certificat du 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 accepter les revendications personnalisées sur 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 dans 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 avoir un service qui utilise LDAP pour vérifier l'identité.

Gestion des fichiers journaux

Edge Microgateway enregistre des informations sur chaque requête et chaque 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.

Changer le répertoire par défaut des fichiers journaux

Le répertoire dans lequel les fichiers journaux sont stockés est spécifié dans le fichier de configuration Edge Microgateway. Consultez également la section 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'indicateur to_console sur "true" comme suit:

edgemicro:
  logging:
    to_console: true

Avec ce paramètre, les journaux seront envoyés vers la sortie standard. Actuellement, vous ne pouvez pas envoyer de journaux à la fois à stdout et à un fichier journal.

Définir le niveau de journalisation

Vous pouvez définir les niveaux de journalisation suivants: info, warn et error. Nous vous recommandons d'utiliser le niveau d'information. Il consigne toutes les requêtes et réponses de l'API, et il s'agit de l'option par défaut.

Modifier les intervalles de journalisation

Vous pouvez configurer ces intervalles dans le fichier de configuration Edge Microgateway. Consultez également la section Modifier la configuration.

Les attributs configurables sont les suivants:

  • stats_log_interval: (par défaut: 60) intervalle, en secondes, lorsque l'enregistrement de statistiques est écrit dans le fichier journal de l'API.
  • rotate_interval: (valeur par défaut: 24) intervalle, en heures, pendant lequel les fichiers journaux sont alterné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

Bonnes pratiques de maintenance des fichiers journaux

Au fur et à mesure que les données des fichiers journaux s'accumulent, Apigee vous recommande d'adopter les pratiques suivantes:

  • Étant donné que les fichiers journaux peuvent être assez volumineux, assurez-vous que le répertoire de fichiers journaux dispose d'un espace suffisant. Consultez les sections suivantes Emplacement de stockage des fichiers journaux et Modifier le répertoire par défaut des fichiers journaux.
  • Vous devez supprimer les fichiers journaux ou les déplacer vers un répertoire d'archives distinct au moins une fois par semaine.
  • Si votre règle consiste à supprimer des journaux, vous pouvez utiliser la commande CLI edgemicro log -c pour supprimer (nettoyer) les anciens journaux.

Convention d'attribution de noms pour les fichiers journaux

Chaque instance Edge Microgateway génère trois types de fichiers journaux:

  • api : consigne toutes les requêtes et réponses qui transitent par Edge Microgateway. Les compteurs (statistiques) de l'API et les erreurs sont également consignés dans ce fichier.
  • err : consigne tous les éléments envoyés à stderr.
  • out : consigne tout ce qui est envoyé à stdout.

Voici la convention d'attribution de noms:

edgemicro-<Host Name>-<Instance ID>-<Log Type>.log

Exemple :

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log
edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log
edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log

À propos du contenu des fichiers journaux

Ajoutée dans: v2.3.3

Par défaut, le service de journalisation omet le JSON des proxys et des produits téléchargés, ainsi que le jeton Web JSON (JWT). Si vous souhaitez générer ces objets dans les fichiers journaux, définissez 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 des requêtes et des 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" :

  • Demande entrante du client
  • Requête sortante adressé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. Elles se présentent comme suit dans le fichier journal (les numéros de ligne ne sont fournis qu'à titre indicatif dans le document ; ils n'y apparaissent pas).

(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 une par une:

1. Exemple de requête entrante du client:

1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
  • 1436403888651 : horodatage Unix
  • info : dépend du contexte. Il peut s'agir d'une information, d'un avertissement ou d'une erreur, selon le niveau de journalisation. Il peut s'agir de statistiques liées à un enregistrement de statistiques, d'un avertissement en cas d'avertissement ou d'une erreur en cas d'erreur.
  • req : identifie l'événement. Dans ce cas, il s'agit de la requête du client.
  • m : verbe HTTP utilisé dans la requête.
  • u : partie de l'URL qui suit le chemin de base.
  • h : numéro de l'hôte et du port sur lesquels Edge Microgateway écoute.
  • r : hôte distant et port 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 unique. La mise en corrélation des enregistrements de journal par ID de requête peut fournir des informations précieuses sur la latence de la cible.
  • d : durée en millisecondes écoulées 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 au bout de 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 des requêtes était de 11 millisecondes, dont 7 millisecondes par la cible et 4 millisecondes par Edge Microgateway lui-même.

2. Exemple de requête sortante adressée à la cible:

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • 1436403888651 : horodatage Unix
  • info : dépend du contexte. Il peut s'agir d'une information, d'un avertissement ou d'une erreur, selon le niveau de journalisation. Il peut s'agir de statistiques liées à un enregistrement de statistiques, d'un avertissement en cas d'avertissement ou d'une erreur en cas d'erreur.
  • treq : identifie l'événement. Ici, il s'agit de 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 du 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 : horodatage Unix

  • info : dépend du contexte. Il peut s'agir d'une information, d'un avertissement ou d'une erreur, selon le niveau de journalisation. Il peut s'agir de statistiques liées à un enregistrement de statistiques, d'un avertissement en cas d'avertissement ou d'une erreur en cas d'erreur.
  • tres : identifie l'événement, Dans ce cas, cible la réponse.
  • 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 : horodatage Unix

  • info : dépend du contexte. Il peut s'agir d'une information, d'un avertissement ou d'une erreur, selon le niveau de journalisation. Il peut s'agir de statistiques liées à un enregistrement de statistiques, d'un avertissement en cas d'avertissement ou d'une erreur en cas d'erreur.
  • res : identifie l'événement. Dans ce cas, répondez 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 nécessaire à 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

Les fichiers journaux sont alternés selon 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. Toutefois, chaque fois que Edge Microgateway est redémarré, reçoit un nouvel UID et crée un ensemble de fichiers journaux avec cet UID. Consultez également la page Bonnes pratiques de maintenance des fichiers journaux.

Messages d'erreur

Certaines entrées de journal contiennent des messages d'erreur. Pour vous aider à identifier où et pourquoi des 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 la section 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) une URL qui pointe 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 la section Configurer Edge Microgateway.
  • jwt_public_key: (valeur par défaut: aucune) URL pointant vers le proxy Edge Microgateway qui est 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. L'URL suivante est renvoyée lorsque vous exécutez la commande edgemicro configure pour déployer le proxy. Pour en savoir plus, consultez la section Configurer Edge Microgateway.
  • quotaUri: définissez cette propriété de configuration si vous souhaitez gérer les quotas via le proxy edgemicro-auth dé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 interne Edge Microgateway.
    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é à contrecarrer les attaques par déni de service. En règle générale, définissez-la sur un nombre supérieur à max_connections.
  • logging:
    • level: (par défaut: error)
      • info : consigne toutes les requêtes et réponses qui transitent par une instance Edge Microgateway.
      • warn : consigne uniquement les messages d'avertissement.
      • error : consigne uniquement les messages d'erreur.
    • dir: (valeur 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, lorsque l'enregistrement de statistiques est écrit dans le fichier journal de l'API.
    • rotate_interval: (valeur par défaut: 24) intervalle, en heures, pendant lequel les fichiers journaux sont alternés.
  • dir: chemin d'accès relatif entre le répertoire ./gateway et le répertoire ./plugins, ou un chemin absolu.
  • Sequence: liste des modules de plug-in à ajouter à votre instance Edge Microgateway. Les modules s'exécutent dans l'ordre indiqué ici.
  • debug : ajoute le débogage à distance au processus Edge Microgateway.
    • port: numéro de port à é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 exécute une actualisation si quelque chose a changé. L'interrogation récupère toutes les modifications apportées à Edge (modifications apportées aux produits, aux proxys compatibles avec les micropasserelles, etc.) ainsi que les modifications apportées au fichier de configuration local.
  • disable_config_poll_interval: : (valeur par défaut: false) Définissez la valeur sur disable_config_poll_interval: pour disable_config_poll_interval: l'interrogation de modifications automatiques.
  • 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 d'expiration du délai, Edge Microgateway répond avec un code d'état 504. (Ajout de 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 de la version 3.0.6)
  • headers_timeout: cet attribut limite le temps (en millisecondes) que 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.headersTimeout pour les requêtes. (Par défaut: 5 secondes de plus que la durée définie avec edgemicro.keep_alive_timeout. Ce paramètre par défaut empêche les équilibreurs de charge ou les proxys d'interrompre par erreur la connexion.) (Ajout de la version 3.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 accesscontrol n'est pas résolue (c'est-à-dire sans correspondance). Valeurs valides: ALLOW ou DENY Valeur par défaut: ALLOW (ajout: v3.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 à l'analyse Apigee Edge ne sera effectué. S'il est défini sur true ou si cet attribut n'est pas fourni, le plug-in d'analyse fonctionne comme d'habitude. Pour en savoir plus, consultez la section Attributs bord micro. (Ajout de la version 3.1.8).

    Exemple :

    edgemicro
      enableAnalytics=false|true

Attributs d'en-têtes

Ces paramètres configurent la manière dont certains en-têtes HTTP sont traités.

  • x-forwarded-for (par défaut : true) : définissez la valeur 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 se trouve dans la demande, sa valeur sera définie sur la valeur de l'adresse IP du client dans Edge Analytics.
  • x-forwarded-host: (par défaut: true) définissez la valeur sur "false" pour empêcher la transmission des en-têtes x-forwarded-host à la cible.
  • x-request-id: (valeur 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: vrai) définissez la valeur sur "false" pour empêcher la transmission des en-têtes x-response-time à la cible.
  • via: (valeur par défaut: true) définissez la valeur sur "false" pour empêcher la transmission à la cible via des en-têtes.

Attributs OAuth

Ces paramètres configurent la manière dont l'authentification client est appliquée par Edge Microgateway.

  • allowNoAuthorization: (valeur 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 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 à être transmis 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 (par défaut).
  • permission-header (valeur 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 lorsque 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 la section Utiliser une clé API.
  • keep-permission-header (valeur par défaut : false) : si ce champ est défini sur "true", l'en-tête d'autorisation envoyé dans la requête est transmis à la cible (il est conservé).
  • allowOAuthOnly : si cette 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 de n'autoriser que le modèle de sécurité OAuth (tout en maintenant la rétrocompatibilité). (Ajout de la version 2.4.x)
  • allowAPIKeyOnly : si ce paramètre est défini sur "true", chaque API doit comporter un en-tête x-api-key (ou un emplacement personnalisé) avec une clé API.Vous permet d'autoriser uniquement le modèle de sécurité de la clé API (tout en maintenant la rétrocompatibilité). (Ajout de la version 2.4.x)
  • gracePeriod : ce paramètre permet d'éviter les erreurs causées par de légers écarts entre votre horloge système et les heures "Pas avant" (nbf) ou "Émission à la date" (iat) spécifiées dans le jeton d'autorisation JWT. Définissez ce paramètre sur le nombre de secondes pour autoriser ces écarts. (Ajout 2.5.7)

Attributs spécifiques aux plug-ins

Pour plus d'informations sur les attributs configurables pour chaque plug-in, consultez la section Utiliser des plug-ins.

Filtrer les proxys

Vous pouvez filtrer les proxys compatibles avec la micro-passerelle qu'une instance Edge Microgateway traitera. Au démarrage d'Edge Microgateway, il télécharge tous les proxys compatibles avec les micro-passerelles dans l'organisation à laquelle il est associé. Utilisez la configuration suivante pour limiter les proxys traités par la micropasserelle. Par exemple, cette configuration limite le nombre de proxys traités par la micropasserelle à trois: 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 téléchargés et traités par Edge Microgateway. 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 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 les noms tels que "edgemicro-test-1" , "edgemicro_demo" et "Edgemicro_New_Demo". La valeur encodée au format URL peut être utilisée dans le paramètre de requête: %5E%5BEe%5Ddgemicro.%2A%24.

La sortie de débogage suivante 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 selon des attributs personnalisés

Pour filtrer les produits en fonction d'attributs personnalisés:

  1. Dans l'interface utilisateur Edge, sélectionnez le proxy edgemicro_auth dans l'organisation/l'environnement dans lequel vous avez configuré Edge Microgateway.
  2. Dans l'appui sur le développement, ouvrez la règle JavaCallout dans l'éditeur.
  3. Ajoutez un attribut personnalisé avec la clé products.filter.attributes et 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.
  4. Vous pouvez 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.enable sur false. La valeur par défaut est "true".
  5. (Cloud privé uniquement) Si vous utilisez Edge pour Private Cloud, définissez la propriété org.noncps sur true pour extraire les produits des environnements non-CPS.
  6. 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>
    

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. 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 l'affichage des informations de chemin de requête dans les analyses Edge. Ajoutez le code suivant à la configuration de la micropasserelle pour masquer l'URI et/ou le chemin de la requête. Notez que l'URI se compose des parties nom d'hôte et 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 de l'état dans le tableau de bord pour ne pas la confondre avec les appels de proxy d'API réels. Dans le tableau de bord Analytics, les proxys séparés suivent le modèle de dénomination suivant:

edgemicro_proxyname-health

L'image suivante montre deux proxys séparés 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 d'accès relatif à séparer dans le tableau de bord Analytics. Par exemple, si vous spécifiez /healthcheck, tous les appels d'API contenant le chemin /healthcheck apparaîtront dans le tableau de bord en tant que edgemicro_proxyname-health. Notez que cet indicateur ignore le chemin de base du proxy. Pour séparer en fonction d'un chemin d'accès complet, y compris du chemin de base, utilisez l'indicateur proxyPath.
  • proxyPath (facultatif): spécifie un chemin d'accès de proxy d'API complet, 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ù /mocktarget est le chemin de base du proxy, tous les appels d'API avec le chemin /mocktarget/healthcheck apparaîtront dans le tableau de bord en tant que edgemicro_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 des données analytiques.

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  relativePath: /healthcheck

Dans la configuration suivante, toute API avec le chemin d'accès de proxy /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/healthcheck

Configuration d'Edge Microgateway derrière un pare-feu d'entreprise

Utiliser un proxy HTTP pour la communication 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:

  1. Définissez les variables d'environnement HTTP_PROXY, HTTPS_PROXY et NO_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_PROXY peut être une liste de domaines séparés par des virgules vers lesquels Edge Microgateway ne doit pas se servir de proxy.

    Pour en savoir plus sur ces variables, consultez https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables

  2. 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 backend, procédez comme suit:

  1. Ajoutez la configuration suivante au fichier de configuration de la micro-passerelle :
    edgemicro:
      proxy:
        tunnel: true | false
        url: proxy_url
        bypass: target_host # target hosts to bypass the proxy.
        enabled: true | false

    Où :

    • tunnel: (facultatif) lorsque la valeur est définie sur "true", Edge Microgateway utilise la méthode HTTP CONNECT pour tunneliser les requêtes HTTP via une seule connexion TCP. (Il en va de même si les variables d'environnement, comme indiqué ci-dessous, pour la configuration du proxy sont activées avec le protocole TLS.) Par défaut : false
    • url: URL du proxy HTTP.
    • bypass (facultatif) : spécifie une ou plusieurs URL d'hôte cibles séparées par une virgule devant contourner le proxy HTTP. Si cette propriété n'est pas définie, spécifiez les URL cibles à ignorer à l'aide de la variable d'environnement NO_PROXY.
    • enabled: si "true" et que proxy.url est défini, utilisez la valeur proxy.url pour le proxy HTTP. Si "true" et que proxy.url n'est pas défini, utilisez les proxys spécifiés dans les variables d'environnement de proxy HTTP HTTP_PROXY et HTTPS_PROXY, comme décrit dans la section Utiliser un proxy HTTP pour la communication avec Apigee Edge.

    Exemple :

    edgemicro:
      proxy:
        tunnel: true
        url: 'http://localhost:3786'
        bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy.
        enabled: true

  2. 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 avoir à créer de proxys d'API pour prendre en charge les nouvelles équipes. Notez que /**/ n'est pas accepté.

Important:Apigee ne permet PAS l'utilisation du 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

Quelque temps 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 le KVM chiffré par 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, JSON Web Token) est une norme de jeton décrite dans le document RFC7519. Un jeton JWT permet de signer un ensemble de revendications, qui peuvent être validées de manière fiable par le destinataire.

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 la section Générer un jeton.

Qu'est-ce que la rotation des clés ?

Quelque temps 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 le KVM chiffré par 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 publique/privée est générée et stockée dans le KVM "microgateway" de votre organisation/environnement Apigee Edge. En outre, 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 (configurée) d'Edge Microgateway. Les clés du 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écente) utilisée pour signer les jetons JWT.

  • public_key : dernier certificat (créé le plus récemment) utilisé pour vérifier les jetons JWT signés avec la clé private_key.

  • private_key_kid : ID de clé privée le plus récent (créé le plus récemment). Cet ID de clé est associé à la valeur private_key et est utilisé pour gérer la rotation des clés.

  • public_key1_kid : dernier ID de clé publique (créé le plus récemment). Cette clé est associée à la valeur public_key1 et sert à gérer la rotation des clés. Cette valeur est identique à celle de la clé privée enfant.

  • public_key1 : dernière clé publique (la plus récemment créée).

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 : ancien ID de clé publique. Cette clé est associée à la valeur public_key2 et sert à effectuer la rotation des clés.

  • public_key2 : ancienne clé publique.

Les jetons JWT présentés pour la 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*, soit 30 minutes par défaut). De cette manière, vous pouvez "alterner" les clés sans interrompre immédiatement le trafic des API.

Effectuer une rotation des clés

Cette section explique comment effectuer une rotation des clés.

  1. Pour mettre à niveau le KVM, utilisez la commande edgemicro upgradekvm. Pour en savoir plus sur l'exécution de cette commande, consultez la section Mettre à niveau KVM. Vous ne devez effectuer cette étape qu'une seule fois.
  2. Pour mettre à niveau le proxy edgemicro-oauth, utilisez la commande edgemicro upgradeauth. Pour en savoir plus sur l'exécution de cette commande, consultez la section Mettre à niveau le proxy Edgemicro-auth. Vous ne devez effectuer cette étape qu'une seule fois.
  3. Ajoutez la ligne suivante au fichier ~/.edgemicro/org-env-config.yaml, dans lequel vous devez spécifier la même organisation et le même environnement que ceux que vous avez configurés pour la micropasserelle :
    jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
  4. Exécutez la commande de rotation des clés pour alterner les clés. Pour en savoir plus sur cette commande, consultez la section 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é a une valeur "kid" (ID de clé) unique. La micropasserelle utilise ensuite ces clés pour valider les jetons d'autorisation. Si la validation du jeton échoue, la micropasserelle vérifie s'il existe une clé plus ancienne dans l'ensemble de clés et essaie cette clé. Le format des clés renvoyées est la clé Web JSON (JWK). Pour en savoir plus sur ce format, consultez la norme 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 a pris effet immédiatement et les nouveaux jetons générés ont été signés avec la nouvelle clé privée. Cependant, 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 micropasserelle. En raison de ce délai entre la signature des jetons et l'actualisation de l'instance de micro-passerelle, les jetons signés avec la dernière clé sont rejetés jusqu'à ce que toutes les instances reçoivent la dernière clé publique.

Dans les cas où plusieurs instances de micropasserelle existent, le retard de la clé publique provoquait parfois des erreurs d'exécution intermittentes avec l'état 403, car la validation des jetons passait sur une instance, mais échouerait sur une autre instance jusqu'à ce que toutes les instances soient actualisées.

À partir de la version 3.1.6, un nouvel indicateur sur la commande rotatekey vous permet de spécifier un délai pour l'entrée en vigueur de la nouvelle clé privée. Cela permet à toutes les instances de micropasserelle d'être actualisées et de recevoir la nouvelle clé publique. Le nouvel indicateur est --nbf, qui signifie "pas avant". Cette option accepte un nombre entier, c'est-à-dire le nombre de minutes de retard.

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'une bonne pratique consiste à définir un délai supérieur à la valeur du 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 nom "edgemicro_". Vous pouvez modifier cette valeur par défaut pour télécharger les proxys dont les noms correspondent à un modèle.

  1. Ouvrez le fichier de configuration Edge Micro: ~/.edgemicro/org-env-config.yaml
  2. Ajoutez l'élément proxyPattern sous Edge_config. Par exemple, le modèle suivant télécharge des proxys tels que bordmicro_foo, bordmicro_fast et bordmicro_first.
    edge_config:
    …
    proxyPattern: edgemicro_f*

Spécifier des produits sans proxy 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. Depuis 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 est utile pour le dépannage et le débogage des plug-ins personnalisés.

  1. Redémarrez Edge Microgateway en mode débogage. Pour ce faire, ajoutez DEBUG=* au début de la commande start :
    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

  2. Démarrez votre débogueur et configurez-le pour qu'il écoute le numéro de port pour le processus de débogage.
  3. Vous pouvez maintenant parcourir le code d'Edge Microgateway, définir des points d'arrêt, des expressions de contrôle, etc.

Vous pouvez spécifier des indicateurs Node.js standards liés au mode débogage. Par exemple, --nolazy facilite le débogage du code asynchrone.

Vérifier les fichiers journaux

Si vous rencontrez des problèmes, veillez à consulter les détails de l'exécution et les erreurs dans les fichiers journaux. 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 incluant 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 en tant que paramètre de requête ou dans un en-tête. Par défaut, l'en-tête et le nom du paramètre de requête sont tous les 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 la section Modifier 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 d'en-tête sont remplacés par apiKey. Le nom x-api-key ne fonctionnera plus dans les deux cas. Consultez également la section Effectuer des modifications de 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 proxy, consultez Secure Edge Microgateway.

Activer les codes de réponse en amont

Par défaut, le plug-in oauth ne renvoie que des codes d'état d'erreur 4xx si la réponse n'est pas un code d'é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 OAuth2 et des jetons d'actualisation. Les jetons d'accès permettent d'effectuer des appels d'API sécurisés via la micropasserelle. Les jetons d'actualisation sont utilisés pour 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 la page Gérer les jetons.

API 1: envoyer des identifiants en tant que paramètres du corps

Remplacez les noms de votre organisation et de votre environnement dans l'URL, et remplacez les valeurs "ID client" et "Code secret client" obtenues à partir d'une application de développement 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 "Basic Auth"

Envoyez les identifiants client sous la forme d'un en-tête d'authentification de base et le grant_type en tant que paramètre de formulaire. Ce formulaire de commande est également abordé dans le document RFC 6749: 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'existe aucune différence entre les propriétés token et access_token. Vous pouvez utiliser l'une ou l'autre de ces options.
{
"token": "eyJraWQiOiIxIiwidHlwIjoi",
"access_token": "eyJraWQiOiIxIiwid",
"token_type": "bearer",
"expires_in": "108000"
}

Obtenir un jeton d'actualisation

Pour obtenir un jeton d'actualisation, effectuez un appel d'API sur le point de terminaison /token du proxy edgemicro-auth. Vous DEVEZ effectuer cet appel d'API avec le type d'attribution password. Les étapes suivantes vous guideront tout au long du processus.

  1. Obtenez un jeton d'accès et d'actualisation avec l'API /token. Notez que le type d'attribution est password :
    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:

    {
        "token": "your-access-token",
        "access_token": "your-access-token",
        "token_type": "bearer",
        "expires_in": "108000",
        "refresh_token": "your-refresh-token",
        "refresh_token_expires_in": "431999",
        "refresh_token_issued_at": "1562087304302",
        "refresh_token_status": "approved"
    }
  2. Vous pouvez maintenant utiliser le jeton d'actualisation pour obtenir un nouveau jeton d'accès en appelant le point de terminaison /refresh de 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 ininterrompue

Forever est un outil Node.js qui redémarre automatiquement une application Node.js en cas d'échec du processus ou d'erreur. Edge Microgateway comporte un fichier forever.json que vous pouvez configurer pour contrôler le nombre de redémarrages et l'intervalle d'intervalle requis. Ce fichier configure un service Forever appelé forever-monitor qui gère Forever de manière automatisée.

Vous trouverez le fichier forever.json dans le répertoire d'installation racine d'Edge Microgateway. Consultez la section Où est installé Edge Microgateway. Pour plus d'informations sur les options de configuration, reportez-vous à la documentation de forever-monitor.

La commande edgemicro forever inclut des options qui vous permettent de spécifier l'emplacement du fichier forever.json (l'option -f) et de démarrer/arrêter le processus de surveillance permanente (l'option -a). Exemple :

edgemicro forever -f ~/mydir/forever.json -a start

Pour en savoir plus, consultez la section Surveillance constante 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 où 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 utilise la convention d'attribution de noms suivante : 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 Nagle pour mettre les données en mémoire tampon avant de les envoyer. Si vous définissez nodelay sur true, ce comportement est désactivé (les données sont immédiatement déclenché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
  • Analyse

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. En outre, un nouveau plug-in appelé extauth vous permet d'autoriser les appels d'API à la micropasserelle avec un jeton JWT en mode autonome.

Configurer et démarrer la passerelle

Pour exécuter Edge Microgateway en mode autonome:

  1. Créez un fichier de configuration nommé comme suit: $HOME/.edgemicro/$ORG-$ENV-config.yaml

    Exemple :

    vi $HOME/.edgemicro/foo-bar-config.yaml
  2. 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
  3. Exportez la variable d'environnement suivante avec la valeur "1" :
    export EDGEMICRO_LOCAL=1
  4. Exécutez la commande start suivante, dans laquelle vous fournissez les valeurs nécessaires 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 "org" 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 le nom de votre choix.
    • $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 d'accès racine de base, indiquez simplement une barre oblique ; par exemple, "/".

    Exemple :

    edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  5. Tester la configuration
    curl http://localhost:8000/echo  { "error" : "missing_authorization" }

    Comme le plug-in extauth se trouve dans le fichier foo-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 d'autorisation de l'appel d'API. Dans la section suivante, vous allez obtenir un jeton JWT qui permettra aux appels d'API de s'effectuer 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 et une configuration standards d'Edge Microgateway. Pour obtenir le jeton JWT à partir du point de terminaison Apigee, vous devez d'abord configurer Edge Microgateway et être connecté à Internet. Le point de terminaison Apigee n'est utilisé ici qu'à des fins d'exemple et n'est pas obligatoire. Si vous le souhaitez, vous pouvez utiliser un autre point de terminaison de jeton JWT. Dans ce cas, vous devez obtenir le 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 :

  1. Vous devez effectuer une installation et une configuration standards d'Edge Microgateway pour déployer le proxy edgemicro-auth dans votre organisation ou votre environnement sur Apigee Edge. Si vous avez déjà effectué cette étape auparavant, vous n'avez pas besoin de la répéter.
  2. 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.
  3. Arrêtez Edge Microgateway :
    edgemicro stop
  4. Dans le fichier de configuration que vous avez créé précédemment ($HOME/.edgemicro/org-env-config.yaml), faites pointer l'attribut extauth:publickey_url vers le point de terminaison edgemicro-auth/jwkPublicKeys de votre organisation/environnement Apigee Edge. Exemple :
    extauth:
      publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
  5. Redémarrez Edge Microgateway comme vous l'avez fait précédemment, en utilisant les noms org/env que vous avez indiqué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 /
  6. Obtenez un jeton JWT à partir du point de terminaison d'autorisation. Comme vous utilisez le point de terminaison edgemicro-auth/jwkPublicKeys, vous pouvez exécuter la 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 i spécifie la clé client d'une application de développement dont le produit inclut le proxy edgemicro-auth.
  • L'option s spécifie le code secret client provenant d'une application de développement dont le produit inclut le proxy edgemicro-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 la section Générer un jeton.

Tester la configuration autonome

Pour tester la configuration, appelez l'API en ajoutant le jeton 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 les micro-passerelles sur Apigee Edge. À la place, vous configurez un "proxy local" en fournissant un nom de proxy local, un chemin d'accès de base et une URL cible lorsque vous démarrez la micropasserelle. Les appels d'API à la micropasserelle 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 l'arrêt des pics et l'application de 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 micropasserelle et un service s'exécutent chacun dans un seul pod, et où la micropasserelle 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 micropasserelle ne communique qu'avec un seul point de terminaison sur son service associé:

Edgemicro en tant que side-car

L'un des avantages de ce style d'architecture est qu'Edge Microgateway assure la 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:

  1. Exécutez edgemicro init pour configurer votre environnement de configuration local, exactement comme vous le feriez dans une configuration Edge Microgateway classique. Consultez également la page Configurer Edge Microgateway.
  2. Exécutez edgemicro configure, comme vous le feriez dans une procédure de configuration standard d'Edge Microgateway. Exemple :
    edgemicro configure -o your_org -e your_env -u your_apigee_username

    Cette commande déploie la stratégie edgemicro-auth sur Edge et renvoie une clé et un code secret dont vous aurez besoin pour démarrer la micropasserelle. Si vous avez besoin d'aide, consultez la section Configurer Edge Microgateway.

  3. 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 à votre guise) :
    • Vous devez ajouter le proxy edgemicro-auth au produit. Ce proxy a été déployé automatiquement lors de l'exécution de edgemicro configure.
    • Vous devez indiquer un chemin d'accès à la ressource. Apigee vous recommande d'ajouter ce chemin d'accès au produit: /**. Pour en savoir plus, consultez la section Configurer le comportement du chemin d'accès à la ressource. Consultez également la section Créer des produits d'API dans la documentation Edge.
  4. Sur Apigee Edge, créez un développeur ou vous pouvez utiliser un développeur existant si vous le souhaitez. Pour obtenir de l'aide, consultez la section Ajouter des développeurs à l'aide de l'interface utilisateur de gestion Edge.

  5. Dans Apigee Edge, créez une application de développement. Vous devez ajouter à l'application le produit d'API que vous venez de créer. Pour obtenir de l'aide, consultez Enregistrer une application dans l'interface utilisateur de gestion Edge.
  6. Sur la machine sur laquelle Edge Microgateway est installé, exportez la variable d'environnement suivante avec la valeur "1".
    export EDGEMICRO_LOCAL_PROXY=1
  7. Exécutez la commande start suivante :
    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_path

    Où :

    • your_org est votre organisation Apigee.
    • your_environment est un environnement dans votre organisation.
    • your_key est la clé renvoyée lors de l'exécution de edgemicro configure.
    • your_secret est le secret qui a été renvoyé lors de l'exécution de 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 appelle).
    • base_path est le chemin de base du proxy. Cette valeur doit commencer par une barre oblique. Pour un chemin d'accès racine de base, indiquez 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é le 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 la trouverez 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 cette clé 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 synchronisateur, une fonctionnalité facultative qui améliore la résilience d'Edge Microgteway 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 synchronisation 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 à Edge Microgateway. Elle permet de garantir que chaque instance d'Edge Microgateway utilise la même configuration et qu'en cas de perturbation sur Internet, les instances 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 micropasserelle peuvent continuer à fonctionner car les dernières données de configuration sont mises en cache. Toutefois, de nouvelles instances de micropasserelle ne peuvent pas démarrer sans une connexion claire. De plus, une interruption d'Internet peut entraîner l'exécution d'une ou plusieurs instances de micropasserelle avec des informations de configuration désynchronisées avec d'autres instances.

Le synchroniseur d'Edge Microgateway fournit aux instances Edge Microgateway pour récupérer les données de configuration dont elles ont besoin pour démarrer et traiter le trafic proxy d'API. Les données de configuration extraites des appels à Apigee Edge incluent l'appel jwk_public_keys, l'appel jwt_public_key, l'appel d'amorçage et l'appel des 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 synchronisateur est une instance spécialement configurée d'Edge Microgateway. Son seul objectif est d'interroger Apigee Edge (la chronologie 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 s'exécutant 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 micropasserelle extraient leurs données de configuration de la base de données locale, elles peuvent démarrer et traiter des requêtes API, même en cas de panne d'Internet.

Configurer une instance de synchroniseur

Ajoutez la configuration suivante au fichier org-env/config.yaml pour l'installation d'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 s'exécute. Valeur 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 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 standards

Lorsque le synchronisateur est en cours d'exécution, vous pouvez configurer des nœuds Edge Microgateway supplémentaires pour exécuter des instances de micropasserelles standards qui traitent le trafic proxy d'API. Cependant, 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é définit l'instance pour qu'elle fonctionne comme une instance Edge Microgateway standard qui traite le trafic 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 en tant que 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 n'est pas en mesure de traiter les requêtes de proxy d'API. Son seul but 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 micro-passerelle pour lire les données de la base de données.

edge_config.redisBasedConfigCache vrai ou faux 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 identique à celle dans laquelle le synchronisateur est configuré pour l'écriture. Si la base de données Redis est indisponible ou si la base de données est vide, la micropasserelle 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 pour que le synchronisateur extraie les données d'Apigee Edge.

Configurer des URL d'exclusion pour les plug-ins

Vous pouvez configurer la micropasserelle pour qu'elle ignore le traitement des plug-ins pour les URL spécifiées. Vous pouvez configurer ces URL d'exclusion 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 traitent pas les appels de proxy d'API entrants avec les chemins /hello ou /proxy_one. En outre, 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 tags dans le fichier de configuration. Les balises de variables d'environnement spécifiées sont remplacées par les valeurs réelles des variables d'environnement. Les remplacements sont stockés uniquement en mémoire et non dans la configuration d'origine ou dans les fichiers de cache.

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>