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 inviato tramite proxy tramite Apigee Adapter for Envoy.
1. Accedi ad Apigee
- Apri l'interfaccia utente di Apigee in un browser.
- Una volta aperta l'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 l'indirizzo email o il nome dello sviluppatore che preferisci.
3. Creazione di un prodotto API
Segui l'esempio di creazione di un Prodotto fornito 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 Impostalo sull'ambiente utilizzato quando hai eseguito il provisioning dell'adattatore Apigee per 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 il nome di questo attributo:
apigee-remote-service-targets
- Valore: inserisci il nome del servizio di destinazione. Ad esempio:
httpbin.org
- Nome: inserisci il nome di questo 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 dell'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 appena configurato: httpbin-product.
- Fai clic su Crea.
- In Credenziali, fai clic su Mostra accanto alla Chiave.
- Copia il valore della chiave utente. 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 creato in precedenza o scegli quello che preferisci 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 l'adattatore Apigee per 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:
- Destinazione
- Percorso richiesta
- Quota
- Ambiti OAuth
Destinazioni dei servizi remoti
La definizione del prodotto API verrà applicata a una richiesta se questa corrisponde sia all'associazione di target (ad esempio httpbin.org
) sia al percorso della richiesta (ad esempio /httpbin
). Un elenco di potenziali target viene archiviato come attributo nel prodotto API.
Per impostazione predefinita, il servizio remoto Apigee controlla l'intestazione :authority (host)
speciale di Envoy rispetto al suo elenco di destinazioni, ma può essere configurato per l'utilizzo di altre intestazioni.
Percorso risorsa API
Il percorso inserito corrisponde in base alle seguenti regole:
- Una singola barra (
/
) corrisponde a qualsiasi percorso. *
è valido ovunque e corrisponde all'interno di un segmento (tra barre).**
è valido alla fine e corrisponde a qualsiasi cosa 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 successive chiamate API vengono rifiutate.
Casi d'uso per le quoteLe quote consentono di applicare in modo forzato il numero di richieste che un client può effettuare a un servizio in un determinato periodo di tempo. Le quote vengono spesso utilizzate per applicare contratti aziendali o SLA (accordi sul livello del servizio) con sviluppatori e partner, anziché per la gestione operativa del traffico. Ad esempio, potrebbe essere utilizzata una quota per limitare il traffico di un servizio gratuito, consentendo l'accesso completo ai clienti paganti.
La quota viene definita in un prodotto APII parametri delle quote sono configurati nei prodotti API. Ad esempio, quando crei un prodotto API, puoi facoltativamente impostare il limite di quota, l'unità di tempo e l'intervallo consentiti.
>
Poiché le chiavi API vengono mappate ai prodotti API, ogni volta che una chiave API viene verificata, il contatore di quota appropriato può essere ridotto (se nel prodotto associato viene definita una quota).
A differenza del runtime Apigee, le quote inserite nella definizione del prodotto vengono applicate automaticamente dal servizio remoto Apigee. Se la richiesta viene autorizzata, viene conteggiata nella quota consentita.
Dove vengono mantenute le quoteLe quote vengono mantenute e controllate localmente dal processo del servizio remoto e in modo asincrono con Apigee Runtime. Ciò significa che le quote non sono precise e potrebbero verificarsi un superamento se hai più di un servizio remoto che gestisce la quota. Se la connessione al runtime Apigee viene interrotta, la quota locale continuerà come quota autonoma fino al momento in cui riesce a riconnettersi al runtime Apigee.
Ambiti OAuth
Se utilizzi token JWT, puoi limitarli a sottoinsiemi degli ambiti OAuth consentiti. Gli ambiti assegnati al token JWT emesso verranno verificati in base agli ambiti del prodotto API.
Informazioni sulle app per sviluppatori
Dopo aver configurato i prodotti API, creerai 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, ispezionare e ruotare i token JWT. Per l'ambiente ibrido Apigee, puoi utilizzare questo comando per creare il secret di Kubernetes per conservare i JWT.
Panoramica
La verifica e l'autenticazione JWT vengono gestite da Envoy utilizzando il suo filtro di autenticazione JWT.
Una volta autenticato, il filtro ext-authz
di Envoy invia le intestazioni della richiesta e il JWT a
apigee-remote-service-envoy
. Corrisponde alle rivendicazioni api_product_list
e scope
del JWT nei confronti dei prodotti API Apigee per autorizzarlo in base al target 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
o utilizzando l'endpoint del token OAuth standard. Esempio di ricci:
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, è possibile che venga visualizzato un messaggio come:
Jwks remote fetch is failed
In questo caso, assicurati che la configurazione Envoy contenga un URI valido nella sezione remote_jwks
, che sia raggiungibile da Envoy e di aver impostato correttamente i certificati al momento dell'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:
- "I segmenti di pubblico in Jwt non sono consentiti"
- "L'emittente JDBC non è configurata"
Questi derivano dai requisiti della configurazione Envoy che potresti dover modificare.
Ispeziona un token
Puoi utilizzare l'interfaccia a riga di comando per ispezionare 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
Consulta l'articolo Errori relativi a una chiave API valida.Logging
Puoi regolare il livello di registrazione sul 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, alert, error. | Regola il livello di logging. Predefinito: informazioni |
-j, --json-log | Emette l'output di log come record JSON. |
Envoy fornisce il logging. Per ulteriori informazioni, consulta i seguenti link alla documentazione Envoy:
Modifica del nome del secret del criterio
Un secret di Kubernetes di cui è stato eseguito il deployment nel cluster contiene le credenziali necessarie all'adattatore per autenticare la comunicazione con il proxy di servizio remoto. Questo secret richiede un punto di montaggio del volume configurabile. Per impostazione predefinita, il punto di montaggio è /policy-secret
.
Per cambiare 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. - Cambia 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 programma binario apigee-remote-service-envoy. Quando utilizzi queste variabili, la variabile di ambiente NO_PROXY può essere utilizzata anche 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 di Prometheus è disponibile all'indirizzo :5001/metrics
. Puoi configurare questo numero di porta. Vedi File di configurazione.
Analisi Envoy
I seguenti link forniscono informazioni su come ottenere i dati di analisi proxy Envoy:
Analisi Istio
I seguenti link forniscono informazioni su come ottenere i dati di analisi proxy Envoy:
Analisi di Apigee
Apigee Remote Service for Envoy invia statistiche delle richieste ad Apigee per l'elaborazione delle analisi. Apigee segnala queste richieste sotto il nome del prodotto API associato.
Per informazioni sull'analisi di Apigee, consulta la panoramica dei servizi di analisi.