Guida operativa

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Come ottenere una chiave API

L'esempio seguente spiega come ottenere una chiave API da utilizzare per la convalida Chiamate API a un servizio di destinazione inviate tramite proxy tramite Apigee Adapter for Envoy.

1. Accedi ad Apigee

  1. Apri la UI di Apigee in un browser.
  2. Nella UI, 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 oppure crearne uno nuovo procedendo nel seguente modo:

  1. Seleziona Pubblica > Sviluppatori nel menu di navigazione laterale.
  2. Fai clic su + Sviluppatore.
  3. Compila la finestra di dialogo per creare un nuovo sviluppatore. Puoi utilizzare qualsiasi nome/indirizzo email dello sviluppatore che desideri.

3. Creazione di un prodotto API

Segui l'esempio di creazione del prodotto fornito di seguito. Vedi anche Informazioni su configurazione del prodotto API.

  1. Seleziona Pubblica > Prodotti API nel menu di navigazione laterale.
  2. Fai clic su + Prodotto API.
  3. Compila la pagina Dettagli prodotto come segue.
  4. Campo Valore
    Nome httpbin-product
    Nome visualizzato httpbin product
    Ambiente your_environment

    Impostalo sull'ambiente che hai utilizzato quando hai eseguito il provisioning di Apigee Adapter per Envoy.

    Accesso Private
    Quota 5 richieste ogni minuto

    Vedi anche Quota.

  5. Nella sezione Destinazioni di servizio remoto Apigee, fai clic su Aggiungi un target di servizio remoto Apigee.
  6. Nella finestra di dialogo di destinazione del servizio remoto Apigee, aggiungi i seguenti valori:
    Attributo Valore Descrizione
    Nome destinazione Inserisci il nome del servizio di destinazione. Ad esempio: httpbin.org L'endpoint di destinazione davanti al proxy Envoy.
    Percorso Inserisci un percorso di risorsa sul servizio da abbinare. Per esempio: /headers. Il percorso di richiesta per trovare una corrispondenza nell'endpoint di destinazione. Chiamate proxy API a questo percorso corrisponde a questo prodotto API.
  7. Fai clic su Salva.

