La función de Apigee mTLS 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 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
Para poder instalar Apigee mTLS, tu 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 adecuado de permisos
- 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 | Debes incluir 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. | ||||||||||||
Plataformas y 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 necesariamente es compatible con todos los SO compatibles con la versión correspondiente de Apigee Edge para 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 es compatible con CentOS x e y para v4.19.06. |
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
Antes de 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:
- 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 en el que puedas realizar varias tareas administrativas que se describen en este documento, incluidas las siguientes:
- Instala HashiCorp Consul 1.6.2.
- Generar y distribuir un par de claves/certificados 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 con permisos de administrador.
- Descarga y, luego, instala las utilidades
apigee-service
yapigee-setup
, como se describe en Instala la utilidad 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 tus credenciales y tu archivo de configuració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 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,000 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 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:
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. |