Attivare l'applicazione di sicurezza e quote

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Questa pagina descrive come attivare le opzioni predefinite di applicazione della sicurezza e delle quote disponibili con Apigee Operator per Kubernetes.

Prima di iniziare

Prima di iniziare questa attività, assicurati di completare i seguenti passaggi:

  • Installa l'operatore Apigee per Kubernetes. Per istruzioni sull'installazione, consulta Installare l'operatore Apigee per Kubernetes.
  • Crea un'estensione di servizio del traffico. Per completare questo passaggio, puoi utilizzare ApigeeBackendService o APIMExtensionPolicy. Per saperne di più sulla creazione di un'estensione del traffico utilizzando APIMExtensionPolicy, consulta Creare un APIMExtensionPolicy. Per ulteriori informazioni sulla creazione di un'estensione del traffico utilizzando ApigeeBackendService, consulta Crea un ApigeeBackendService.

Indipendentemente dal fatto che tu abbia creato un'estensione del servizio di gestione del traffico per il tuo gateway GKE utilizzando ApigeeBackendService o APIMExtensionPolicy, devi completare i passaggi descritti in questa procedura dettagliata per attivare la chiave API e le norme relative alle quote predefinite aggiunte al APIMExtensionPolicy di backend.

Ruoli obbligatori

Se hai assegnato i ruoli richiesti al account di servizio come descritto in Installare l'operatore Apigee per Kubernetes, non sono necessari ulteriori ruoli o autorizzazioni IAM per completare queste attività.

Puoi scegliere di autorizzare le azioni sulle risorse nel cluster Google Kubernetes Engine utilizzando il meccanismo di controllo dell'accesso basato sui ruoli (RBAC) integrato in Kubernetes. Per maggiori informazioni, vedi Autorizzare le azioni nei cluster utilizzando il controllo degli accessi basato sui ruoli.

Panoramica

Le sezioni seguenti descrivono come attivare le opzioni predefinite di applicazione di sicurezza e quote disponibili con Apigee Operator per Kubernetes. In questa procedura dettagliata:

  1. Definisci il prodotto API.
  2. Definisci il set di operazioni API.
  3. Testa l'estensione di servizio Apigee.
  4. Visualizza l'analisi dell'API Apigee nella console Google Cloud .

I passaggi necessari per definire il prodotto API e il set di operazioni API variano leggermente a seconda che tu abbia creato un'estensione del traffico per il gateway GKE utilizzando ApigeeBackendService o APIMExtensionPolicy.

Definisci il prodotto API

In questo passaggio, definirai il prodotto API che verrà utilizzato per gestire l'applicazione della chiave API e le norme relative alle quote.

Utilizzo di APIMExtensionPolicy

Definisci il prodotto API:

  1. Crea un nuovo file denominato api-product.yaml nello spazio dei nomi apim.
  2. Copia i seguenti contenuti nel nuovo file:
    # api-product.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIProduct
      metadata:
        name: api-product
        namespace: apim
      spec:
        approvalType: auto
        description: Http bin GET calls
        displayName: api-product
        enforcementRefs:
          - name: global-ext-lb1-apim-policy
            kind: APIMExtensionPolicy
            group: apim.googleapis.com
            namespace: apim
        attributes:
          - name: access
            value: private
  3. Applica il file al gateway utilizzando il seguente comando:
    kubectl -n apim apply -f api-product.yaml

Utilizzo di ApigeeBackendService

Definisci il prodotto API:

  1. Crea un nuovo file denominato api-product.yaml nello spazio dei nomi apim.
  2. Copia i seguenti contenuti nel nuovo file:
    # api-product.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIProduct
      metadata:
        name: api-product
        namespace: apim
      spec:
        approvalType: auto
        description: Http bin GET calls
        displayName: api-product
        enforcementRefs:
          - name: global-ext-lb1-apim-policy
            kind: ApigeeBackendService
            group: apim.googleapis.com
            namespace: default
        attributes:
          - name: access
            value: private
  3. Applica il file al gateway utilizzando il seguente comando:
    kubectl -n default apply -f api-product.yaml

