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 ejemplo siguiente, se explica cómo obtener una clave de API que puedes usar a fin de validar las llamadas a la API a un servicio de destino que se envían mediante Apigee Adapter for Envoy.
1. Accede a Apigee
- Abre la IU de Apigee en un navegador.
- Una vez que estés en la IU, selecciona la misma organización que usaste para configurar Apigee Adapter for Envoy.
2. Crear un desarrollador
Puedes usar un desarrollador existente para realizar pruebas o crear uno nuevo de la siguiente manera:
- Selecciona Publicar > Desarrolladores en el menú de navegación lateral.
- Haz clic en + Desarrollador.
- Completa el diálogo para crear un nuevo desarrollador. Puedes usar cualquier nombre de desarrollador o correo electrónico que desees.
3. Crear un producto de API
Sigue el ejemplo de creación de productos que se muestra a continuación. Consulta también Información acerca de la configuración de los productos de la API.
- Selecciona Publicar > Productos de API en el menú de navegación lateral.
- Haz clic en +API Product.
- Completa la página Detalles del producto como se indica a continuación. No hagas clic en Guardar hasta que se te indique que lo hagas.
- En la sección Destinos del servicio remoto de Apigee, haz clic en Agregar un destino de servicio remoto de Apigee.
- En el diálogo del destino del servicio remoto de Apigee, agrega los siguientes valores:
Atributo Valor Descripción Nombre del destino Ingresa el nombre del servicio de destino. Por ejemplo: httpbin.org
El extremo de destino basado en el proxy de Envoy proxy de API remote-service
El proxy remote-service
que se aprovisionó en Apigee durante la instalación del adaptador de Envoy.Ruta Ingresa una /resource_path
para que coincida con una ruta de acceso específica. Por ejemplo:/httpbin
La ruta de la solicitud que debe coincidir en el extremo de destino. Las llamadas del proxy de API a esta ruta coincidirán con este producto de API. - Haz clic en Guardar.
Campo | Valor |
---|---|
Nombre | httpbin-product
|
Nombre visible | httpbin product
|
Entorno | your_environment
Config��ralo en el entorno que usaste cuando aprovisionaste el adaptador de Apigee para Envoy con la |
Acceder | Private
|
Cuota | 5 solicitudes cada 1 minuto
Consulta también Información acerca de la configuración de los productos de la API. |
4. Crear una app de desarrollador
- Selecciona Publicar > Apps en el menú de navegación lateral.
- Haga clic en + Aplicación.
- Completa la página de Aplicación para desarrolladores de la siguiente manera. No guardes hasta que se te indique.
- Luego, agrega dos productos a la app:
- En la sección Credenciales, haz clic en + Agregar producto y selecciona el producto que acabas de configurar: httpbin-product.
- Luego, agrega el producto remote-service Este producto se creó automáticamente cuando aprovisionaste Apigee.
- Haga clic en Crear.
- En Credenciales, haz clic en Mostrar junto a Clave.
- Copia el valor de la clave generada. Este valor es la clave de API que usarás para realizar llamadas a la API en el servicio
httpbin
.
Nombre | httpbin-app
|
Nombre visible | httpbin app
|
Programador | Selecciona el desarrollador que creaste anteriormente o elige cualquier desarrollador que desees de la lista. |
Productos de la 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, creas una política que se aplicará a cualquier solicitud que configures para que el adaptador de Apigee para Envoy controle.
Definición del producto de API
Cuando defines un producto de API en Apigee, puedes configurar una cantidad de parámetros que se usarán para evaluar las solicitudes:
- Target
- Ruta de la solicitud
- Cuota
- Permisos de OAuth
Objetivos de Service remotos
La definición del producto de API se aplicará a una solicitud si la solicitud coincide con la vinculación objetivo (por ejemplo, httpbin.org
) y la ruta de la solicitud (por ejemplo, /httpbin
). Una lista de objetivos posibles se almacena como un atributo en el Producto de API.
De forma predeterminada, el servicio remoto de Apigee comprueba el encabezado especial :authority (host)
de Envoy en su lista de objetivos, pero se puede configurar para que use otros encabezados.
Ruta de acceso de los recursos de API
La ruta de acceso ingresada coincide según las siguientes reglas:
- Una sola barra (
/
) por sí sola coincide con cualquier ruta. *
es válido en cualquier lugar y coincide con un segmento (entre barras).**
es válido al final y coincide con cualquier elemento al final de la línea.
Cuota
Una cuota especifica la cantidad de mensajes de solicitud que una aplicación puede enviar a una API durante una hora, un día, una semana o un mes. Cuando una app alcanza su límite de cuota, se rechazan las llamadas a la API posteriores.
Casos de uso de cuotasLas cuotas te permiten aplicar la cantidad de solicitudes que un cliente puede realizar a un servicio en un período determinado. Las cuotas suelen usarse para aplicar contratos comerciales o ANS con desarrolladores y socios, en lugar de la administración de tráfico operativo. Por ejemplo, una cuota podría usarse para limitar el tráfico de un servicio gratuito, a la vez que permite el acceso completo a los clientes que pagan.
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, tienes la opción de configurar el límite de cuota, la unidad de tiempo y el intervalo permitidos.
Debido a que las claves de API se asignan a los productos de API, cada vez que se verifica una clave de API, se puede reducir el contador de cuotas adecuado (si se define una cuota en el producto asociado).
A diferencia de lo que sucede en el interior del entorno de ejecución de Apigee, el servicio remoto de Apigee aplica las cuotas ingresadas en la definición del producto de manera automática. Si se autoriza la solicitud, esta se contará en la cuota permitida.
Dónde se mantienen las cuotasEl proceso de servicio remoto mantiene y verifica las cuotas de forma local, y el entorno de ejecución de Apigee las mantiene de forma asíncrona. Esto significa que las cuotas no son precisas y es probable que se ejecuten de forma excesiva si tienes más de un servicio remoto que mantiene la cuota. Si se interrumpe la conexión con el entorno de ejecución de Apigee, la cuota local continuará como una cuota independiente hasta que pueda volver a conectarse al entorno de ejecución de Apigee.
Permisos de OAuth
Si usa tokens JWT, puede restringir los tokens a subconjuntos de los permisos de OAuth permitidos. Los permisos asignados al token JWT emitido se comprobarán en los alcances del producto de API.
Información sobre las apps de desarrolladores
Una vez que hayas configurado tus productos de API, crearás una app asociada con un desarrollador. La app permite que un cliente acceda a los productos de API asociados con una clave de API o un token JWT.
Usa la autenticación basada en JWT
Puedes usar un token JWT para realizar llamadas autenticadas al proxy 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 a fin de crear el secreto de Kubernetes para contener los JWT.
Descripción general
Envoy administra la verificación y autenticación de JWT con su Filtro de autenticación de JWT.
Una vez autenticado, el filtro ext-authz
de Envoy envía los encabezados de la solicitud y JWT a apigee-remote-service-envoy
. Coincide con las reclamaciones api_product_list
y scope
del JWT en los productos de API de Apigee para autorizarlo en el destino de la solicitud.
Crea 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
También puedes usar el extremo del 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"
Usa el token JWT
Una vez que tengas el token, solo debes pasarlo a Envoy en el encabezado de Autorización. Ejemplo:
curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"
Falla del token JWT
Rechazo de Envoy
Si Envoy rechaza el token, es posible que veas un mensaje como el siguiente:
Jwks remote fetch is failed
Si es así, asegúrate de que la configuración de Envoy contenga un URI válido en la sección remote_jwks
, que pueda acceder a Envoy y que hayas configurado los certificados de forma correcta cuando instalaste el proxy de Apigee. Deberías poder llamar a la 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 verse así:
- "No se permite público en Jwt"
- "La entidad emisora de Jwt no está configurada"
Son requisitos de tu configuración de Envoy que posiblemente debas modificar.
Inspecciona 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 Falla la clave de API válida.Logging
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: depuración, información, advertencia, error. | Ajusta el nivel de registro. Predeterminado: información |
-j, --json-log | Emite el resultado del registro como registros JSON. |
Envoy proporciona registros. Para obtener más información, consulta los siguientes vínculos de documentación de Envoy:
Cambia el nombre del secreto de la política
Un secreto de Kubernetes implementado en el clúster contiene credenciales que el adaptador necesita para autenticar la comunicación con el proxy de servicio remoto. Este secreto requiere un punto de activación de volumen, que se puede configurar. De forma predeterminada, el punto de activación es /policy-secret
.
Para cambiar el punto de activación, 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 activación por el nombre 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
Usa un proxy de red
Se puede insertar un proxy HTTP con las variables de entorno HTTP_PROXY y HTTPS_PROXY en el entorno del objeto binario apigee-remote-service-envoy. Cuando se usan, la variable de entorno NO_PROXY también se puede usar para evitar que se envíen hosts específicos 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.
Información acerca de las métricas y las estadísticas
Un extremo de las métricas de Prometheus está disponible en :5001/metrics
. Puedes configurar este número de puerto. Consulta Archivo de configuración.
Estadísticas de Envoy
En los vínculos siguientes, se proporciona información sobre cómo obtener datos de estadísticas del proxy de Envoy:
Estadísticas de Istio
En los vínculos siguientes, se proporciona información sobre cómo obtener datos de estadísticas del proxy de Envoy:
Estadísticas de Apigee
El servicio remoto de Apigee para Envoy envía estadísticas de solicitudes a Apigee para el procesamiento de estadísticas. Apigee informa estas solicitudes en el nombre del producto de API asociado.
Para obtener más información sobre las estadísticas de Apigee, consulta la descripción general de los servicios de estadísticas.