Seguridad de último tramo

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

La seguridad de red de acceso protege los servicios de backend a los que envían mediante proxy los servicios de las API. El objetivo principal de la seguridad de red de acceso es evitar los ataques de “finalización”, en los que un desarrollador de aplicaciones descubre la URL de un servicio de backend y omite cualquier proxy de API para acceder directamente a la URL de backend.

Las siguientes son las opciones principales para configurar la seguridad de red de acceso:

  • TLS/SSL del cliente
  • Autenticación saliente
  • Módulo tls de Node.js

TLS/SSL del cliente

El principal mecanismo para proteger la red de acceso es la TLS/SSL de cliente, que también se conoce como “autenticación mutua”.

Consulta Configura TLS desde Edge hasta el backend (Cloud y nube privada).

Autenticación saliente

La seguridad de red de acceso también se puede aplicar cuando se requiere que el proxy de la API presente una credencial al servicio de backend.

Por ejemplo, es posible que quieras que un proxy de API presente una clave de API a tu servicio de backend. También puedes hacer que un proxy de API obtenga y presente un token de acceso de credenciales de cliente OAuth.

Clave de API

Las claves de API se pueden aplicar a solicitudes salientes de proxies de API a servicios de backend. Esto supone que el servicio de backend es una API que puede emitir y validar claves de API.

Si configuras un proxy de API para presentar una clave de API en solicitudes salientes, debes almacenar la clave de API en un lugar en el que el proxy de API pueda recuperarla en el entorno de ejecución. Una ubicación disponible para almacenar claves de API es un mapa de par clave-valor. Consulta la política de operaciones de mapas de par clave-valor.

Puedes usar el tipo de política AssignMessage para agregar la clave de API como un encabezado HTTP, un parámetro de consulta o un elemento de carga útil a la solicitud saliente. Consulta la política AssignMessage.

Credenciales de cliente de OAuth

Se pueden usar credenciales de cliente de OAuth para agregar una capa de revocación a las claves de API. Si tus servicios de backend admiten credenciales de cliente de OAuth, puedes configurar un proxy de API a fin de presentar un token de acceso de credenciales de cliente para cada solicitud.

El proxy de API se debe configurar para realizar un texto destacado a fin de obtener el token de acceso desde tu extremo de token. El proxy de API también es necesario para almacenar en caché el token de acceso a fin de evitar que obtenga un nuevo token de acceso para cada llamada.

Se pueden usar varios enfoques para implementar credenciales salientes de clientes.

Puedes modificar esta muestra para llamar al extremo del token a fin de obtener un token de acceso. En este ejemplo, se usa JavaScript para adjuntar el token a la solicitud saliente como un encabezado de autorización HTTP. También puedes usar la Política Asignar mensaje para este fin.

SAML

El tipo de política GenerateSAMLAssertion se puede usar para adjuntar una aserción de SAML a un mensaje de solicitud XML saliente, desde el proxy de la API hasta un servicio de backend. Esto permite que el servicio de backend realice la autenticación y la autorización en las solicitudes recibidas desde los proxies de API.

Consulta las políticas SAMLAssertion.

Node.js

Si el destino de proxy de tu API es una aplicación de Node.js, puedes usar el módulo tls de Node.js para crear conexiones seguras a los servicios de backend. Realiza las solicitudes salientes con el módulo tls de la misma manera que lo harías normalmente en Node.js. Básicamente, debes agregar claves y certificados del cliente (archivos .pem) al directorio de recursos o nodos y cargarlos dentro de la secuencia de comandos. Para obtener información sobre el uso del módulo tls y sus métodos, consulta la documentación del módulo tls de Node.js. Para obtener más información, consulta Información sobre la compatibilidad de Edge con los módulos de Node.js.