4. Creazione di un'app sviluppatore

  1. Seleziona Pubblica > App nel menu di navigazione laterale.
  2. Fai clic su + App.
  3. Compila la pagina dell'app sviluppatore come segue. Non salvare finché non ti viene chiesto di farlo.
  4. Nome httpbin-app
    Nome visualizzato httpbin app
    Developer Seleziona lo sviluppatore che hai creato in precedenza o scegline uno che preferisci dall'elenco.
  5. Poi, aggiungi il prodotto API all'app:
    1. Nella sezione Credenziali, fai clic su + Aggiungi prodotto e seleziona il prodotto che appena configurato: httpbin-product.
    2. Fai clic su Crea.
    3. In Credenziali, fai clic su Mostra accanto a Chiave.
    4. Copia il valore della chiave utente. Questo valore è la chiave API. che utilizzerai per effettuare chiamate API al servizio httpbin.

    Informazioni sui prodotti API

    I prodotti API sono lo strumento di controllo principale per il servizio remoto Apigee. Quando crei un prodotto API e lo associ a una servizio di destinazione, stai creando un criterio che applicata a tutte le richieste che configuri per Apigee Adapter for Envoy da gestire.

    Definizione del prodotto API

    Quando definisci un prodotto API in Apigee, puoi impostare una serie di parametri verrà utilizzato per valutare le richieste:

    • Target
    • Percorso richiesta
    • Quota
    • Ambiti OAuth

    Target di servizio remoti

    La definizione del prodotto API verrà applicata a una richiesta se corrisponde sia al target l'associazione (ad esempio httpbin.org) e il percorso della richiesta (ad esempio /httpbin). Un elenco di potenziali target viene archiviato come attributo nella Prodotto API.

    Per impostazione predefinita, il servizio remoto Apigee controlla l'intestazione :authority (host) speciale di Envoy rispetto a il proprio elenco di target; ma può essere configurato per usare altre intestazioni.

    Percorso risorsa API

    Il percorso inserito corrisponde in base alle seguenti regole:

    • Una 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 cosa alla fine della riga.

    Quota

    Una quota specifica il numero di messaggi di richiesta che un'app può inviare a un le API nell'arco 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 relativi alle quote

    Le quote consentono di imporre il numero di richieste che un client può effettuare a un servizio in un un determinato periodo di tempo. Le quote vengono spesso utilizzate per applicare contratti aziendali o SLA con a sviluppatori e partner, non per la gestione operativa del traffico. Ad esempio, un quota potrebbe essere utilizzata per limitare il traffico di un servizio gratuito, consentendo al contempo l'accesso completo clienti paganti.

    La quota è definita in un prodotto API

    I parametri di quota sono configurati nei prodotti API. Ad esempio, quando crei un'API Prodotto, puoi facoltativamente impostare il limite di quota, l'unità di tempo e l'intervallo consentiti.

    Poiché le chiavi API riconnettono ai prodotti API, ogni volta che una chiave API viene verificata, è possibile ridurre il contatore quota appropriato (se è definita una quota nel prodotto associato).

    A differenza del runtime Apigee, le quote immesse nella definizione del prodotto sono automaticamente dal servizio remoto Apigee. Se la richiesta è autorizzata, la richiesta verrà conteggiata nella quota consentita.

    Dove vengono mantenute le quote

    Le quote vengono gestite e controllate localmente dal processo del servizio remoto e in modo asincrono gestito con il runtime Apigee. Ciò significa che le quote non sono precise e probabilmente il superamento della soglia se più di un servizio remoto mantiene la quota. Se la connessione a Apigee Runtime viene interrotta, la quota locale continuerà come autonoma quota finché non sarà in grado di 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 sviluppatore

    Dopo aver configurato i tuoi prodotti API, dovrai creare 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 invece di utilizzare una chiave API. Questo spiega come usare il comando apigee-remote-service-cli token per creare, ispezionare e ruotare i token JWT.

    Panoramica

    La verifica e l'autenticazione JWT vengono gestite da Envoy utilizzando il suo Filtro di autenticazione JWT.

    Una volta eseguita l'autenticazione, il filtro ext-authz di Envoy invia le intestazioni e il JWT della richiesta a apigee-remote-service-envoy. Corrisponde alle rivendicazioni api_product_list e scope del JWT nei prodotti API Apigee per autorizzarla in base alla destinazione della richiesta.

    Creazione di token JWT Apigee in corso...

    I token JWT Apigee possono essere creati utilizzando l'interfaccia a riga di comando:

    $CLI_HOME/apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET

    In alternativa, utilizzando l'endpoint del token OAuth standard. Esempio di Curl:

    curl https://org-env.apigee.net/remote-token/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, è sufficiente passarlo a Envoy nell'intestazione Autorizzazione. Esempio:

    curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"

    Errore del token JWT

    Rifiuto di Envoy

    Se Envoy rifiuta il token, potrebbe essere visualizzato 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 che tu abbia correttamente Impostare i certificati quando hai installato il proxy Apigee. Dovresti riuscire a 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 da Envoy possono avere il seguente aspetto:

    • "I segmenti di pubblico in Jwt non sono consentiti"
    • "L'emittente Jwt non è configurato"

    Si tratta dei requisiti della tua configurazione Envoy che potresti dover modificare.

    Ispeziona un token

    Puoi utilizzare l'interfaccia a riga di comando per ispezionare il token. Esempio

    $CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect -f path/to/file

    o

    $CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN

    Debug

    Consulta l'articolo Non va a buon fine una chiave API valida.

    Logging

    Puoi modificare il livello di logging nel servizio $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Tutti i log vengono inviati a stdout e stderr.

    Elemento Obbligatorio Descrizione
    -l, --log-level Livelli validi: debug, informazioni, avviso, errore. Regola il livello di logging. Valore predefinito: info
    -j, --json-log Emette l'output di log come record JSON.

    Envoy fornisce il logging. Per ulteriori informazioni, consulta i seguenti link alla documentazione di Envoy:

    Utilizzo di un proxy di rete

    È possibile inserire un proxy HTTP utilizzando le variabili di ambiente HTTP_PROXY e HTTPS_PROXY nell'ambiente del file binario apigee-remote-service-envoy. Quando vengono utilizzati, i modelli NO_PROXY può essere utilizzata anche per escludere host specifici dall'invio tramite 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. Consulta File di configurazione.

    Analisi di Envoy

    I seguenti link forniscono informazioni su come ottenere analisi del proxy Envoy dati:

    Analisi Istio

    I seguenti link forniscono informazioni su come ottenere analisi del proxy Envoy dati:

    Analisi Apigee

    Il servizio remoto Apigee per 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 su dati e analisi di Apigee, consulta la panoramica dei servizi di analisi.

    Supporto dell'ambiente multi-tenant

    Ora puoi abilitare l'adattatore per il servizio di più in un'organizzazione Apigee. Questa funzionalità ti consente di usare Adattatore per Envoy associato a un'organizzazione Apigee per gestire più ambienti. Prima del giorno questa modifica, un adattatore era sempre legato a un ambiente Apigee.

    Per configurare il supporto di più ambienti, modifica il valore di tenant:env_name a * nel config.yaml . Ad esempio:

    1. Apri il file config.yaml in un editor.
    2. Modifica il valore di tenant.env_name in *. Ad esempio:
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: apigee-remote-service-envoy
        namespace: apigee
      data:
        config.yaml: |
          tenant:
            remote_service_api: https://myorg-myenv.apigee.net/remote-service
            org_name: apigee-docs-hybrid-a
            env_name: *
            allow_unverified_ssl_cert: true
          analytics:
            collection_interval: 10s
          auth:
            jwt_provider_key: https://myorg-myenv.apigee.net.net/remote-token/token
    3. Salva il file.
    4. Applica il file:
      kubectl apply -f $CLI_HOME/config.yaml

    Quando configuri la modalità multi-ambiente, devi anche configurare Envoy per inviare un messaggio valore di ambiente all'adattatore aggiungendo i seguenti metadati nel Sezione virtual_hosts:routes del file envoy-config.yaml. Ad esempio:

    1. Genera il file envoy-config.yaml utilizzando l'interfaccia a riga di comando. Ad esempio:
      $CLI_HOME/apigee-remote-service-cli samples create \
        -t envoy-1.16 -c ./config.yaml --out myconfigs
    2. Apri il file generato (denominato envoy-config.yaml).
    3. Aggiungi i seguenti metadati in virtual_host o Sezione routes del file:
      typed_per_filter_config:
        envoy.filters.http.ext_authz:
          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
          check_settings:
            context_extensions:
              apigee_environment: test

      L'esempio seguente illustra la configurazione di un virtual_host con più route definita, in cui ogni route invia il traffico a un ambiente specifico:

      filter_chains:
          - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                stat_prefix: ingress_http
                route_config:
                  virtual_hosts:
                  - name: default
                    domains: "*"
                    routes:
                    - match: { prefix: /test }
                      route:
                        cluster: httpbin
                      typed_per_filter_config:
                        envoy.filters.http.ext_authz:
                          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
                          check_settings:
                            context_extensions:
                               apigee_environment: test
                    - match: { prefix: /prod }
                      route:
                        cluster: httpbin
                      typed_per_filter_config:
                        envoy.filters.http.ext_authz:
                          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
                          check_settings:
                            context_extensions:
                               apigee_environment: prod
    4. Ripeti l'ultimo passaggio per aggiungere altri ambienti in base alle esigenze.
    5. Salva il file e applicalo.

    Configurazione di mTLS tra l'adattatore e il runtime Apigee

    Puoi fornire certificati TLS lato client nella sezione tenant della config.yaml dell'adattatore per utilizzare mTLS tra l'adattatore e il runtime Apigee. Questo si applica a tutte le piattaforme Apigee supportate. Abilita anche mTLS per l'analisi per la piattaforma Apigee Edge per il cloud privato. Ad esempio:

    tenant:
      tls:
        ca_file: path/ca.pem
        cert_file: path/cert.pem
        key_file: path/key.pem
        allow_unverified_ssl_cert: false