Utilizzare i plug-in

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Edge Microgateway v. 3.0.x

Pubblico

Questo argomento è rivolto agli operatori di Edge Microgateway che vogliono utilizzare i plug-in esistenti che sono installati con il microgateway. Vengono inoltre descritti in dettaglio i plug-in per l'arresto dei picchi e per le quote (entrambi inclusi nell'installazione). Se sei uno sviluppatore che vuole sviluppare nuovi plug-in, consulta Sviluppare plug-in personalizzati.

Che cos'è un plug-in di Edge Microgateway?

Un plug-in è un modulo Node.js che aggiunge funzionalità a Edge Microgateway. I moduli dei plug-in seguono un pattern coerente e vengono archiviati in una posizione nota a Edge Microgateway, consentendo al microgateway di rilevarli e caricarli automaticamente. Edge Microgateway include diversi plug-in esistenti e puoi anche creare plug-in personalizzati, come spiegato in Sviluppare plug-in personalizzati.

Plug-in esistenti inclusi in Edge Microgateway

Durante l'installazione di Edge Microgateway vengono forniti diversi plug-in esistenti. tra cui:

Plug-in Abilitato per impostazione predefinita Descrizione
analytics Invia i dati di analisi da Edge Microgateway ad Apigee Edge.
oauth Aggiunge la convalida del token OAuth e della chiave API a Edge Microgateway. Consulta Configurare e configurare Edge Microgateway.
quota No Applica la quota alle richieste a Edge Microgateway. Utilizza Apigee Edge per archiviare e gestire le quote. Consulta Utilizzare il plug-in per le quote.
spikearrest No Protegge da picchi di traffico e attacchi DoS. Consulta Utilizzare il plug-in per l'arresto dei picchi.
header-uppercase No Un proxy di esempio commentato, pensato come guida per aiutare gli sviluppatori a scrivere plug-in personalizzati. Consulta Plug-in di esempio di Edge Microgateway.
accumulate-request No Accumula i dati delle richieste in un singolo oggetto prima di passarli al gestore successivo nella catena di plug-in. Utile per scrivere plug-in di trasformazione che devono operare su un singolo oggetto di contenuti di richiesta accumulati.
accumulate-response No Accumula i dati delle risposte in un singolo oggetto prima di passarli al gestore successivo nella catena di plug-in. Utile per scrivere plug-in di trasformazione che devono operare su un singolo oggetto di contenuti di risposta accumulati.
transform-uppercase No Trasforma i dati di richiesta o risposta. Questo plug-in rappresenta un'implementazione di best practice di un plug-in di trasformazione. Il plug-in di esempio esegue una trasformazione banale (converte i dati di richiesta o risposta in maiuscolo); tuttavia, può essere facilmente adattato per eseguire altri tipi di trasformazioni, come da XML a JSON.
json2xml No Trasforma i dati di richiesta o risposta in base alle intestazioni Accept o Content-Type. Per dettagli, consulta la documentazione del plug-in su GitHub.
quota-memory No Applica la quota alle richieste a Edge Microgateway. Archivia e gestisce le quote nella memoria locale memory.
healthcheck No Restituisce informazioni sul processo di Edge Microgateway: utilizzo della memoria, utilizzo della CPU e così via. Per utilizzare il plug-in, chiama l'URL /healthcheck sull'istanza di Edge Microgateway. Questo plug-in è pensato per essere un esempio che puoi utilizzare per implementare il tuo plug-in di controllo dell'integrità.

Dove trovare i plug-in esistenti

I plug-in esistenti inclusi in Edge Microgateway si trovano qui, dove [prefix] è la npm directory del prefisso. Consulta Dove è installato Edge Microgateway se non riesci a trovare questa directory.

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

Aggiungere e configurare i plug-in

