Habilitar la seguridad y la aplicación de cuotas

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

En esta página se describe cómo habilitar las opciones predeterminadas de seguridad y de aplicación de cuotas disponibles en el operador de Apigee para Kubernetes.

Antes de empezar

Antes de empezar esta tarea, asegúrate de completar los siguientes pasos:

  • Instala el operador de Apigee para Kubernetes. Consulta las instrucciones de instalación en Instalar el operador de Apigee para Kubernetes.
  • Crea una extensión de servicio de tráfico. Para completar este paso, puedes usar ApigeeBackendService o APIMExtensionPolicy. Consulta Crear un APIMExtensionPolicy para obtener más información sobre cómo crear una extensión de tráfico con el APIMExtensionPolicy. Para obtener más información sobre cómo crear una extensión de tráfico con ApigeeBackendService, consulta Crear un ApigeeBackendService.

Tanto si has creado una extensión de servicio de tráfico para tu GKE Gateway mediante ApigeeBackendService como mediante APIMExtensionPolicy, debes completar los pasos de esta guía para habilitar la clave de API predeterminada y las políticas de cuota añadidas al APIMExtensionPolicy de respaldo.

Roles obligatorios

Si has asignado los roles necesarios a tu cuenta de servicio tal como se describe en Instalar el operador de Apigee para Kubernetes, no se necesitan roles ni permisos de gestión de identidades y accesos adicionales para completar estas tareas.

Puedes autorizar acciones en recursos de tu clúster de Google Kubernetes Engine mediante el mecanismo de control de acceso basado en roles (RBAC) integrado en Kubernetes. Para obtener más información, consulta Autorizar acciones en clústeres mediante el control de acceso basado en roles.

Información general

En las siguientes secciones se describe cómo habilitar las opciones predeterminadas de seguridad y de aplicación de cuotas disponibles con el operador de Apigee para Kubernetes. En este tutorial, harás lo siguiente:

  1. Define el producto de API.
  2. Define el conjunto de operaciones de la API.
  3. Prueba la extensión de servicio de Apigee.
  4. Consulte las analíticas de la API de Apigee en la consola Google Cloud .

Los pasos necesarios para definir el producto de API y el conjunto de operaciones de API varían ligeramente en función de si has creado una extensión de tráfico para tu GKE Gateway mediante ApigeeBackendService o APIMExtensionPolicy.

Definir el producto de API

En este paso, definirá el producto de API que se usará para gestionar las políticas de cuota y de aplicación de la clave de API.

Usar la APIMExtensionPolicy

Define el producto de API:

  1. Crea un archivo llamado api-product.yaml en el espacio de nombres apim.
  2. Copia el siguiente contenido en el archivo nuevo:
    # 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. Aplica el archivo a la pasarela con el siguiente comando:
    kubectl -n apim apply -f api-product.yaml

Usar la ApigeeBackendService

Define el producto de API:

  1. Crea un archivo llamado api-product.yaml en el espacio de nombres apim.
  2. Copia el siguiente contenido en el archivo nuevo:
    # 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. Aplica el archivo a la pasarela con el siguiente comando:
    kubectl -n default apply -f api-product.yaml

Definir el conjunto de operaciones de la API

En este paso, definirás el conjunto de operaciones de la API que se utilizará para gestionar la aplicación de las operaciones REST.

Usar la APIMExtensionPolicy

Define el conjunto de operaciones de la API del producto de API creado en el paso anterior:

  1. Crea un archivo llamado apim-policies.yaml en el espacio de nombres apim.
  2. Copia el siguiente contenido en el nuevo archivo. Este archivo define una política de cuotas y las operaciones REST disponibles para el producto de API definido en el paso anterior:
    # 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. Aplica el archivo a la pasarela:
    kubectl -n apim apply -f apim-policies.yaml

Usar la ApigeeBackendService

Define el conjunto de operaciones de la API del producto de API creado en el paso anterior:

  1. Crea un archivo llamado apim-policies.yaml en el espacio de nombres default.
  2. Copia el siguiente contenido en el nuevo archivo. Este archivo define una política de cuotas y las operaciones REST disponibles para el producto de API definido en el paso anterior:
    # 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. Aplica el archivo a la pasarela:
    kubectl -n default apply -f apim-policies.yaml

Probar la extensión de servicio de Apigee

En este paso, usarás la interfaz de usuario de Apigee en la consola Google Cloud para probar la extensión de servicio de Apigee y la política de extensión de Apigee aplicada a tu pasarela.

Configuración de pruebas

