Introducción a Apigee mTLS

La función de mTLS de Apigee agrega seguridad a las comunicaciones entre los componentes de Edge para el clúster de la nube privada. 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.

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 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 que se indican con una "M" se usan para administrar el componente y deben estar abiertos para 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:

Fuente Destino
Servidor de administración Nodos de router, MP, QPid, LDAP, Postgres, Zookeeper y Cassandra
Router Bucle; nodos de Qpid, Zookeeper y Cassandra
Message Processor Bucle; 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 sucede con transparencia en los componentes de Edge: no están al tanto del proceso de encriptación y desencriptación que realizan los servicios de proxy de Consul.

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

Requisitos

Antes de instalar Apigee mTLS, tu entorno debe cumplir con los siguientes requisitos:

En las siguientes secciones, se describe cada uno de estos requisitos en detalle.

Requisitos de la topología

Apigee mTLS requiere que la topología de tu entorno 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.

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 ¿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
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 instalas el paquete 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

Antes de instalarla, crea una cuenta de usuario nueva o asegúrate de tener acceso a una que tenga privilegios elevados.

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

  • Inicia, detiene, reinicia e inicializa los componentes de Apigee.
  • Configura reglas de firewall
  • Crea una nueva cuenta de usuario del 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 en el que puedas realizar varias tareas administrativas descritas en este documento, incluidas las siguientes:

  1. Instala HashiCorp Consul 1.6.2.
  2. Generar y distribuir un par de claves y certificado y una clave de encriptación de chismes.
  3. Actualiza y distribuye el archivo de configuración.

Cuando configures la máquina de administración:

  • Asegúrate de tener acceso con permisos de administrador.
  • Descarga y, luego, instala las utilidades apigee-service y apigee-setup en ella, como se describe en Instala la utilidad de apigee-setup de Edge.
  • Asegúrate de que puedes usar scp/ssh para acceder a todos los nodos del clúster desde la máquina de administración. Esto es necesario para que puedas distribuir tu archivo de configuración y tus credenciales.

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 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 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 puertos siguientes en los nodos del servidor de Consul (los nodos que ejecutan ZooKeeper) para aceptar solicitudes de todos los nodos en el 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 emisión dentro del clúster. UDP y TCP
8302 Puerto WAN que controla los mensajes de membresía y 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 ni la coordinación remotas; solo escucha en localhost.

HTTP
8502 Controla conexiones gRPC + HTTPS para las APIs del servidor de Consul desde otros nodos en el clúster. gRPC+HTTPS
8503 Controla 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 que restrinjas las solicitudes entrantes solo a los miembros del clúster (incluidos los almacenes de datos cruzados). 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 en 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 los 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
Message Processor De 10,500 a 10,599 2
OpenLDAP De 10,200 a 10,299 1
Postgres De 10300 a 10399 3
LPID De 10,400 a 10,499 2
Router De 10,600 a 10,699 2
ZooKeeper 10,000 a 10,099 3

Consul asigna puertos de forma lineal simple. Por ejemplo, si tu clúster tiene dos nodos 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, necesitará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 de 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ó 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 Apigee mTLS. Para obtener información sobre cómo hacerlo, consulta Personalización del rango de puertos del proxy.

Limitaciones

Apigee mTLS tiene las siguientes limitaciones:

  • No encripta las comunicaciones de Cassandra entre nodos (puerto 7000)
  • La configuración y la configuración 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 aplica ese cambio por ti en ningún otro nodo. 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:

Período 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 tus comunicaciones de la nube privada, consulta el Modelo de seguridad de Consul.
mTLS TLS con autenticación mutua.
Malla de servicios Una red superpuesto (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.