Segui questo pattern per aggiungere e configurare i plug-in:

  1. Arresta Edge Microgateway.
  2. Apri un file di configurazione di Edge Microgateway. Per maggiori dettagli, consulta Apportare modifiche alla configurazione per le opzioni.
  3. Aggiungi il plug-in all'elemento plugins:sequence del file di configurazione, come segue. I plug-in vengono eseguiti nell'ordine in cui appaiono in questo elenco.
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. Configura il plug-in. Alcuni plug-in hanno parametri facoltativi che puoi configurare nel file di configurazione. Ad esempio, puoi aggiungere la seguente sezione per configurare il plug-in per l'arresto dei picchi. Per ulteriori informazioni, consulta Utilizzare il plug-in per l'arresto dei picchi.
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
  1. Salva il file.
  2. Riavvia o ricarica Edge Microgateway, a seconda del file di configurazione che hai modificato.

Configurazione specifica del plug-in

Puoi sostituire i parametri del plug-in specificati nel file di configurazione creando una configurazione specifica del plug-in in questa directory:

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

dove [prefix] è la directory del prefisso npm. Consulta Dove è installato Edge Microgateway se non riesci a trovare questa directory.

plugins/<plugin_name>/config/default.yaml. Ad esempio, puoi inserire questo blocco in plugins/spikearrest/config/default.yaml e sostituirà tutte le altre impostazioni di configurazione.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

Utilizzare il plug-in per l'arresto dei picchi

Il plug-in per l'arresto dei picchi protegge dai picchi di traffico. Limita il numero di richieste elaborate da un'istanza di Edge Microgateway.

Aggiungere il plug-in per l'arresto dei picchi

Consulta Aggiungere e configurare i plug-in.

Esempio di configurazione per l'arresto dei picchi

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

Opzioni di configurazione per l'arresto dei picchi

  • timeUnit: la frequenza con cui viene reimpostata la finestra di esecuzione dell'arresto dei picchi. I valori validi sono second o minute.
  • allow: il numero massimo di richieste consentite durante timeUnit. Consulta anche Se esegui più processi Edge Micro processi.
  • bufferSize: (facoltativo, valore predefinito = 0) se bufferSize > 0, l'arresto dei picchi memorizza questo numero di richieste in un buffer. Non appena si verifica la successiva "finestra" di esecuzione, le richieste memorizzate nel buffer vengono elaborate per prime. Consulta anche Aggiungere un buffer.

Come funziona l'arresto dei picchi?

L'arresto dei picchi è un modo per proteggere in generale dai picchi di traffico, anziché un modo per limitare il traffico a un numero specifico di richieste. Le tue API e il tuo backend possono gestire una determinata quantità di traffico e il criterio per l'arresto dei picchi ti aiuta a uniformare il traffico alle quantità generali che desideri.

Il comportamento di runtime dell'arresto dei picchi è diverso da quello che potresti aspettarti di vedere dai valori letterali al minuto o al secondo che inserisci.

Ad esempio, supponiamo di specificare una frequenza di 30 richieste al minuto, come segue:

spikearrest:
   timeUnit: minute
   allow: 30

Durante i test, potresti pensare di poter inviare 30 richieste in 1 secondo, purché rientrino in un minuto. Ma non è così che il criterio applica l'impostazione. Se ci pensi, 30 richieste in un periodo di 1 secondo potrebbero essere considerate un mini picco in alcuni ambienti.

Che cosa succede effettivamente? Per evitare comportamenti simili a picchi, l'arresto dei picchi uniforma il traffico consentito dividendo le impostazioni in intervalli più piccoli, come segue:

Frequenze al minuto

Le frequenze al minuto vengono uniformate in intervalli di secondi di richieste consentite. Ad esempio, 30 richieste al minuto vengono uniformate come segue:

60 secondi (1 minuto) / 30 = intervalli di 2 secondi o circa 1 richiesta consentita ogni 2 secondi. Una seconda richiesta entro 2 secondi non andrà a buon fine. Inoltre, una 31ª richiesta entro un minuto non andrà a buon fine.

Frequenze al secondo

