Compartir a través de


Configuración centralizada

Sugerencia

Este contenido es un extracto del libro electrónico “Architecting Cloud Native .NET Applications for Azure” (Diseño de la arquitectura de aplicaciones .NET nativas en la nube para Azure), disponible en Documentos de .NET o como un PDF descargable y gratuito que se puede leer sin conexión.

Cloud Native .NET apps for Azure eBook cover thumbnail.

A diferencia de una aplicación monolítica en la que todo se ejecuta dentro de una sola instancia, una aplicación nativa de nube consta de servicios independientes distribuidos entre máquinas virtuales, contenedores y regiones geográficas. La administración de la configuración de docenas de servicios interdependientes puede ser difícil. Las copias duplicadas de las opciones de 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 aplicaciones de doce factores requieren una separación estricta entre el código y la configuración. La configuración debe almacenarse externamente desde la aplicación y leerse cuando sea necesario. Almacenar valores de configuración como constantes o valores literales en el código constituye una infracción. Muchos servicios de la misma aplicación suelen usar 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

Azure App Configuration es un servicio de Azure totalmente administrado que almacena opciones de configuración sin 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:

  • Asignaciones y representaciones 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 en caché automáticamente cada configuración para evitar llamadas excesivas al almacén de configuración. La operación de actualización espera hasta que el valor de una opción almacenada en la caché expira y, después, actualiza ese valor, incluso aunque este haya cambiado ya en el almacén de configuración. El tiempo de expiración predeterminado de la memoria caché 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 los datos de configuración y no se cifran.

Aunque App Configuration proporciona seguridad reforzada, 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 una instancia de Key Vault.

Azure Key Vault

Key Vault es un servicio administrado para almacenar secretos y acceder a ellos de forma segura. Un secreto es todo aquello a lo cual se desea controlar estrechamente el acceso, como certificados, contraseñas o claves de API. 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. Cuando usan Key Vault, los desarrolladores de aplicaciones ya no tienen que almacenar la 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, puede que una aplicación necesite 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 la autenticación y autorización adecuadas del autor de la llamada. Normalmente, cada microservicio nativo de nube usa una combinación ClientId/ClientSecret. Es importante mantener estas credenciales fuera del control del código fuente. Un procedimiento recomendado es establecerlas 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 local de la aplicación con cada microservicio. Estos archivos se insertan 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 por servicio. La inserción de secretos en variables de entorno es una práctica habitual en 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