Mes: marzo 2023

Escalabilidad horizontal en Kong mediante Clustering

Kong Gateway en su versión Community nos permite proporcionar Alta Disponibilidad mediante la creación de un Cluster de Kong, que básicamente consiste en tener múltiples instancias de Kong, todas ellas compartiendo la misma base de datos de configuración (si obviamos el modo declarativo, que no usa base de datos, y tiene algunas restricciones, pero que también soporta Clustering). De esta forma podemos proporcionar escalabilidad horizontal en nuestras soluciones mediante el uso de Kong, de una forma muy sencilla, y balancear la carga a través de DNS (ej: round robin) o de cualquier servicio de balanceo

Protegiendo la API Admin de Kong con API Key y ACLs

La API Admin de Kong permite realizar cualquier tarea de administración de Kong, lo que hace, que en caso de verse comprometida, se convierta en una vulnerabilidad y un riesgo grave. Por defecto, el puerto de Admin sólo escucha las peticiones que vienen de Localhost (es decir, sólo está disponible desde el propio servidor de Kong), pero habitualmente necesitaremos que esté disponible para su acceso desde más ubicaciones de red, por lo que necesitaremos protegerlo de alguna forma, mínimo mediante algún mecanismo de autenticación, quizás también mediante filtrado de IP. Cómo podemos hacerlo? Pues con el propio Kong

AKS – SNAT Port Exhaustion en Kubernetes

Al trabajar con Kubernetes en Azure podemos encontrarnos con el error de SNAT Port Exhaustion, que básicamente consiste en que las aplicaciones que tenemos ejecutándose en Kubernetes, abren una gran cantidad de conexiones a Internet para acceder a otros recursos (ej: estáticos, un APIM, un Front Door, etc.), alcanzando el número máximo de conexiones salientes, quedando pendientes o incluso acabando en fallo, impactando en el rendimiento de nuestras aplicaciones, con una sensación que puede variar desde degradación a indisponibilidad, en función de la magnitud del problema.

Monitorización de Kong con Prometheus, Elasticsearch y Grafana

Kong Enterprise incluye la funcionalidad Vitals que aporta métricas y gráficos de Kong, pero que no tenemos disponible en Kong Community. En su lugar, podemos utilizar Prometheus y Grafana, pudiendo importar de grafana.com Dashboards existentes de Kong, y habilitar en Kong la exportación de métricas a Prometheus mediante el Plugin de Prometheus. Pero además podemos exportar las peticiones y respuestas de las APIs que publicamos a través de Kong, enviándolas a Elasticsearch utilizando Logstash con el Plugin de Logs UDP, el de Logs TCP, o el de Logs HTTP (podemos elegir), para complementar así nuestra monitorización de Kong, y explotar estos Logs con Grafana o Kibana (API Analytics)

Transformaciones de Peticiones y Respuestas HTTP con Kong

Una necesidad habitual en un API Manager es poder modificar las peticiones HTTP entrantes así como las respuestas HTTP que se envían a los consumidores, añadiendo/modificando/eliminando encabezados y Query Strings, incluso el cuerto (body) o cambiando el método/verbo HTTP. Kong proporciona varios Plugins para este comentido (Request Transformer, Response Transformer, y Correlation Id) que podemos configurar fácilmente, ya sea con la API de Kong o través de Konga

Kong Plugins: Seguridad y Control de Tráfico

Al publicar servicios en Internet, nos exponemos a todo tipo de amenazas, desde Bots y Web Crawlers hasta intentos de ataques con intenciones diversas (desde obtener nuestros datos con llamadas GET a nuestras APIs, hasta denegaciones de servicio de todo tipo). Tenemos muchas maneras de protegernos en función de la situación concreta (ej: autenticación, uso de CDNs, uso de WAF, etc). En este Post vamos a ver varios Plugins de Kong que también nos pueden ayudar, y la forma de configurarlos utilizando Konga: Bot Detection, Request Size Limiting, Proxy Cache, IP Restrictions, Rate Limiting, y Response Rate Limiting

Consumidores, Autenticación, y Autorización de APIs en Kong – IV: OAuth2

Kong Gateway permite la autenticación basada en OAuth 2.0, que evita el envío de contraseñas en texto claro en las llamadas a las APIs al utilizar Tokens JWT y también evita el replay, además del resto de ventajas que proporciona OAuth 2.0. Kong es capaz de actuar como su propio servidor de identidad, proporcionando los endpoints necesarios para OAuth 2.0 (ej: /token, /authorize, etc.), permitiendo la implementación de los principales flujos de OAuth 2.0 (implicit, authorization code, client credentials, Password, y Refresh token). En este Post os explico en que consiste este mecanismo de autenticación, y cómo configurarlo en Kong utilizando Konga

Consumidores, Autenticación, y Autorización de APIs en Kong – III: Autenticación JWT

Kong Gateway permite la autenticación basada en Tokens JWT (JSON Web Token), que a diferencia de otros mecanismos como la autenticación básica o por API Key, evita el envío de contraseñas en texto claro en la petición y también evita el replay, al apoyarse en la firma digital (Hash) del propio token, y permite que la comprobación de la firma digital (Hash) se puede realizar tanto con una clave secreta compartida, como con una Clave Pública, en función del algoritmo utilizado. Además es posible incluir diferentres Claims (propiedades o información en general) en el Token JWT, que pueden usarse para diferentes propósitos. La autenticación basada en Tokens JWT resulta apropiada para Clientes Confidenciales (aquellos capaces de almacenar una contraseña con seguridad, como sería el Backend de una aplicación). En este Post os explico en que consiste este mecanismo de autenticación, hacemos una introducción a los Token JWT, y vemos cómo configurarlo en Kong utilizando Konga

Consumidores, Autenticación, y Autorización de APIs en Kong – II: Autenticación HMAC

Kong Gateway permite el uso del mecanismo de autenticación HMAC (Hash-Based Message Authentication), que a diferencia de otros mecanismos como la autenticación básica o por API Key, evita el envío de contraseñas en texto claro en la petición y también evita el replay, al apoyarse en la firma digital (Hash) de los encabezados de la petición HTTP, resultando más seguro y apropiado para su uso en Clientes Confidenciales (aquellos que son capaces de almacenar una contraseña con seguridad, como sería el Backend de una aplicación, una Web con Server-Side Rendering, etc). En este Post os explico en que consiste el mecanismo de autenticación HMAC y cómo configurarlo en Kong utilizando Konga