Si eres nuevo en el desarrollo, tal vez tengas la curiosidad sobre cómo administrar sus datos confidenciales, como cadenas de conexiones, claves API. Nunca almacene contraseñas u otros datos confidenciales en el código fuente. En esta publicación nos centraremos en nuestros «apps secrets» en el entorno de desarrollo, en la próxima publicación le mostraré cómo administrar sus apps secrets de producción con Azure Key Vault. 

Variables de Entorno

Las variables de entorno se utilizan para almacenar los secretos de su aplicación en código o archivos de configuración local. Las variables de entorno cambian los valores de todas las fuentes de configuración especificadas anteriormente. Un ejmplo clásico es una aplicación web ASP.NET Core en la que seleccionamos los parámetros mostrados a continuación:

 

  • La seguridad de las cuenta: Individual User accounts debe habilitarse como se muestra cuando está en la creación de su proyecto.

 

 

En el momento de la creación de este proyecto se incluye una cadena de conexión de base de datos predeterminada en el archivo appsetting.json del proyecto con el nombre de DefaultConnection. Esta cadena es parala conexión local, que se ejecuta en modo de usuario y no requiere contraseña. Durante la implementación de la aplicación, el valor de la clave se puede reemplazar con el valor de una variable de entorno. La variable de entorno puede almacenar la cadena de conexión completa con sus credenciales.

 

En ese caso, te tenemos cubierto con una herramienta super útil y fácil de implementar para comenzar a guardar los secretos de nuestra aplicación en desarrollo, Secret manager.

 

Secret Manager

 

La herramienta Secret Manager almacena datos confidenciales durante el desarrollo de un proyecto ASP.NET Core. En este contexto, un dato sensible es un apps secrets de aplicación. Los apps secrets de la aplicación se almacenan en una ubicación separada del árbol del proyecto. Los apps secrets de la aplicación están asociados con un proyecto específico o se comparten entre varios proyectos.

 

Habilitar el Secret Manager

La herramienta de administrador secretos o «secret manager» opera en un ajuste específico del proyecto almacenado en su perfil de usuario. Para usar secretos de usuario, ejecute el siguiente comando en el directorio del proyecto:

dotnet user-secrets init

Este comando agrega un UserSecretId a su archivo de proyecto. Ahora, establecer un secreto es bastante fácil, solo necesita ejecutar el siguiente comando:

 

Con valores un poco mas reales debería verse algo parecido a esto:

 

En realidad esta estructura corresponde a la traducción de como se vería en un archivo JSON que en resumen se veria de la siguiente manera:

Para acceder a tus app secrets tienes distintas formas de hacerlo segun tus necesidades a qui te mostraré una forma simple de hacerlo y configurarlo. puedes seguir los siguientes pasos:

1. Configuración de app secrets

Agrega a tu configuration source tus app secrets explícitamente llamando a AddUserSecrets en ConfigureAppConfiguration como se muestra en el siguiente ejemplo:

2. Leer tus secrets en el Configuration API

Si ltu configuration source de app secrets está registrada, la API de configuración de .NET puede leer los app secrets. La inyección de constructor se puede utilizar para obtener acceso a la API de configuración de .NET. Toma como referencia este ejemplo con Unicorn: ServiceApiKey:

Hay otras formas de obtener y usar los app secrets en tu aplicación , no nos vamos a centrar en todas, quería mostrarle la forma más fácil de configurar los app secrets de tu app en el entorno de desarrollo. La próxima vez, te mostraré como asegurar app secrets para el entorno de producción.

Referencias: