Protección de las comunicaciones de un extremo a otro para las aplicaciones de Spring Boot en un entorno de Confianza cero
Nota:
Los planes de Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retiro de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.
El plan de consumo estándar y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte Migrar el consumo estándar y el plan dedicado de Azure Spring Apps a Azure Container Apps.
En este artículo se describe cómo proteger las comunicaciones de un extremo a otro para las aplicaciones de Spring Boot en un entorno de Confianza cero. Puede proteger las comunicaciones de un extremo a otro o finalizar la seguridad de nivel de transporte en cualquier punto de comunicación para las aplicaciones de Spring Boot. También puede automatizar el aprovisionamiento y la configuración de todos los recursos de Azure necesarios para proteger las comunicaciones.
La implementación de comunicaciones seguras como parte de la arquitectura de la solución puede ser difícil. Muchos clientes rotan manualmente los certificados o crean sus propias soluciones para automatizar el aprovisionamiento y la configuración. Incluso en ese caso, todavía existe un riesgo de filtración de datos, como la transferencia o la copia no autorizada de datos desde sistemas de servidores. Con Azure Spring Apps, estos detalles se controlan automáticamente. Azure Spring Apps elimina la mayor parte de la complejidad, de modo que las comunicaciones seguras quedan como opciones configurables y automatizables en el servicio.
Protección de las comunicaciones de Internet
El protocolo TLS/SSL establece la identidad y la confianza, y cifra las comunicaciones de todos los tipos. TLS/SSL permite realizar comunicaciones seguras, especialmente el tráfico web que incluye datos comerciales y de clientes.
Puede usar cualquier tipo de certificado TLS/SSL. Por ejemplo, puede usar certificados emitidos por una entidad de certificación, certificados de validación ampliados, certificados comodín compatibles con cualquier número de subdominios o certificados autofirmados para entornos de desarrollo y pruebas.
Carga de seguridad de certificados con Confianza cero
Confianza cero se basa en el principio de "nunca confiar, comprobar siempre y sin credenciales". Confianza cero ayuda a proteger todas las comunicaciones al eliminar certificados desconocidos y no administrados. Confianza cero implica confiar solo en certificados que se comparten comprobando la identidad antes de conceder acceso a dichos certificados. Para obtener más información, consulte Centro guía de Confianza cero.
Para cargar certificados de forma segura desde Azure Key Vault, las aplicaciones de Spring Boot usan identidades administradas y el control de acceso basado en roles (RBAC) de Azure. Azure Spring Apps usa una entidad de servicio de proveedor y el control de acceso basado en roles de Azure. Esta carga segura se basa en el proveedor de arquitectura de criptografía de Java (JCA) de Azure Key Vault. Para más información, consulte Biblioteca cliente de JCA de Azure Key Vault para Java.
Con Azure Key Vault, controla el almacenamiento y la distribución de certificados para reducir la pérdida accidental. Las aplicaciones y los servicios pueden acceder de forma segura a los certificados. Key Vault usa el control de acceso basado en roles de Azure para bloquear el acceso solo a aquellos que requieren acceso, como un administrador, pero también aplicaciones, mediante el principio de privilegios mínimos. Las aplicaciones y los servicios se autentican y autorizan, mediante Microsoft Entra ID y el control de acceso basado en roles de Azure, para acceder a los certificados. Puede supervisar el acceso a los certificados y el uso que se hace de ellos en Key Vault a través de su registro de auditoría completo.
Protección de las comunicaciones de un extremo a otro o finalización de TLS en cualquier punto
Como se muestra en el diagrama siguiente, hay varios segmentos de comunicaciones a través de los siguientes componentes:
- Puntos de acceso a la red, como Azure Front Door
- Azure App Gateway
- F5 BIG-IP Local Traffic Manager
- Azure API Management
- Aplicaciones de Spring Boot de Apigee API Management y sistemas de back-end, como bases de datos, sistemas de mensajería y eventos, y caché de aplicaciones.
Puede proteger las comunicaciones de un extremo a otro o finalizar la seguridad de nivel de transporte en cualquier punto de comunicación para las aplicaciones de Spring Boot.
En las siguientes secciones se describe esta arquitectura más detalladamente.
Segmento 1: Protección de las comunicaciones hacia Azure Spring Apps
El primer segmento (segmento 1 del diagrama) representa las comunicaciones desde los consumidores hacia el controlador de entrada en Azure Spring Apps. Entre estos consumidores se incluyen exploradores, teléfonos móviles, escritorios, pantallas completas o puntos de acceso a redes, como Azure Front Door, Azure Application Gateway, F5 BIG-IP Local Traffic Manager, Azure API Management y Apigee API Management.
De manera predeterminada, este segmento se protege mediante un certificado TLS/SSL proporcionado por Microsoft para el dominio *.azuremicroservices.io
. Puede aplicar su propio certificado TLS/SSL en Azure Key Vault mediante el enlace de un dominio personalizado a la aplicación en Azure Spring Apps. No se necesita código. Para más información, vea Tutorial: Asignación de un dominio personalizado existente a Azure Spring Apps.
Segmento 2: Protección de las comunicaciones desde el controlador de entrada hacia las aplicaciones
El siguiente segmento (segmento 2 del diagrama) representa las comunicaciones desde el controlador de entrada de Azure Spring Apps hacia cualquier aplicación en Azure Spring Apps. Puede habilitar TLS/SSL para proteger el tráfico desde el controlador de entrada hacia una aplicación que admita HTTPS. Para obtener más información, consulte Habilitación de TLS de entrada a la aplicación para una aplicación.
Una aplicación de Spring Boot puede usar el enfoque de Spring para habilitar HTTPS o la aplicación puede proteger las comunicaciones mediante el iniciador de Spring Boot para certificados de Azure Key Vault. Para obtener más información, consulte Tutorial: Protección de aplicaciones de Spring Boot con certificados de Azure Key Vault.
Necesita los tres pasos de configuración siguientes para proteger las comunicaciones mediante un certificado TLS/SSL desde una instancia de Azure Key Vault. No se necesita código.
Incluya la siguiente dependencia del iniciador de Spring Boot para certificados de Azure Key Vault en el archivo pom.xml:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>azure-spring-boot-starter-keyvault-certificates</artifactId> </dependency>
Agregue las siguientes propiedades a fin de configurar una aplicación para cargar un certificado TLS/SSL desde Azure Key Vault. Asegúrese de especificar el URI de la instancia de Azure Key Vault y el nombre del certificado.
azure: keyvault: uri: ${KEY_VAULT_URI} server: ssl: key-alias: ${SERVER_SSL_CERTIFICATE_NAME} key-store-type: AzureKeyVault
Habilite la identidad administrada de la aplicación y, a continuación, conceda a la identidad administrada acceso "Get" y "List" a la instancia de Azure Key Vault. Para más información, consulte Habilitación de la identidad administrada asignada por el sistema para una aplicación de Azure Spring Apps y Control de acceso al certificado.
Segmento 3: Protección de las comunicaciones desde una aplicación hacia el middleware administrado
El siguiente segmento (segmento 3 del diagrama) representa las comunicaciones desde cualquier aplicación hacia la instancia administrada de Spring Cloud Config Server y Spring Cloud Service Registry en Azure Spring Apps. De manera predeterminada, este segmento se protege mediante un certificado TLS/SSL proporcionado por Microsoft.
Segmento 4: Protección de las comunicaciones entre aplicaciones
El siguiente segmento (segmento 4 del diagrama) representa las comunicaciones entre aplicaciones en Azure Spring Apps. Puede usar el iniciador de Spring Boot para certificados de Azure Key Vault a fin de configurar la aplicación que llama para confiar en el certificado TLS/SSL proporcionado por una aplicación habilitada para HTTPS a la que se llama. La aplicación receptora de Spring Boot puede usar el enfoque de Spring para habilitar HTTPS o la aplicación puede proteger las comunicaciones mediante el iniciador de Spring Boot para certificados de Azure Key Vault. Para obtener más información, consulte Tutorial: Protección de aplicaciones de Spring Boot con certificados de Azure Key Vault.
Segmento 5: Protección de comunicaciones desde aplicaciones hacia sistemas externos
El siguiente segmento (segmento 5 del diagrama) representa las comunicaciones entre una aplicación que se ejecuta en Azure Spring Apps y sistemas externos. Puede usar el iniciador de Spring Boot para certificados de Azure Key Vault a fin de configurar la aplicación que se ejecuta en Azure Spring Apps para confiar en el certificado TLS/SSL proporcionado por cualquier sistema externo. Para obtener más información, consulte Tutorial: Protección de aplicaciones de Spring Boot con certificados de Azure Key Vault.
Carga implícita de certificados TLS/SSL desde Key Vault en una aplicación
Si el código de Spring, el código Java o las bibliotecas de código abierto, como OpenSSL, se basan en la cadena de JCA predeterminada de JVM para cargar implícitamente certificados en el almacén de confianza de JVM, puede importar los certificados TLS/SSL desde Key Vault en Azure Spring Apps y usar dichos certificados en la aplicación. Para obtener más información, consulte Uso de certificados TLS/SSL en la aplicación en Azure Spring Apps.
Carga de certificados TLS/SSL públicos conocidos para sistemas de back-end
Para que una aplicación se comunique con los servicios de back-end en sistemas en la nube o locales, puede requerir el uso de certificados TLS/SSL públicos para proteger la comunicación. Puede cargar esos certificados TLS/SSL para proteger las comunicaciones salientes. Para obtener más información, consulte Uso de certificados TLS/SSL en la aplicación en Azure Spring Apps.
Automatización del aprovisionamiento y la configuración para proteger las comunicaciones
Con una plantilla de ARM, Bicep o Terraform, puede automatizar el aprovisionamiento y la configuración de todos los recursos de Azure mencionados anteriormente para proteger las comunicaciones.
Creación de soluciones y comunicaciones seguras
Azure Spring Apps es un servicio totalmente administrado destinado a aplicaciones de Spring Boot. Azure Spring Apps elimina la complejidad de la administración del middleware de Spring Cloud y la infraestructura de los usuarios. Puede centrarse en la creación de la lógica de negocios y dejar que Azure se ocupe del escalado dinámico, las revisiones, la seguridad, el cumplimiento y la alta disponibilidad. Con unos pocos pasos, puede aprovisionar Azure Spring Apps, crear aplicaciones, implementar y escalar aplicaciones de Spring Boot y empezar a proteger las comunicaciones en cuestión de minutos.
Microsoft y VMware admiten, operan y crean de forma conjunta Azure Spring Apps.