La función mTLS de Apigee agrega seguridad a las comunicaciones entre los componentes de Edge para el clúster de nube privada. Proporciona una forma estándar de la industria para instalar y configurar 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 de forma mutua entre los componentes.
En la siguiente imagen, se muestran conexiones entre los componentes de Apigee que Apigee Secure 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 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 puede ver en el diagrama anterior, Apigee mTLS agrega seguridad a las conexiones entre la mayoría de los componentes en el 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/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 en su 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 sucede con transparencia en los componentes de Edge: no saben el 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 el redireccionamiento del tráfico.
Requisitos
Antes de que pueda instalar Apigee mTLS, su entorno debe cumplir con los siguientes requisitos:
- Requisitos de versión, plataforma y topología
- Utilidades instaladas y habilitadas
- Cuenta de usuario con el nivel de permisos adecuado
- Una máquina de administración (recomendado)
- Uso de puertos
En las siguientes secciones, se describe cada uno de estos requisitos en detalle.
Versión, plataforma y topología
En la siguiente tabla, se enumeran los requisitos de mTLS:
Requisito | Descripción | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Versiones |
|
||||||||||||
Topología | Se deben incluir al menos tres nodos de Zookeeper. Como resultado, solo puedes instalar Apigee mTLS 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. | ||||||||||||
Plataformas/Sistemas operativos | Usa los siguientes valores para determinar si Apigee mTLS es compatible con un SO en particular:
Ten en cuenta que Apigee mTLS no es necesariamente compatible con todos los SO compatibles con la versión correspondiente de Apigee Edge para la nube privada en la que se ejecuta. Por ejemplo, si v4.19.06 admite CentOS x e y, eso no significa necesariamente que Apigee mTLS sea compatible con CentOS x e y para v4.19.06. |
Utilidades/paquetes
Apigee mTLS requiere que tengas instalados y habilitados los siguientes paquetes 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 usan 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 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 en el clúster.
Permisos de la cuenta de usuario
Antes de realizar la instalación, 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
- Crear una nueva cuenta de usuario del sistema operativo
- Habilitar, inhabilitar, iniciar, detener y enmascarar 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 que se describen en este documento, incluidas las siguientes:
- Instala HashiCorp Consul 1.6.2.
- Genera y distribuye un par de certificados/claves y una clave de encriptación de chismes.
- Actualiza y distribuye el archivo de configuración.
Cuando configures la máquina de administración, ten en cuenta lo siguiente:
- Asegúrate de tener acceso raíz a ella.
- Descarga e instala las utilidades
apigee-service
yapigee-setup
en ella, como se describe en Instala la utilidad de configuración de Apigee 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 el archivo de configuración y las credenciales.
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 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 los mensajes entrantes y salientes.
Uso de puertos: Nodos de 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 mtls-agents externos * |
---|---|---|---|---|
Consul Server (nodos de ZooKeeper) | 8300 |
Conecta todos los servidores de Consul del clúster. | RPC | |
8301 |
Maneja mensajes de membresía y transmisión dentro del clúster. | UDP o TCP | ||
8302 |
Puerto WAN que controla los mensajes de transmisión y membresía en una configuración de centro de datos múltiples. | UDP o TCP | ||
8500 |
Controla conexiones HTTP a las API de Consul Server desde procesos que se encuentran en el mismo nodo.
Este puerto no se usa para la comunicación ni la coordinación remotas; solo escucha en localhost. |
HTTP | ||
8502 |
Maneja conexiones de gRPC+HTTPS a las API del servidor de Consul desde otros nodos en el clúster. | gRPC y HTTPS | ||
8503 |
Controla las conexiones HTTPS a las API del servidor de Consul desde otros nodos en el clúster. | HTTPS | ||
8600 |
Controla el DNS del servidor de Consul. | UDP o 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 a todos los miembros del clúster que ejecutan el servicio de apigee-mtls
, incluso entre 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 conexiones externas a puertos dentro de los siguientes rangos:
Componente de Apigee | Rango | Cantidad de puertos requeridos por nodo |
---|---|---|
Apigee mTLS | 10,700 a 10,799 | 1 |
Cassandra | 10100 a 10199 | 2 |
Message Processor | 10500 a 10599 | 2 |
OpenLDAP | 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 manera lineal. 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 tiene un solo 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 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 usados varía según la topología, como se describió antes.
En una configuración de centros de datos múltiples, todos los hosts que ejecutan mTLS también deben abrir el puerto 8302.
Puede 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 no es idempotente. Esto significa que, si realizas un cambio en un nodo, debes aplicarlo en todos los nodos; el sistema no lo aplicará en ningún otro. Para obtener más información, consulte 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 | El grupo de máquinas que componen el perímetro para la instalación de la nube privada. |
Consul | La malla de servicios que usa Apigee mTLS. Para obtener información sobre cómo Consul protege tus comunicaciones de nube privada, 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. |