Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Come ottenere una chiave API
L'esempio seguente spiega come ottenere una chiave API che puoi utilizzare per convalidare le chiamate API a un servizio di destinazione sottoposto a proxy tramite l'adattatore Apigee per Envoy.
1. Accedere ad Apigee
- Apri la UI di Apigee in un browser.
- Una volta nell'interfaccia utente, seleziona la stessa organizzazione che hai utilizzato per configurare Apigee Adapter for Envoy.
2. Creazione di uno sviluppatore
Puoi utilizzare uno sviluppatore esistente per i test o crearne uno nuovo nel seguente modo:
- Seleziona Pubblica > Sviluppatori nel menu di navigazione laterale.
- Fai clic su + Sviluppatore.
- Compila la finestra di dialogo per creare un nuovo sviluppatore. Puoi utilizzare qualsiasi nome/email dello sviluppatore che preferisci.
3. Creazione di un prodotto API
Segui l'esempio di creazione del prodotto riportato di seguito. Vedi anche Informazioni sulla configurazione del prodotto API.
- Seleziona Pubblica > Prodotti API nel menu di navigazione laterale.
- Fai clic su +Crea.
- Compila la pagina Dettagli prodotto come segue. Non fare clic su Salva finché non ti viene chiesto di farlo.
Campo Valore Nome httpbin-product
Nome visualizzato httpbin product
Ambiente your_environment Imposta questo valore sull'ambiente che hai utilizzato quando hai eseguito il provisioning di Apigee Adapter for Envoy con
apigee-remote-service-cli
.Accesso Private
Quota 5 richieste ogni minuto Vedi anche Informazioni sui prodotti API.
- Nella sezione Attributi personalizzati, fai clic su +AGGIUNGI ATTRIBUTO PERSONALIZZATO.
- Inserisci questa coppia nome/valore:
- Nome: inserisci questo nome attributo:
apigee-remote-service-targets
- Valore: inserisci il nome del servizio di destinazione. Ad esempio:
httpbin.org
- Nome: inserisci questo nome attributo:
- Fai clic su OK.
- Fai clic su Salva.
4. Creazione di un'app sviluppatore
- Seleziona Pubblica > App nel menu di navigazione laterale.
- Fai clic su + App.
- Compila la pagina App per sviluppatori come segue. Non salvare finché non ti viene chiesto di farlo.
- Nella sezione Credenziali, fai clic su + Aggiungi prodotto e seleziona il prodotto che hai appena configurato: httpbin-product.
- Fai clic su Crea.
- In Credenziali, fai clic su Mostra accanto a Chiave.
- Copia il valore della chiave consumer. Questo valore è la chiave API
che utilizzerai per effettuare chiamate API al servizio
httpbin
.
Nome | httpbin-app
|
Nome visualizzato | httpbin app
|
Developer | Seleziona lo sviluppatore che hai creato in precedenza o scegli uno sviluppatore qualsiasi dall'elenco. |
Informazioni sui prodotti API
I prodotti API sono il punto di controllo principale per il servizio remoto Apigee. Quando crei un prodotto API e lo associ a un servizio di destinazione, crei un criterio che verrà applicato a tutte le richieste che configuri per la gestione da parte di Apigee Adapter for Envoy.
Definizione del prodotto API
Quando definisci un prodotto API in Apigee, puoi impostare una serie di parametri che verranno utilizzati per valutare le richieste:
- Target
- Percorso richiesta
- Quota
- ambiti OAuth
Destinazioni del servizio remoto
La definizione del prodotto API verrà applicata a una richiesta se la richiesta corrisponde sia all'associazione di destinazione (ad esempio httpbin.org
) sia al percorso della richiesta (ad esempio /httpbin
).
Un elenco di potenziali destinazioni viene memorizzato come attributo nel prodotto API.
Per impostazione predefinita, il servizio remoto Apigee controlla l'intestazione speciale :authority (host)
di Envoy rispetto
al suo elenco di destinazioni, ma può essere configurato per utilizzare altre intestazioni.
Percorso della risorsa API
Il percorso inserito corrisponde in base alle seguenti regole:
- Una singola barra (
/
) da sola corrisponde a qualsiasi percorso. *
è valido ovunque e corrisponde all'interno di un segmento (tra le barre).**
è valido alla fine e corrisponde a qualsiasi elemento fino alla fine della riga.
Quota
Una quota specifica il numero di messaggi di richiesta che un'app può 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.
Casi d'uso delle quoteLe quote ti consentono di applicare il numero di richieste che un client può inviare a un servizio in un determinato periodo di tempo. Le quote vengono spesso utilizzate per far rispettare 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 gratuito, consentendo al contempo l'accesso completo ai clienti paganti.
La quota è definita in un prodotto APII parametri di quota sono configurati nei prodotti API. Ad esempio, quando crei un prodotto API, puoi impostare facoltativamente il limite di quota consentito, l'unità di tempo e l'intervallo.
>
Poiché le chiavi API vengono mappate ai prodotti API, ogni volta che una chiave API viene verificata, il contatore della quota appropriato può essere decrementato (se una quota è definita nel prodotto associato).
A differenza di quanto avviene nel runtime Apigee, le quote inserite nella definizione del prodotto vengono applicate automaticamente dal servizio remoto Apigee. Se la richiesta viene autorizzata, verrà conteggiata in base alla quota consentita.
Dove vengono gestite le quoteLe quote vengono gestite e controllate localmente dal processo del servizio remoto e gestite in modo asincrono con Apigee Runtime. Ciò significa che le quote non sono precise e probabilmente si verificherà un superamento se hai più di un servizio remoto che gestisce la quota. Se la connessione ad Apigee Runtime viene interrotta, la quota locale continuerà a essere una quota autonoma fino a quando non sarà possibile riconnettersi ad Apigee Runtime.
Ambiti OAuth
Se utilizzi token JWT, puoi limitare i token a sottoinsiemi degli ambiti OAuth consentiti. Gli ambiti assegnati al token JWT emesso verranno controllati rispetto agli ambiti del prodotto API.
Informazioni sulle app sviluppatore
Una volta configurati i prodotti API, crea un'app associata a uno sviluppatore. L'app consente a un client di accedere ai prodotti API associati con una chiave API o un token JWT.
Utilizzo dell'autenticazione basata su JWT
Puoi utilizzare un token JWT per effettuare chiamate proxy API autenticate anziché utilizzare una chiave API. Questa
sezione spiega come utilizzare il comando apigee-remote-service-cli token
per
creare, esaminare e ruotare i token JWT. Per l'ambiente ibrido Apigee, puoi utilizzare
questo comando per creare il secret Kubernetes che contiene i JWT.
Panoramica
La verifica e l'autenticazione JWT vengono gestite da Envoy utilizzando il relativo filtro di autenticazione JWT.
Una volta autenticato, il filtro Envoy ext-authz
invia le intestazioni della richiesta e il JWT a
apigee-remote-service-envoy
. Confronta le rivendicazioni api_product_list
e scope
del JWT
con i prodotti API Apigee per autorizzarlo rispetto alla destinazione della richiesta.
Creazione di token JWT Apigee
I token JWT Apigee possono essere creati utilizzando l'interfaccia a riga di comando:
apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET
oppure utilizzando l'endpoint del token OAuth standard. Esempio di curl:
curl https://org-env.apigee.net/remote-service/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"
Utilizzo del token JWT
Una volta ottenuto il token, devi semplicemente passarlo a Envoy nell'intestazione Authorization. Esempio:
curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"
Errore del token JWT
Rifiuto di Envoy
Se Envoy rifiuta il token, potresti visualizzare un messaggio simile al seguente:
Jwks remote fetch is failed
In questo caso, assicurati che la configurazione di Envoy contenga un URI valido nella
sezione remote_jwks
, che sia raggiungibile da Envoy e di aver impostato correttamente
i certificati durante l'installazione del proxy Apigee. Dovresti essere in grado
di chiamare l'URI direttamente con una chiamata GET e ricevere una risposta JSON valida.
Esempio:
curl https://myorg-eval-test.apigee.net/remote-service/certs
Altri messaggi di Envoy potrebbero avere il seguente aspetto:
- "Audiences in Jwt are not allowed"
- "Jwt issuer is not configured" (Jwt issuer non è configurato)
Questi provengono dai requisiti della configurazione di Envoy che potresti dover modificare.
Ispezionare un token
Puoi utilizzare la CLI per esaminare il token. Esempio
apigee-remote-service-cli -c config.yaml token inspect -f path/to/file
o
apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN
Debug
Vedi Chiave API valida non riuscita.Logging
Puoi regolare il livello di logging nel servizio $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Tutti i log vengono inviati a stderr.
Elemento | Obbligatorio | Descrizione |
---|---|---|
-l, --log-level | Livelli validi: debug, info, warn, error. | Regola il livello di logging. Valore predefinito: info |
-j, --json-log | Emette l'output del log come record JSON. |
Envoy fornisce la registrazione. Per saperne di più, consulta i seguenti link alla documentazione di Envoy:
Modifica del nome secret della policy
Un secret Kubernetes di cui è stato eseguito il deployment nel cluster contiene le credenziali necessarie all'adattatore
per autenticare la comunicazione con il proxy del servizio remoto. Questo secret richiede un
punto di montaggio del volume, che è configurabile. Per impostazione predefinita, il punto di montaggio è /policy-secret
.
Per modificare il punto di montaggio:
- Esegui questo comando:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/new-mount_point_name
Ad esempio:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/my-mount-point
- Apri
$CLI_HOME/samples/apigee-envoy-adapter.yaml
in un editor. - Modifica il nome del punto di montaggio con il nuovo nome:
volumeMounts: - mountPath: /config name: apigee-remote-service-envoy readOnly: true - mountPath: /opt/apigee/tls name: tls-volume readOnly: true - mountPath: /my-mount-point name: policy-secret readOnly: true
- Salva il file e applicalo al mesh di servizi:
kubectl apply -f $REMOTE_SERVICE_HOME/samples/apigee-envoy-adapter.yaml
Utilizzo di un proxy di rete
Un proxy HTTP può essere inserito utilizzando le variabili di ambiente HTTP_PROXY e HTTPS_PROXY nell'ambiente del binario apigee-remote-service-envoy. Quando le utilizzi, puoi utilizzare anche la variabile di ambiente NO_PROXY per escludere host specifici dall'invio tramite il proxy.
HTTP_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] HTTPS_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] NO_PROXY=127.0.0.1,localhost
Ricorda che il proxy deve essere raggiungibile da apigee-remote-service-envoy.
Informazioni su metriche e analisi
Un endpoint delle metriche Prometheus è disponibile all'indirizzo :5001/metrics
. Puoi configurare
questo numero di porta. Vedi File di configurazione.
Analisi di Envoy
I seguenti link forniscono informazioni sull'ottenimento dei dati di analisi del proxy Envoy:
Analisi Istio
I seguenti link forniscono informazioni sull'ottenimento dei dati di analisi del proxy Envoy:
Apigee Analytics
Apigee Remote Service for Envoy invia le statistiche delle richieste ad Apigee per l'elaborazione delle analisi. Apigee segnala queste richieste con il nome del prodotto API associato.
Per informazioni su Apigee Analytics, consulta la panoramica dei servizi di analisi.