Le frequenze al secondo vengono uniformate in intervalli di millisecondi di richieste consentite. Ad esempio, 10 richieste/secondo vengono uniformate come segue:

1000 millisecondi (1 secondo) / 10 = intervalli di 100 millisecondi o circa 1 richiesta consentita ogni 100 millisecondi . Una seconda richiesta entro 100 ms non andrà a buon fine. Inoltre, un'undicesima richiesta entro un secondo non andrà a buon fine.

Quando il limite viene superato

Se il numero di richieste supera il limite entro l'intervallo di tempo specificato, l'arresto dei picchi restituisce questo messaggio di errore con uno stato HTTP 503:

{"error": "spike arrest policy violated"}

Aggiungere un buffer

Hai la possibilità di aggiungere un buffer al criterio. Supponiamo di impostare il buffer su 10. Vedrai che l'API non restituisce immediatamente un errore quando superi il limite di arresto dei picchi. Le richieste vengono invece memorizzate nel buffer (fino al numero specificato) e le richieste memorizzate nel buffer vengono elaborate non appena è disponibile la finestra di esecuzione appropriata successiva. Il valore predefinito di bufferSize è 0.

Se esegui più processi Edge Micro processi

Il numero di richieste consentite dipende dal numero di processi worker di Edge Micro in esecuzione. L'arresto dei picchi calcola il numero consentito di richieste per processo worker. Per impostazione predefinita, il numero di processi Edge Micro è uguale al numero di CPU sulla macchina su cui è installato Edge Micro. Tuttavia, puoi configurare il numero di processi worker quando avvii Edge Micro utilizzando l'opzione --processes nel comando start. Ad esempio, se vuoi che l'arresto dei picchi venga attivato a 100 richieste in un determinato periodo di tempo e se avvii Edge Microgateway con l'opzione --processes 4, imposta allow: 25 nella configurazione dell'arresto dei picchi. In sintesi, la regola generale è di impostare il allow parametro di configurazione sul valore "conteggio arresto picchi desiderato / numero di processi".

Utilizzare il plug-in per le quote

Una quota specifica il numero di messaggi di richiesta che un'app è autorizzata a inviare a un'API nel corso di un'ora, un giorno, una settimana o un mese. Quando un'app raggiunge il limite di quota, le chiamate API successive vengono rifiutate. Consulta anche Qual è la differenza tra arresto dei picchi e quota?.

Aggiungere il plug-in per le quote

Consulta Aggiungere e configurare i plug-in.

Configurazione del prodotto in Apigee Edge

Configura le quote nell'interfaccia utente di Apigee Edge, dove configuri i prodotti API. Devi sapere quale prodotto contiene il proxy compatibile con il microgateway che vuoi limitare con una quota. Questo prodotto deve essere aggiunto a un'app sviluppatore. Quando effettui chiamate API autenticate utilizzando le chiavi nell'app sviluppatore, la quota verrà applicata a queste chiamate API.

  1. Accedi all'account dell'organizzazione Apigee Edge.
  2. Nell'interfaccia utente di Edge, apri il prodotto associato al proxy compatibile con il microgateway a cui vuoi applicare la quota.
    1. Nell'interfaccia utente, seleziona Prodotti dal menu Pubblica.
    2. Apri il prodotto contenente l'API a cui vuoi applicare la quota.
    3. Fai clic su Modifica.
    4. Nel campo Quota, specifica l'intervallo di quota. Ad esempio, 100 richieste ogni minuto. Oppure 50.000 richieste ogni 2 ore.

  1. Fai clic su Salva.
  2. Assicurati che il prodotto sia aggiunto a un'app sviluppatore. Avrai bisogno delle chiavi di questa app per effettuare chiamate API autenticate.

Esempio di configurazione per le quote

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

Opzioni di configurazione per le quote

