Introducción a Apigee mTLS

La función mTLS de Apigee agrega seguridad a las comunicaciones entre los componentes de tu clúster de Edge para 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, la mTLS de Apigee 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 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 servicio 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 tienen conocimiento del proceso de encriptación y desencriptación que llevan a cabo los servicios de proxy de Consul.

Además, la mTLS de Apigee usa la utilidad iptables, un servicio de firewall de Linux que administra el redireccionamiento 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 topología

Apigee mTLS requiere que la topología de tu entorno incluya al menos tres nodos de Zookeeper. Como resultado, solo puedes instalar mTLS de Apigee en topologías que usan 5, 9, 12 (varios centros de datos) 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 de tu 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
La secuencia de comandos de instalación y otras herramientas comunes lo usan.
iptables Reemplaza el firewall predeterminado, firewalld.
iptables-services Proporciona funcionalidad a la utilidad iptables.
lsof La secuencia de comandos de instalación la usa.
nc Verifica las rutas de iptables.
openssl Firma 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 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 instalar, 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 Apigee mTLS en cada nodo del clúster debe poder hacer lo siguiente:

  • Iniciar, detener, reiniciar e inicializar componentes de Apigee
  • Configura reglas de firewall
  • Crea una nueva cuenta de usuario del sistema operativo o del sistema
  • Habilita, inhabilita, inicia, detén y enmascara servicios con systemctl

Máquina de administración (recomendada)

Apigee recomienda que tengas un nodo dentro del clúster en el que puedas realizar varias tareas administrativas que se describen 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 difusión.
  3. Actualiza y distribuye el archivo de configuración.

Cuando configures la máquina de administración, haz lo siguiente:

  • Asegúrate de tener acceso raíz a él.
  • Descarga e instala las utilidades apigee-service y apigee-setup en él, como se describe en Instala la utilidad apigee-setup de Edge.
  • Asegúrate de poder 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 y la asignación 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 otros servicios mientras 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 externos de mTLS
*
Servidor de Consul (nodos de ZooKeeper) 8300 Conecta todos los servidores de Consul en el clúster. RPC
8301 Controla la membresía y los mensajes de transmisión dentro del clúster. UDP/TCP
8302 Puerto WAN que controla los mensajes de membresía y de transmisión en una configuración de varios centros de datos. UDP/TCP
8500 Controla las conexiones HTTP a las APIs del servidor de Consul desde procesos en el mismo nodo.

Este puerto no se usa para la comunicación o coordinación remotas, sino que solo detecta localhost.

HTTP
8502 Controla las conexiones 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 acceso entre almacenes de datos). 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 diferentes 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 necesarios por nodo
mTLS de Apigee 10700 a 10799 1
Cassandra 10100 a 10199 2
Message Processor 10500 a 10599 2
SymasLDAP 10200 a 10299 1
Postgres 10300 a 10399 3
Qpid 10400 a 10499 2
Router 10600 a 10699 2
ZooKeeper 10000 a 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 le asigna los puertos 10302 y 10303. 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 tiene solo un espacio de direcciones de puertos. Las asignaciones de puertos de proxy de Consul deben ser únicas en todo el clúster, incluidos 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 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 de proxy.

Limitaciones

Apigee mTLS tiene las siguientes limitaciones:

  • No encripta las comunicaciones entre nodos de Cassandra (puerto 7000)
  • La configuración y la instalació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 Cómo cambiar una configuración existente de apigee-mtls.

Terminología

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

Término Definición
clúster Es el grupo de máquinas que conforman tu instalación de Edge para Private Cloud.
Consul Es la malla de servicios que usa la 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 de superposición (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 comunicaciones seguras.