Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Cómo obtener una clave de API
En el siguiente ejemplo se explica cómo obtener una clave de API que puedes usar para validar las llamadas a la API de un servicio de destino proxy a través de Apigee Adapter for Envoy.
1. Iniciar sesión en Apigee
- Abre la interfaz de usuario de Apigee en un navegador.
- Una vez que estés en la interfaz de usuario, selecciona la misma organización que usaste para configurar Apigee Adapter for Envoy.
2. Crear un desarrollador
Puedes usar un desarrollador que ya tengas para hacer pruebas o crear uno nuevo siguiendo estos pasos:
- En el menú de navegación lateral, selecciona Publicar > Desarrolladores.
- Haz clic en + Desarrollador.
- Rellena el cuadro de diálogo para crear un desarrollador. Puedes usar el nombre o el correo del desarrollador que quieras.
3. Crear un producto de API
Sigue el ejemplo de creación de productos que se indica a continuación. Consulta también Información sobre la configuración de productos de API.
- En el menú de navegación lateral, seleccione Publicar > Productos de API.
- Haz clic en Crear.
- Rellene la página Detalles del producto de la siguiente manera. No haga clic en Guardar hasta que se lo indiquemos.
Campo Valor Nombre httpbin-product
Nombre visible httpbin product
Entorno your_environment Define este valor en el entorno que usaste al aprovisionar Apigee Adapter for Envoy con
apigee-remote-service-cli
.Acceso Private
Cuota 5 solicitudes cada 1 minuto Consulta también Acerca de los productos de API.
- En la sección Atributos personalizados, haga clic en + AÑADIR ATRIBUTO PERSONALIZADO.
- Introduce este par nombre/valor:
- Nombre: introduce este nombre de atributo:
apigee-remote-service-targets
- Valor: introduce el nombre del servicio de destino. Por ejemplo:
httpbin.org
- Nombre: introduce este nombre de atributo:
- Haz clic en Aceptar.
- Haz clic en Guardar.
4. Crear una aplicación de desarrollador
- En el menú de navegación lateral, selecciona Publicar > Aplicaciones.
- Haz clic en + Aplicación.
- Rellena la página Aplicación del desarrollador de la siguiente manera. No guardes los cambios hasta que se te indique.
- En la sección Credenciales, haga clic en + Añadir producto y seleccione el producto que acaba de configurar: httpbin-product.
- Haz clic en Crear.
- En Credenciales, haz clic en Mostrar junto a Clave.
- Copia el valor de la clave de consumidor. Este valor es la clave de API que usarás para hacer llamadas a la API del servicio
httpbin
.
Nombre | httpbin-app
|
Nombre visible | httpbin app
|
Desarrolladores | Seleccione el desarrollador que haya creado anteriormente o elija el que quiera de la lista. |
Acerca de los productos de API
Los productos de API son el punto de control principal del servicio remoto de Apigee. Cuando creas un producto de API y lo vinculas a un servicio de destino, estás creando una política que se aplicará a cualquier solicitud que configures para que la gestione tu adaptador de Apigee para Envoy.
Definición de producto de API
Cuando defines un producto de API en Apigee, puedes definir una serie de parámetros que se usarán para evaluar las solicitudes:
- Objetivo
- Ruta de la solicitud
- Cuota
- permisos de OAuth
Destinos de servicios remotos
La definición de API Product se aplicará a una solicitud si esta coincide tanto con el enlace de destino (por ejemplo, httpbin.org
) como con la ruta de la solicitud (por ejemplo, /httpbin
).
Se almacena una lista de posibles destinos como atributo en API Product.
De forma predeterminada, el servicio remoto de Apigee comprueba el encabezado especial :authority (host)
de Envoy con su lista de destinos. Sin embargo, se puede configurar para que use otros encabezados.
Ruta de recurso de API
La ruta introducida coincide según las siguientes reglas:
- Una sola barra (
/
) por sí sola coincide con cualquier ruta. *
es válido en cualquier lugar y coincide dentro de un segmento (entre barras).**
es válido al final y coincide con cualquier elemento hasta el final de la línea.
Cuota
Una cuota especifica el número de mensajes de solicitud que una aplicación puede enviar a una API en el transcurso de una hora, un día, una semana o un mes. Cuando una aplicación alcanza su límite de cuota, se rechazan las llamadas a la API posteriores.
Casos prácticos de cuotasLas cuotas te permiten aplicar el número de solicitudes que un cliente puede enviar a un servicio en un periodo determinado. Las cuotas se suelen usar para aplicar contratos comerciales o acuerdos de nivel de servicio con desarrolladores y partners, en lugar de para gestionar el tráfico operativo. Por ejemplo, se puede usar una cuota para limitar el tráfico de un servicio gratuito, al tiempo que se permite el acceso completo a los clientes de pago.
La cuota se define en un producto de APILos parámetros de cuota se configuran en Productos de API. Por ejemplo, cuando creas un producto de API, puedes definir de forma opcional el límite de cuota permitido, la unidad de tiempo y el intervalo.
>
Como las claves de API se asignan a productos de API, cada vez que se verifica una clave de API, se puede reducir el contador de cuota correspondiente (si se ha definido una cuota en el producto asociado).
A diferencia del tiempo de ejecución de Apigee, el servicio remoto de Apigee aplica automáticamente las cuotas introducidas en la definición del producto. Si se autoriza la solicitud, se contabilizará en la cuota permitida.
Dónde se mantienen las cuotasEl proceso de servicio remoto mantiene y comprueba las cuotas de forma local, y las mantiene de forma asíncrona con el tiempo de ejecución de Apigee. Esto significa que las cuotas no son precisas y es probable que se superen si tienes más de un servicio remoto que mantiene la cuota. Si se interrumpe la conexión con el tiempo de ejecución de Apigee, la cuota local seguirá funcionando como una cuota independiente hasta que se pueda volver a conectar con el tiempo de ejecución de Apigee.
Permisos de OAuth
Si usas tokens JWT, puedes restringirlos a subconjuntos de los permisos de OAuth permitidos. Los ámbitos asignados al token JWT emitido se compararán con los ámbitos del producto de la API.
Acerca de las aplicaciones de desarrollador
Una vez que hayas configurado tus productos de API, crearás una aplicación asociada a un desarrollador. La aplicación permite que un cliente acceda a los productos de API asociados con una clave de API o un token JWT.
Usar la autenticación basada en JWT
Puedes usar un token JWT para hacer llamadas autenticadas a proxies de API en lugar de usar una clave de API. En esta sección se explica cómo usar el comando apigee-remote-service-cli token
para crear, inspeccionar y rotar tokens JWT. En el entorno híbrido de Apigee, puedes usar este comando para crear un secreto de Kubernetes que contenga los JWTs.
Información general
Envoy se encarga de la verificación y la autenticación de JWT mediante su filtro de autenticación JWT.
Una vez autenticado, el filtro ext-authz
de Envoy envía los encabezados de solicitud y el JWT a apigee-remote-service-envoy
. Compara las reclamaciones api_product_list
y scope
del JWT con los productos de API de Apigee para autorizarlo en el destino de la solicitud.
Crear tokens JWT de Apigee
Los tokens JWT de Apigee se pueden crear con la CLI:
apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET
O bien, mediante el endpoint de token de OAuth estándar. Ejemplo de curl:
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"
Usar el token JWT
Una vez que tengas el token, solo tienes que enviarlo a Envoy en el encabezado Authorization. Ejemplo:
curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"
Error de token JWT
Rechazo de Envoy
Si Envoy rechaza el token, puede que veas un mensaje como este:
Jwks remote fetch is failed
Si es así, asegúrate de que tu configuración de Envoy contenga un URI válido en la sección remote_jwks
, de que Envoy pueda acceder a él y de que hayas configurado correctamente los certificados al instalar el proxy de Apigee. Deberías poder llamar al URI directamente con una llamada GET y recibir una respuesta JSON válida.
Ejemplo:
curl https://myorg-eval-test.apigee.net/remote-service/certs
Otros mensajes de Envoy pueden ser los siguientes:
- "No se permiten audiencias en Jwt"
- "Jwt issuer is not configured" ("No se ha configurado el emisor de JWT")
Se trata de requisitos de la configuración de Envoy que puede que tengas que modificar.
Inspeccionar un token
Puedes usar la CLI para inspeccionar tu token. Ejemplo
apigee-remote-service-cli -c config.yaml token inspect -f path/to/file
o
apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN
Depuración
Consulta La clave de API válida falla.Almacenamiento de registros
Puedes ajustar el nivel de registro en el servicio $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Todos los registros se envían a stderr.
Elemento | Obligatorio | Descripción |
---|---|---|
-l, --log-level | Niveles válidos: debug, info, warn y error. | Ajusta el nivel de registro. Valor predeterminado: info |
-j, --json-log | Emite la salida del registro como registros JSON. |
Envoy proporciona registros. Para obtener más información, consulta los siguientes enlaces de la documentación de Envoy:
Cambiar el nombre del secreto de la política
Un secreto de Kubernetes desplegado en el clúster contiene las credenciales que necesita el adaptador para autenticar la comunicación con el proxy del servicio remoto. Este secreto requiere un punto de montaje de volumen, que se puede configurar. De forma predeterminada, el punto de montaje es /policy-secret
.
Para cambiar el punto de montaje, sigue estos pasos:
- Ejecuta este comando:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/new-mount_point_name
Por ejemplo:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/my-mount-point
- Abre
$CLI_HOME/samples/apigee-envoy-adapter.yaml
en un editor. - Cambia el nombre del punto de montaje por el nuevo:
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
- Guarda el archivo y aplícalo a la malla de servicios:
kubectl apply -f $REMOTE_SERVICE_HOME/samples/apigee-envoy-adapter.yaml
Usar un proxy de red
Se puede insertar un proxy HTTP mediante las variables de entorno HTTP_PROXY y HTTPS_PROXY en el entorno del archivo binario apigee-remote-service-envoy. Cuando se usan estas variables, también se puede usar la variable de entorno NO_PROXY para excluir hosts específicos de que se envíen a través del 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
Recuerda que se debe poder acceder al proxy desde apigee-remote-service-envoy.
Acerca de las métricas y las analíticas
Hay un endpoint de métricas de Prometheus disponible en :5001/metrics
. Puedes configurar este número de puerto. Consulta el artículo Archivo de configuración.
Analíticas de Envoy
En los siguientes enlaces se proporciona información sobre cómo obtener datos analíticos del proxy Envoy:
Analíticas de Istio
En los siguientes enlaces se proporciona información sobre cómo obtener datos analíticos del proxy Envoy:
Analíticas de Apigee
Apigee Remote Service for Envoy envía estadísticas de solicitudes a Apigee para que se procesen las analíticas. Apigee informa de estas solicitudes con el nombre del producto de API asociado.
Para obtener información sobre las analíticas de Apigee, consulta el resumen de los servicios de analíticas.