Compartir a través de


Configuración centralizada

Sugerencia

Este contenido es un extracto del libro electrónico, Arquitectura de aplicaciones .NET nativas de nube para Azure, disponible en .NET Docs o como un PDF descargable gratuito que se puede leer sin conexión.

Miniatura de la portada del libro electrónico

A diferencia de una aplicación monolítica en la que todo se ejecuta dentro de una sola instancia, una aplicación nativa de la nube consta de servicios independientes distribuidos entre máquinas virtuales, contenedores y regiones geográficas. La administración de opciones de configuración para docenas de servicios interdependientes puede ser difícil. Las copias duplicadas de la configuración en diferentes ubicaciones son propensas a errores y son difíciles de administrar. La configuración centralizada es un requisito fundamental para las aplicaciones nativas de nube distribuidas.

Como se describe en el capítulo 1, las recomendaciones de Twelve-Factor aplicación requieren una separación estricta entre el código y la configuración. La configuración se debe almacenar externamente desde la aplicación y leerla según sea necesario. Almacenar valores de configuración como constantes o valores literales en el código es una infracción. A menudo, muchos servicios de la misma aplicación usan los mismos valores de configuración. Además, debemos admitir los mismos valores en varios entornos, como desarrollo, pruebas y producción. El procedimiento recomendado es almacenarlos en un almacén de configuración centralizado.

La nube de Azure presenta varias opciones excelentes.

Azure App Configuration (Configuración de aplicaciones de Azure)

Azure App Configuration es un servicio de Azure totalmente administrado que almacena valores de configuración no secretos en una ubicación segura y centralizada. Los valores almacenados se pueden compartir entre varios servicios y aplicaciones.

El servicio es fácil de usar y proporciona varias ventajas:

  • Representaciones y asignaciones de clave/valor flexibles
  • Etiquetado con etiquetas de Azure
  • Interfaz de usuario dedicada para la administración
  • Cifrado de información confidencial
  • Consulta y recuperación por lotes

Azure App Configuration mantiene los cambios realizados en la configuración de clave-valor durante siete días. La característica de instantánea a un momento dado permite reconstruir el historial de una configuración e incluso revertir una implementación con errores.

App Configuration almacena automáticamente en caché cada opción para evitar llamadas excesivas al almacén de configuración. La operación de actualización espera hasta que el valor almacenado en caché de una configuración expira para actualizar esa configuración, incluso cuando su valor cambia en el almacén de configuración. El tiempo de expiración de caché predeterminado es de 30 segundos. Puede invalidar la hora de expiración.

App Configuration cifra todos los valores de configuración en tránsito y en reposo. Los nombres de clave y las etiquetas se usan como índices para recuperar datos de configuración y no se cifran.

Aunque App Configuration proporciona seguridad protegida, Azure Key Vault sigue siendo el mejor lugar para almacenar secretos de aplicación. Key Vault proporciona cifrado de nivel de hardware, directivas de acceso pormenorizadas y operaciones de administración como la rotación de certificados. Puede crear valores de App Configuration que hagan referencia a secretos almacenados en un almacén de claves.

Azure Key Vault

Key Vault es un servicio administrado para almacenar y acceder a secretos de forma segura. Un secreto es todo lo que desea controlar estrechamente el acceso, como claves de API, contraseñas o certificados. Un almacén es un grupo lógico de secretos.

Key Vault reduce en gran medida las posibilidades de que se puedan filtrar por accidente los secretos. Al usar Key Vault, los desarrolladores de aplicaciones ya no necesitan almacenar información de seguridad en su aplicación. Esta práctica elimina la necesidad de almacenar esta información dentro del código. Por ejemplo, es posible que una aplicación tenga que conectarse a una base de datos. En lugar de almacenar la cadena de conexión en el código de la aplicación, puede almacenarla de forma segura en Key Vault.

Las aplicaciones pueden acceder de manera protegida a la información que necesitan a través de URI. Estos URI permiten que las aplicaciones recuperen versiones específicas de un secreto. No es necesario escribir código personalizado para proteger la información de secretos almacenada en Key Vault.

El acceso a Key Vault requiere una autenticación y autorización adecuadas del autor de la llamada. Normalmente, cada microservicio nativo de la nube usa una combinación ClientId/ClientSecret. Es importante mantener estas credenciales fuera del control de código fuente. Un procedimiento recomendado es establecerlos en el entorno de la aplicación. El acceso directo a Key Vault desde AKS se puede lograr mediante Key Vault FlexVolume.

Configuración en eShop

La aplicación eShopOnContainers incluye archivos de configuración de la aplicación local con cada microservicio. Estos archivos están protegidos en el control de código fuente, pero no incluyen secretos de producción, como cadenas de conexión o claves de API. En producción, la configuración individual se puede sobrescribir con variables de entorno específicas de cada servicio. La inserción de secretos en variables de entorno es una práctica habitual para las aplicaciones hospedadas, pero no proporciona un almacén de configuración central. Para admitir la administración centralizada de las opciones de configuración, cada microservicio incluye una configuración para alternar entre su uso de la configuración local o la configuración de Azure Key Vault.

Referencias