Configura los recursos de la API que necesites para las pruebas:

  1. Ve a la página Gestión de APIs de Apigee de la consola de Google Cloud :

    Gestión de APIs con Apigee

  2. Selecciona la organización de Apigee en la que has instalado el operador de Apigee para Kubernetes.
  3. Crear un desarrollador:
    1. Selecciona Distribución > Desarrolladores.
    2. En la página Desarrolladores, haz clic en + Crear.
    3. En la página Añadir desarrollador, rellene los campos obligatorios con los valores que quiera.
    4. Haz clic en Añadir.
  4. Crear una aplicación:
    1. Selecciona Distribución> Aplicaciones.
    2. En la página Aplicaciones, haz clic en + Crear.
    3. En la página Create App (Crear aplicación), rellena los campos obligatorios de la sección App Details (Detalles de la aplicación) con los siguientes valores:
      • Nombre de la aplicación: demo-app
      • Desarrollador: selecciona el desarrollador que has creado en el paso anterior u otro de la lista.
    4. En la sección Credenciales de la aplicación, haz clic en + Añadir credencial.
    5. En la sección Credenciales, rellena los campos obligatorios de la sección Detalles de las credenciales con los siguientes valores:
      • Nombre de la credencial: demo-credential
      • Tipo de credencial: selecciona Clave de API.
    6. Haz clic en Crear.
    7. En la sección Productos, haga clic en + Añadir productos.
    8. Selecciona el api-product-1 que has creado en el paso anterior.
    9. Haz clic en Añadir.
    10. Haz clic en Crear.
  5. En la página Detalles de la aplicación, en la sección Credencial, haz clic en para ver el valor de Clave.

    Copia el valor de Key. Usarás esta clave para hacer llamadas a la API de tu servicio en un paso posterior.

  6. En la página Detalles de la aplicación, en la sección Credencial, haz clic en para ver el valor de Secreto de aplicación.

    Copia el valor de Secreto de la aplicación. Usarás este valor para generar un token de acceso en un paso posterior.

Probar la aplicación de la clave de API

Usa el siguiente comando para enviar una solicitud a tu pasarela con la clave de API que has obtenido en un paso anterior:

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

Donde:

  • GATEWAY_IP_ADDRESS es la dirección IP de la pasarela. Puedes obtener la dirección IP de la pasarela con el siguiente comando, donde GATEWAY_NAME es el nombre de la pasarela:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME es el nombre de host definido en HTTPRoute de la pasarela.
  • API_KEY es el valor de la clave de API que se ha obtenido en Configuración de pruebas.

La solicitud debería realizarse correctamente y devolver una respuesta similar a la siguiente:

{
  "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"
}

Probar la aplicación de las cuotas

Para probar la aplicación de la cuota definida en tu APIMExtensionPolicy, envía la solicitud del paso anterior a la pasarela diez veces en el plazo de un minuto.

Puedes ejecutar la siguiente secuencia de comandos para generar las solicitudes:

#!/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

Donde:

  • GATEWAY_IP_ADDRESS es la dirección IP de la pasarela. Puedes obtener la dirección IP de la pasarela con el siguiente comando, donde GATEWAY_NAME es el nombre de la pasarela:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME es el nombre de host definido en HTTPRoute de la pasarela.
  • API_KEY es el valor de la clave de API que se ha obtenido en Configuración de pruebas.

Esta acción debería activar una infracción de cuota y generar un error similar al siguiente:

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

Probar la aplicación de operaciones REST

Para probar la aplicación de las operaciones REST, usa el siguiente comando para enviar una solicitud a la pasarela con una URL que no esté en el conjunto de operaciones de la API:

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

Donde:

  • GATEWAY_IP_ADDRESS es la dirección IP de la pasarela. Puedes obtener la dirección IP de la pasarela con el siguiente comando, donde GATEWAY_NAME es el nombre de la pasarela:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME es el nombre de host definido en HTTPRoute de la pasarela.
  • API_KEY es el valor de la clave de API que se ha obtenido en Configuración de pruebas.

La solicitud debería fallar y devolver una respuesta similar a la siguiente:

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

Ver las analíticas de la API de Apigee en la consola Google Cloud

Puedes ver el tráfico de la API gestionado por la pasarela de GKE y el APIMExtensionPolicy con las analíticas de la API de Apigee en la Google Cloud consola:

  1. Ve a la página Gestión de APIs de Apigee de la consola: Google Cloud

    Gestión de APIs con Apigee

  2. Selecciona la organización de Apigee en la que has instalado el operador de Apigee para Kubernetes.
  3. En el menú de navegación lateral, selecciona Analytics > Métricas de la API.
  4. En la pestaña Rendimiento del proxy de API, elige el entorno que has creado en el paso de instalación opcional Crear un entorno de Apigee o el entorno que ha creado el operador de Apigee para Kubernetes durante la instalación. El nombre del entorno empezará por el prefijo apigee-ext-proc-enabled-env.
  5. Observa el tráfico de la API registrado.

Solucionar problemas

Si tienes problemas al usar políticas de gestión de APIs con Apigee Operator para Kubernetes, consulta el artículo Solucionar problemas de Apigee Operator para Kubernetes para encontrar soluciones a errores habituales.

Pasos siguientes

Para añadir más políticas, consulta Añadir políticas a la puerta de enlace de GKE.