Introducción a Apigee mTLS

Edge para nube privada v4.19.01

La función de mTLS de Apigee agrega seguridad a las comunicaciones entre los componentes de tu clúster de Edge para la nube privada.

Descripción general de la arquitectura

Para proporcionar comunicaciones seguras entre los componentes, mTLS de Apigee usa una malla de servicios que establece conexiones TLS seguras y autenticadas de forma mutua entre los componentes.

En la siguiente imagen, se muestran las conexiones entre los componentes de Apigee que protege mTLS de Apigee (in red). Los puertos que se muestran en la imagen son ejemplos; consulta Uso de puertos para obtener una lista de los rangos que puede usar cada componente.

(Ten en cuenta que los puertos indicados con una "M" se usan para administrar el componente y deben estar abiertos en el componente para que el servidor de administración pueda acceder a ellos).

Como puedes ver en el diagrama anterior, mTLS de Apigee agrega seguridad a las conexiones entre la mayoría de los componentes del clúster, incluidos los siguientes:

Fuente Destino
Servidor de administración Nodos de Router, MP, QPid, LDAP, Postgres, Zookeeper y Cassandra
Router Loopback; nodos de Qpid, Zookeeper y Cassandra
Message Processor Loopback; nodos de Qpid, Zookeeper y Cassandra
ZooKeeper y Cassandra Otros nodos de ZooKeeper y Cassandra
IU de Edge SMTP (solo para IdP externo)
Postgres Otros nodos de Postgres, Zookeeper y Cassandra

Encriptación y desencriptación de mensajes

La malla de servicios de mTLS de Apigee consta de servidores de Consul que se ejecutan en cada nodo de ZooKeeper de tu clúster y los siguientes servicios de Consul en cada nodo del clúster:

  • Un proxy de salida que intercepta los mensajes salientes en el nodo host. Este servicio encripta los mensajes salientes antes de enviarlos a su destino.
  • Un proxy de entrada que intercepta los mensajes entrantes en el nodo host. Este servicio desencripta los mensajes entrantes antes de enviarlos a su destino final.

Por ejemplo, cuando el servidor de administración envía un mensaje al router, el servicio de proxy de salida intercepta el mensaje saliente, lo encripta y, luego, lo envía al router. Cuando el nodo del router recibe el mensaje, el servicio de proxy de entrada lo desencripta y, luego, lo pasa al componente del router para su procesamiento.

Todo esto sucede de forma transparente para los componentes de Edge: no conocen el proceso de encriptación y desencriptación que llevan a cabo los servicios de proxy de Consul.

Además, mTLS de Apigee usa la utilidad iptables, un servicio de firewall de Linux que administra el redireccionamiento del tráfico.

Requisitos

mTLS de Apigee proporciona una forma estándar de la industria para configurar e instalar la malla de servicios. Admite la administración de paquetes y la automatización de la configuración.

Debido a que los servicios de proxy de Consul tienen un acoplamiento alto como asignaciones de puertos para procesos individuales, un cambio en un nodo afecta a todos los demás. Como resultado, si cambia la topología, debes volver a configurar y reinicializar los servicios en cada nodo del clúster.

Antes de instalar mTLS de Apigee, tu entorno debe cumplir con los siguientes requisitos que se describen en esta sección.

Estos requisitos incluyen las siguientes características:

  • Versión de Edge para la nube privada
  • Un conjunto de utilidades que se instalan y habilitan
  • Una cuenta de usuario con el nivel de permisos adecuado
  • Una máquina de administración (recomendado)

Requisitos de Edge para la nube privada

mTLS de Apigee admite la siguiente versión de Edge para la nube privada (pero no en todas las plataformas compatibles, como se describe en Requisitos del SO):

  • 4.19.06
  • 4.19.01

La mTLS de Apigee requiere que tu clúster de nube privada use una topología que incluya al menos tres nodos de Zookeeper. Como resultado, solo puedes instalar mTLS de Apigee en topologías que usen 5, 9, 12 (centro de datos múltiple) o 13 nodos. Para obtener más información, consulta Topologías de instalación.

Requisitos del SO

