Guida alle operazioni

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

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

  1. Apri la UI di Apigee in un browser.
  2. 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:

  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/email dello sviluppatore.

3. Creazione di un prodotto API

Segui l'esempio di creazione del prodotto riportato di seguito. Vedi anche Informazioni sulla 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

    Imposta questo valore sull'ambiente che hai utilizzato durante il provisioning di Apigee Adapter for Envoy.

    Accesso Private
    Quota 5 richieste ogni minuto

    Vedi anche Quota.

  5. Nella sezione Target 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 target Inserisci il nome del servizio di destinazione. Ad esempio: httpbin.org L'endpoint di destinazione front-end del proxy Envoy.
    Percorso Inserisci un percorso risorsa sul servizio da associare. Ad esempio: /headers. Il percorso della richiesta da abbinare all'endpoint di destinazione. Le chiamate del proxy API a questo percorso corrisponderanno 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 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 scegli quello che preferisci dall'elenco.
  5. Successivamente, aggiungi il prodotto API all'app:
    1. Nella sezione Credenziali, fai clic su + Aggiungi prodotto e seleziona il prodotto che hai 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 consumer. Questo valore è la chiave API che utilizzerai per effettuare chiamate API al servizio httpbin.

    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 una policy che verrà applicata 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 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 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 (/) 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 quote

    Le quote ti consentono di applicare il numero di richieste che un client può effettuare 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 senza costi, consentendo al contempo l'accesso completo per i clienti paganti.

    La quota è definita in un prodotto API

    I 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 ai fini della quota consentita.

    Dove vengono gestite le quote

    Le 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 confrontati con gli ambiti del prodotto API.

    Informazioni sulle app per sviluppatori

    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.

    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 la CLI:

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

    o 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"

    Utilizzare il token JWT

    Una volta ottenuto il token, è sufficiente 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 a questo:

    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

    $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

    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 stdout e 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:

    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 di Prometheus è disponibile all'indirizzo :5001/metrics. Puoi configurare questo numero di porta. Consulta la sezione File di configurazione.

    Analisi di Envoy

    I seguenti link forniscono informazioni sull'ottenimento dei dati di analisi del proxy Envoy:

    Analisi di 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 di Analytics. Apigee segnala queste richieste con il nome del prodotto API associato.

    Per informazioni su Apigee Analytics, consulta la panoramica dei servizi di analisi.

    Supporto dell'ambiente multi-tenant

    Ora puoi abilitare l'adattatore per gestire più ambienti in un'organizzazione Apigee. Questa funzionalità consente di utilizzare un adattatore Apigee per Envoy associato a un'organizzazione Apigee per gestire più ambienti. Prima di questa modifica, un adattatore era sempre collegato a un ambiente Apigee.

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

    1. Apri il file config.yaml in un editor.
    2. Modifica il valore di tenant.env_name impostandolo su *. 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 valore di ambiente appropriato all'adattatore aggiungendo i seguenti metadati nella sezione virtual_hosts:routes del file envoy-config.yaml. Ad esempio:

    1. Genera il file envoy-config.yaml utilizzando la CLI. 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 nella sezione virtual_host o 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 definiti, 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 necessità.
    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 del file config.yaml dell'adattatore per utilizzare mTLS tra l'adattatore e il runtime Apigee. Questa modifica si applica a tutte le piattaforme Apigee supportate. Consente inoltre mTLS per l'analisi per la piattaforma Apigee Edge for Private Cloud. Ad esempio:

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