Introducción a Apigee mTLS

Edge para la nube privada v4.19.01

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

Descripción general de la arquitectura

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

En la siguiente imagen, se muestran las conexiones entre los componentes de Apigee que Apigee mTLS protege (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 que se indican con una "M" se usan para administrar el componente y deben estar abiertos en el componente a fin de que el servidor de administración pueda acceder a él).

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

Origen Destino
Servidor de administración Nodos de router, MP, QPid, LDAP, Postgres, Zookeeper y Cassandra
Router Bucle invertido; nodos de Qpid, Zookeeper y Cassandra
Procesador de mensajes Bucle invertido; 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 o desencriptación de mensajes

La malla de servicios de Apigee mTLS consta de los servidores de Consul que se ejecutan en cada nodo de ZooKeeper en 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 desencripta el mensaje y, luego, lo pasa al componente del router para su procesamiento.

Todo esto ocurre con transparencia en los componentes de Edge: no están al tanto del proceso de encriptación y desencriptación que llevan a cabo los servicios de proxy de Consul.

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

Requisitos

Apigee mTLS 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 están estrechamente vinculados como asignaciones de puertos para procesos individuales, un cambio en un nodo afecta a todos los demás nodos. Como resultado, si tu topología cambia, debes volver a configurar y reinicializar los servicios en cada nodo del clúster.

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

Estos requisitos incluyen las siguientes características:

  • Edge para la versión de nube privada
  • Un conjunto de utilidades que están instaladas y habilitadas
  • Una cuenta de usuario con el nivel adecuado de permisos
  • Una máquina de administración (recomendado)

Requisitos de Edge para nube privada

Apigee mTLS 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

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

Requisitos del SO

Apigee mTLS 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 de nube privada compatible
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 y 8.0

Utilidades/paquetes

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

Utilidad/paquete Descripción ¿Quieres quitarlo 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
Lo usa la secuencia de comandos de instalación y otras herramientas comunes.
iptables Reemplaza el firewall predeterminado, firewalld.
iptables-services Proporciona funcionalidad a la utilidad iptables.
lsof Lo usa la secuencia de comandos de instalación.
nc Verifica iptables rutas.
openssl Firma los certificados de forma local durante el proceso de arranque inicial.

Durante la instalación, también debes instalar el paquete de Consul en la máquina de administración para poder generar las 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 Apigee mTLS en cada nodo del clúster debe poder hacer lo siguiente:

  • Inicia, detén, inicializa y reinicia los componentes de Apigee
  • Establecer reglas de firewall
  • Crear una nueva cuenta de usuario de SO o sistema
  • Habilita, inhabilita, inicia, detiene y enmascara servicios con systemctl

Máquina de administración (recomendado)

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

  1. Instala HashiCorp Consul 1.6.2.
  2. Generar y distribuir un par de claves/certificados y una clave de encriptación de chismes.
  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, como se describe en Instala la utilidad apigee-setup de Edge.
  • Tiene acceso scp/ssh a todos los nodos del clúster. Para distribuir tus credenciales y tu archivo de configuración, debes tener acceso scp/ssh a todos los hosts dentro 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 de puertos y las asignaciones de puertos para admitir las comunicaciones de Consul con Apigee mTLS.

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 localhost (127.0.0.1). Esto permite que los proxies de Consul se comuniquen con los otros servicios a medida que procesan 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 mtls-externos
*
Servidor de Consul (nodos de ZooKeeper) 8300 Conecta todos los servidores de Consul en el clúster. RPC
8301 Se encargan de los mensajes de membresía y emisión dentro del clúster. UDP y TCP
8302 Puerto WAN que controla los mensajes de membresía y de emisión en una configuración de varios centros de datos. UDP y TCP
8500 Maneja conexiones HTTP a las API del servidor de Consul desde procesos en el mismo nodo.

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

HTTP
8502 Administra conexiones gRPC y HTTPS a las APIs de Consul Server desde otros nodos en el clúster. gRPC y HTTPS
8503 Administra conexiones HTTPS a las APIs del servidor de Consul desde otros nodos en el clúster. HTTPS
8600 Controla el DNS del servidor de Consul. UDP y TCP
* Apigee recomienda restringir 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 a todos los miembros del clúster que ejecutan el servicio apigee-mtls, incluso entre 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 conexiones externas a puertos dentro de los siguientes rangos:

Componente de Apigee Rango Cantidad de puertos requeridos por nodo
Apigee mTLS De 10,700 a 10,799 1
Cassandra De 10,100 a 10,199 2
Procesador de mensajes De 10,500 a 10,599 2
OpenLDAP De 10,200 a 10,299 1
Postgres De 10,300 a 10,399 3
LPD De 10,400 a 10,499 2
Router De 10,600 a 10,699 2
ZooKeeper 10,001 a 10,099 3

Consul asigna puertos de forma lineal simple. Por ejemplo, si tu clúster tiene dos nodos de Postgres, el primero 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 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 puerto. Las asignaciones de puertos del proxy de Consul deben ser únicas en el clúster, incluidos los centros de datos. Esto significa que si el proxy A del host A escucha en el puerto 15000, el proxy B del host B no puede escuchar en el puerto 15000.
  • La cantidad de puertos que se usan varía según la topología, como se describió antes.

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 Apigee mTLS. Para obtener información sobre cómo hacerlo, consulta Personalización del rango de puertos de proxy.

Limitaciones

Apigee mTLS tiene las siguientes limitaciones:

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

Terminología

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

Término Definición
clúster El grupo de máquinas que conforman tu perímetro para la instalación de la nube privada.
Consul La malla de servicios que usa Apigee mTLS. Para obtener más información sobre cómo Consul protege las comunicaciones de tu nube privada, consulta el Modelo de seguridad de Consul.
mTLS TLS autenticada de forma mutua.
Malla de servicios Corresponde a una red superpuesta (o una red dentro de una red).
TLS Seguridad de la capa de transacción. Un protocolo de autenticación estándar de la industria para las comunicaciones seguras.