mTLS de Apigee admite las siguientes plataformas para tu clúster de nube privada (el SO compatible con mTLS depende de la versión de la nube privada):

Sistema operativo Versión compatible de la nube privada
v4.19.06 v4.50.00 v4.51.00
CentOS
RedHat Enterprise Linux (RHEL)
Oracle Linux
7.5, 7.6, 7.7 7.5, 7.6, 7.7, 7.8, 7.9 7.5, 7.6, 7.7, 7.8, 7.9, 8.0

Utilidades/paquetes

La mTLS de Apigee requiere que tengas los siguientes paquetes instalados y habilitados en cada máquina de tu clúster, incluida la máquina de administración, antes de comenzar el proceso de instalación:

Utilidad/paquete Descripción ¿Se puede quitar después de la instalación?
base64 Verifica los datos dentro de las secuencias de comandos de instalación.
gnu-bash
gnu-sed
gnu-grep
La secuencia de comandos de instalación y otras herramientas comunes la usan.
iptables Reemplaza el firewall predeterminado, firewalld.
iptables-services Proporciona funcionalidad a la utilidad iptables.
lsof La usa la secuencia de comandos de instalación.
nc Verifica las rutas de iptables.
openssl Firma certificados de forma local durante el proceso de arranque inicial.

Durante la instalación, también instalas el paquete de Consul en la máquina de administración para que puedas generar credenciales y la clave de encriptación.

El paquete apigee-mtls instala y configura los servidores de Consul, incluidos los proxies de entrada y salida en los nodos de ZooKeeper del clúster.

Permisos de la cuenta de usuario

La cuenta que ejecuta la instalación de mTLS de Apigee en cada nodo del clúster debe poder hacer lo siguiente:

  • Inicia, detén, reinicia e inicializa los componentes de Apigee
  • Configura reglas de firewall
  • Crea una nueva cuenta de usuario del SO o del sistema
  • Habilitar, inhabilitar, iniciar, detener y enmascarar servicios con systemctl

Máquina de administración (recomendada)

Apigee recomienda que tengas un nodo dentro del clúster que puedas usar para realizar varias tareas descritas en este documento, incluidas las siguientes:

  1. Instala HashiCorp Consul 1.6.2.
  2. Genera y distribuye un par de claves o certificado, y una clave de encriptación de Gossip.
  3. Actualiza y distribuye el archivo de configuración.

La máquina de administración requiere lo siguiente:

  • Descargaste y, luego, instalaste las utilidades apigee-service y apigee-setup en él, como se describe en Instala la utilidad apigee-setup de Edge.
  • Tiene acceso de scp/ssh a todos los nodos del clúster. Para distribuir tu archivo de configuración y las credenciales, debes tener acceso scp/ssh a todos los hosts del clúster.
  • Tienes acceso raíz a la máquina de administración.

Uso y asignación de puertos

En esta sección, se describe el uso y las asignaciones de puertos para admitir las comunicaciones de Consul con mTLS de Apigee.

Uso de puertos: Todos los nodos que ejecutan apigee-mtls

Todos los nodos del clúster que usan el servicio apigee-mtls deben permitir conexiones desde servicios en el host local (127.0.0.1). Esto permite que los proxies de Consul se comuniquen con los demás servicios a medida que procesan los mensajes entrantes y salientes.

Uso de puertos: Nodos del servidor de Consul (nodos que ejecutan ZooKeeper)

Debes abrir la mayoría de los siguientes puertos en los nodos del servidor de Consul (los nodos que ejecutan ZooKeeper) para aceptar solicitudes de todos los nodos del clúster:

Nodo Puerto del servidor de Consul Descripción Protocolo Permitir agentes de mTLS externos
*
Servidor de Consul (nodos de ZooKeeper) 8300 Conecta todos los servidores de Consul en el clúster. RPC
8301 Controla los mensajes de membresía y de transmisión dentro del clúster. UDP/TCP
8302 Es el puerto WAN que controla los mensajes de membresía y de anuncio en una configuración de varios centros de datos. UDP/TCP
8500 Controla las conexiones HTTP a las APIs del servidor de Consul desde los procesos del mismo nodo.