Per configurare il plug-in per le quote, aggiungi l'elemento quotas al file di configurazione, come mostrato nell'esempio seguente:

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota
quotas:
  bufferSize:
    hour: 20000
    minute: 500
    month: 1
    default: 10000
  useDebugMpId: true
  failOpen: true
  useRedis: true
  redisHost: localhost
  redisPort: 6379
  redisDb: 1
...
Opzione Descrizione
buffersize (Integer) La dimensione del buffer da impostare per l'intervallo di tempo specificato. Le unità di tempo consentite includono: hour, minute, day, week, month e default. (Aggiunto: versione 3.0.9)
failOpen Quando questa funzionalità è abilitata, se si verifica un errore di elaborazione della quota o se la richiesta "quota apply" a Edge non riesce ad aggiornare i contatori delle quote remoti, la quota verrà elaborata in base ai conteggi locali solo fino alla successiva sincronizzazione delle quote remote. In entrambi i casi, nell'oggetto della richiesta viene impostato un flag quota-failed-open. (Aggiunto: versione 3.0.9)

Per abilitare la funzionalità "fail open" della quota, imposta la seguente configurazione:

edgemicro:
...
quotas:
  failOpen: true
...
useDebugMpId Imposta questo flag su true per abilitare la registrazione dell'ID MP (processore di messaggi) nelle risposte alle quote. (Aggiunto: versione 3.0.9)

Per utilizzare questa funzionalità, devi aggiornare il proxy edgemicro-auth alla versione 3.0.7 o successive e impostare la seguente configurazione:

edgemicro:
...
quotas:
  useDebugMpId: true
...

Quando useDebugMpId è impostato, le risposte alle quote da Edge conterranno l'ID MP e verranno registrate da Edge Microgateway. Ad esempio:

{
    "allowed": 20,
    "used": 3,
    "exceeded": 0,
    "available": 17,
    "expiryTime": 1570748640000,
    "timestamp": 1570748580323,
    "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
}
useRedis (Boolean) Imposta su true per utilizzare il modulo del database delle quote Redis. Se impostata, la quota è limitata solo alle istanze di Edge Microgateway che si connettono a Redis. In caso contrario, il contatore delle quote è globale. Valore predefinito: false (viene utilizzato il modulo redis-volos-apigee) (Aggiunto: versione 3.0.10)
redisHost L'host in cui è in esecuzione l'istanza Redis. Valore predefinito: 127.0.0.1 (Aggiunto: versione 3.0.10)
redisPort La porta dell'istanza Redis. Valore predefinito: 6379 (Aggiunto: versione 3.0.10)
redisDb Il database Redis da utilizzare. Valore predefinito: 0 (Aggiunto: versione 3.0.10)

Informazioni sull'ambito delle quote

Il conteggio delle quote è limitato a un prodotto API. Se un'app sviluppatore ha più prodotti, la quota è limitata a ciascuno singolarmente. Per ottenere questo ambito, Edge Microgateway crea un identificatore di quota che è una combinazione di "appName + productName".

Testare il plug-in per le quote

Quando la quota viene superata, al client viene restituito uno stato HTTP 403, insieme al seguente messaggio:

{"error": "exceeded quota"}

Qual è la differenza tra arresto dei picchi e quota?

È importante scegliere lo strumento giusto per il lavoro da svolgere. I criteri per le quote configurano il numero di messaggi di richiesta che un'app client è autorizzata a inviare a un'API nel corso di un'ora, un giorno, una settimana o un mese. Il criterio per le quote applica i limiti di consumo alle app client mediante un contatore distribuito che conteggia le richieste in entrata.

Utilizza un criterio per le quote per applicare contratti commerciali o SLA con sviluppatori e partner, anziché per la gestione del traffico operativo. Ad esempio, una quota potrebbe essere utilizzata per limitare il traffico per un servizio senza costi, consentendo al contempo l'accesso completo ai clienti paganti.

Utilizza l'arresto dei picchi per proteggere da picchi improvvisi di traffico API. In genere, l'arresto dei picchi viene utilizzato per prevenire possibili attacchi DDoS o altri attacchi dannosi.