Definisci il set di operazioni API

In questo passaggio definirai il set di operazioni API che verrà utilizzato per gestire l'applicazione delle operazioni REST.

Utilizzo di APIMExtensionPolicy

Definisci il set di operazioni API per il prodotto API creato nel passaggio precedente:

  1. Crea un nuovo file denominato apim-policies.yaml nello spazio dei nomi apim.
  2. Copia i seguenti contenuti nel nuovo file. Questo file definisce un criterio di quota e le operazioni REST disponibili per il prodotto API definito nel passaggio precedente:
    # apim-policies.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIOperationSet
      metadata:
        name: item-set
        namespace: apim
      spec:
        apiProductRefs:
          - name: api-product
            kind: APIProduct
            group: apim.googleapis.com
            namespace: apim
        quota:
          limit: 10
          interval: 1
          timeUnit: minute
        restOperations:
          - name: GetItems
            path: /get
            methods:
              - GET
  3. Applica il file al gateway:
    kubectl -n apim apply -f apim-policies.yaml

Utilizzo di ApigeeBackendService

Definisci il set di operazioni API per il prodotto API creato nel passaggio precedente:

  1. Crea un nuovo file denominato apim-policies.yaml nello spazio dei nomi default.
  2. Copia i seguenti contenuti nel nuovo file. Questo file definisce un criterio di quota e le operazioni REST disponibili per il prodotto API definito nel passaggio precedente:
    # apim-policies.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIOperationSet
      metadata:
        name: item-set
        namespace: default
      spec:
        apiProductRefs:
          - name: api-product
            kind: APIProduct
            group: apim.googleapis.com
            namespace: default
        quota:
          limit: 10
          interval: 1
          timeUnit: minute
        restOperations:
          - name: GetItems
            path: /get
            methods:
              - GET
  3. Applica il file al gateway:
    kubectl -n default apply -f apim-policies.yaml

Testa l'estensione di servizio Apigee

In questo passaggio, utilizzerai l'interfaccia utente Apigee nella console Google Cloud per testare l'estensione del servizio Apigee e il criterio di estensione Apigee applicato al gateway.

Configurazione dei test

Configura le risorse API necessarie per il test:

  1. Vai alla pagina Gestione API Apigee nella console Google Cloud :

    Gestione delle API Apigee

  2. Seleziona l'organizzazione Apigee in cui hai installato l'operatore Apigee per Kubernetes.
  3. Crea uno sviluppatore:
    1. Seleziona Distribuzione > Sviluppatori.
    2. Nella pagina Sviluppatori, fai clic su + Crea.
    3. Nella pagina Aggiungi sviluppatore, compila i campi obbligatori utilizzando i valori che preferisci.
    4. Fai clic su Aggiungi.
  4. Crea un'app:
    1. Seleziona Distribuzione> App.
    2. Nella pagina App, fai clic su + Crea.
    3. Nella pagina Crea app, compila i campi obbligatori nella sezione Dettagli app utilizzando i seguenti valori:
      • Nome app: demo-app
      • Sviluppatore: seleziona lo sviluppatore che hai creato nel passaggio precedente o un altro sviluppatore dall'elenco.
    4. Nella sezione Credenziali app, fai clic su + Aggiungi credenziale.
    5. Nella sezione Credenziali, completa i campi obbligatori nella sezione Dettagli credenziali con i seguenti valori:
      • Credential name (Nome credenziale): demo-credential
      • Tipo di credenziale: seleziona Chiave API.
    6. Fai clic su Crea.
    7. Nella sezione Prodotti, fai clic su + Aggiungi prodotti.
    8. Seleziona api-product-1 creato nel passaggio precedente.
    9. Fai clic su Aggiungi.
    10. Fai clic su Crea.
  5. Nella pagina Dettagli app, nella sezione Credenziali, fai clic su per visualizzare il valore della chiave.

    Copia il valore di Key. Utilizzerai questa chiave per effettuare chiamate API al tuo servizio in un passaggio successivo.

  6. Nella pagina Dettagli app, nella sezione Credenziali, fai clic su per visualizzare il valore del secret dell'app.

    Copia il valore di App secret. Utilizzerai questo valore per generare un token di accesso in un passaggio successivo.