Este puerto no se usa para la comunicación o coordinación remotas; solo escucha en localhost.

HTTP
8502 Controla las conexiones de gRPC+HTTPS a las APIs del servidor de Consul desde otros nodos del clúster. gRPC+HTTPS
8503 Controla las conexiones HTTPS a las APIs del servidor de Consul desde otros nodos del clúster. HTTPS
8600 Controla el DNS del servidor de Consul. UDP/TCP
* Apigee recomienda que restrinjas las solicitudes entrantes solo a los miembros del clúster (incluido el almacén de datos cruzado). Puedes hacerlo con iptables.

Como se muestra en esta tabla, los nodos que ejecutan el componente consul-server (nodos de ZooKeeper) deben abrir los puertos 8301, 8302, 8502 y 8503 para todos los miembros del clúster que ejecutan el servicio apigee-mtls, incluso en los centros de datos. Los nodos que no ejecutan ZooKeeper no necesitan abrir estos puertos.

Asignaciones de puertos para todos los nodos de Consul (incluidos los nodos que ejecutan ZooKeeper)

Para admitir las comunicaciones de Consul, los nodos que ejecutan los siguientes componentes de Apigee deben permitir las conexiones externas a los puertos dentro de los siguientes rangos:

Componente de Apigee Rango Cantidad de puertos necesarios por nodo
mTLS de Apigee De 10700 a 10799 1
Cassandra De 10100 a 10199 2
Message Processor De 10500 a 10599 2
OpenLDAP Del 10200 al 10299 1
Postgres De 10300 a 10399 3
Qpid De 10400 a 10499 2
Router De 10600 a 10699 2
ZooKeeper Del 10001 al 10099 3

Consul asigna puertos de forma lineal simple. Por ejemplo, si tu clúster tiene dos nodos de Postgres, el primer nodo usa dos puertos, por lo que Consul le asigna los puertos 10300 y 10301. El segundo nodo también usa dos puertos, por lo que Consol asigna 10302 y 10303 a ese nodo. Esto se aplica a todos los tipos de componentes.

Como puedes ver, la cantidad real de puertos depende de la topología: si tu clúster tiene dos nodos de Postgres, deberás abrir cuatro puertos (dos nodos por dos puertos cada uno).

Ten en cuenta lo siguiente:

  • Los proxies de Consul no pueden escuchar en los mismos puertos que los servicios de Apigee.
  • Consul solo tiene un espacio de direcciones de puertos. Las asignaciones de puertos del proxy de Consul deben ser únicas en todo el clúster, lo que incluye los centros de datos. Esto significa que si el proxy A en el host A escucha en el puerto 15000, el proxy B en el host B no puede escuchar en el puerto 15000.
  • La cantidad de puertos utilizados varía según la topología, como se describió anteriormente.

En una configuración de varios centros de datos, todos los hosts que ejecutan mTLS también deben abrir el puerto 8302.

Puedes personalizar los puertos predeterminados que usa mTLS de Apigee. Para obtener información sobre cómo hacerlo, consulta Personalización del rango de puertos del proxy.

Limitaciones

La mTLS de Apigee tiene las siguientes limitaciones:

  • No encripta las comunicaciones de Cassandra entre nodos (puerto 7000)
  • La configuración y el ajuste no son idempotentes. Esto significa que, si realizas un cambio en un nodo, debes realizar el mismo cambio en todos los nodos; el sistema no selecciona ese cambio y lo aplica a otros nodos por ti. Para obtener más información, consulta Cambia una configuración de apigee-mtls existente.

Terminología

En esta sección, se usa la siguiente terminología:

Término Definición
clúster El grupo de máquinas que conforman tu instalación de Edge para la nube privada.
Consul Es la malla de servicios que usa mTLS de Apigee. Para obtener información sobre cómo Consul protege tus comunicaciones de Private Cloud, consulta el modelo de seguridad de Consul.
mTLS TLS con autenticación mutua.
Malla de servicios Una red superpuesta (o una red dentro de otra red)
TLS Seguridad de la capa de transporte. Es un protocolo de autenticación estándar de la industria para comunicaciones seguras.