Testare l'applicazione della chiave API

Utilizza il seguente comando per inviare una richiesta al gateway utilizzando la chiave API ottenuta in un passaggio precedente:

curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"

Dove:

  • GATEWAY_IP_ADDRESS è l'indirizzo IP del gateway. Puoi recuperare l'indirizzo IP del gateway utilizzando il seguente comando, dove GATEWAY_NAME è il nome del gateway:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME è il nome host definito in HTTPRoute del gateway.
  • API_KEY è il valore della chiave API ottenuto in Configurazione dei test.

La richiesta dovrebbe riuscire e restituire una risposta simile alla seguente:

{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Host": "apigee-apim-operator-test.apigee.net",
    "User-Agent": "curl/8.7.1",
    "X-Api-Key": "f0N6sYYYclGYYYe0oP5YYYdA20PjgrP2x8YYYh7z4YYYKiYt",
    "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739"
  },
  "origin": "34.54.193.72",
  "url": "https://34.54.193.72/get"
}

Test dell'applicazione delle quote

Per testare l'applicazione della quota definita in APIMExtensionPolicy, invia la richiesta del passaggio precedente al gateway dieci volte nell'arco di un minuto.

Puoi eseguire lo script seguente per generare le richieste:

#!/bin/sh
for i in $(seq 1 11); do
    curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
    sleep 1
done

Dove:

  • GATEWAY_IP_ADDRESS è l'indirizzo IP del gateway. Puoi recuperare l'indirizzo IP del gateway utilizzando il seguente comando, dove GATEWAY_NAME è il nome del gateway:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME è il nome host definito in HTTPRoute del gateway.
  • API_KEY è il valore della chiave API ottenuto in Configurazione dei test.

Questa azione dovrebbe attivare una violazione della quota e generare un errore simile al seguente:

{"fault":{"faultstring":"Rate limit quota violation. Quota limit  exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}

Testa l'applicazione delle operazioni REST

Per testare l'applicazione delle operazioni REST, utilizza il seguente comando per inviare una richiesta al gateway utilizzando un URL non presente nel set di operazioni API:

curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"

Dove:

  • GATEWAY_IP_ADDRESS è l'indirizzo IP del gateway. Puoi recuperare l'indirizzo IP del gateway utilizzando il seguente comando, dove GATEWAY_NAME è il nome del gateway:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME è il nome host definito in HTTPRoute del gateway.
  • API_KEY è il valore della chiave API ottenuto in Configurazione dei test.

La richiesta dovrebbe non andare a buon fine con una risposta simile alla seguente:

{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}

Visualizzare l'analisi dell'API Apigee nella console Google Cloud

Puoi visualizzare il traffico API gestito da GKE Gateway e APIMExtensionPolicy utilizzando Apigee API Analytics nella console Google Cloud :

  1. Vai alla pagina Gestione API Apigee nella console Google Cloud :

    Gestione delle API Apigee

  2. Seleziona l'organizzazione Apigee in cui hai installato l'operatore Apigee per Kubernetes.
  3. Seleziona Analytics > Metriche API nel menu di navigazione laterale.
  4. Nella scheda Rendimento del proxy API, scegli l'ambiente che hai creato nel passaggio di installazione facoltativo Crea un ambiente Apigee o l'ambiente creato dall'operatore Apigee per Kubernetes durante l'installazione. Il nome dell'ambiente inizierà con il prefisso apigee-ext-proc-enabled-env.
  5. Osserva il traffico API registrato.

Risoluzione dei problemi

Se riscontri problemi durante l'utilizzo dei criteri di gestione delle API con Apigee Operator per Kubernetes, consulta la sezione Risoluzione dei problemi di Apigee Operator per Kubernetes per soluzioni a errori comuni.

Passaggi successivi

Per aggiungere altre policy, consulta Aggiungere policy al gateway GKE.