Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial, usará el servicio Azure App Configuration junto con Azure Key Vault. App Configuration y Key Vault son servicios complementarios que se usan de forma conjunta en la mayoría de las implementaciones de aplicaciones.
La aplicación puede usar el proveedor de cliente de App Configuration para recuperar las referencias de Key Vault, igual que para cualquier otra clave almacenada en App Configuration. Al agregar una referencia de Key Vault a App Configuration, App Configuration crea una clave que hace referencia al valor almacenado en Key Vault. El valor que almacena App Configuration no es un valor ni una credencial de Key Vault. En su lugar, es un URI que hace referencia al valor en Key Vault. Dado que el proveedor de cliente reconoce la clave como referencia de Key Vault, usa Key Vault para recuperar su valor.
La aplicación es responsable de autenticarse correctamente en App Configuration y en Key Vault. Los dos servicios no se comunican directamente.
En este tutorial se muestra cómo se implementan las referencias de Key Vault en el código. Se basa en la aplicación web introducida en el inicio rápido de ASP.NET Core indicado en los requisitos previos. Antes de continuar, complete ese inicio rápido.
Para realizar los pasos de este tutorial, puede usar cualquier editor de código. Por ejemplo, Visual Studio Code es un editor de código multiplataforma que está disponible para los sistemas operativos Windows, macOS y Linux.
En este tutorial, usted hará lo siguiente:
- Crear una clave de App Configuration que hace referencia a un valor almacenado en Key Vault.
- Acceder al valor de esta clave desde una aplicación web de ASP.NET Core.
Requisitos previos
Complete la guía rápida Creación de una aplicación ASP.NET Core con App Configuration.
Crear una bóveda de claves
Vaya a Azure Portal y seleccione Crear un recurso.
En el cuadro de búsqueda, escriba Key Vault. En la lista de resultados, seleccione Key Vault.
En la página Key Vault , seleccione Crear.
En la página Crear un almacén de claves , escriba la siguiente información:
- En Suscripción: seleccione una suscripción.
- En Grupo de recursos: escriba el nombre de un grupo de recursos existente o seleccione Crear nuevo y escriba un nombre de grupo de recursos.
- En Nombre del almacén de claves: escriba un nombre único.
- En Región: seleccione una ubicación.
Para las otras opciones, use los valores predeterminados.
Selecciona Revisar + crear.
Una vez que el sistema valide y muestre las entradas, seleccione Crear.
En este momento, su cuenta de Azure es la única autorizada para acceder a este nuevo almacén.
Incorporación de un secreto a Key Vault
Para probar la recuperación de Key Vault en la aplicación, agregue primero un secreto al almacén mediante estos pasos. El secreto que agrega se denomina Message y su valor es "Hello from Key Vault".
En el menú de recursos de Key Vault, seleccione Secretos de objetos>.
Seleccione Generar o importar.
En el cuadro de diálogo Crear un secreto , escriba los valores siguientes:
- En Opciones de carga: escriba Manual.
- En Nombre: escriba el mensaje.
- En Valor secreto: escriba Hola desde Key Vault.
Para las otras opciones, use los valores predeterminados.
Seleccione Crear.
Incorporación de una referencia de Key Vault a App Configuration
Inicie sesión en Azure Portal. Seleccione Todos los recursos y, a continuación, seleccione el almacén de App Configuration que cree en el inicio rápido.
Seleccione Explorador de configuración.
Seleccione Crear>referencia de Key Vault y, a continuación, escriba los valores siguientes:
- En Clave: escriba TestApp:Settings:KeyVaultMessage.
- En Etiqueta: deje el valor en blanco.
- En Suscripción, grupo de recursos y Key Vault: escriba los valores que se usan al crear el almacén de claves anteriormente en este tutorial.
- En Secreto: seleccione el secreto denominado Message que creó en la sección anterior.
Actualización del código para usar una referencia de Key Vault
Vaya a la carpeta que contiene el proyecto de aplicación web de ASP.NET Core que creó en el inicio rápido.
En el símbolo del sistema, ejecute el siguiente comando. Este comando agrega la referencia del
Azure.Identitypaquete NuGet al archivo del proyecto o la actualiza.dotnet add package Azure.IdentityAbra Program.cs. En la sección de directiva
using, agregue la siguiente línea para importar tipos desde el espacio de nombresAzure.Identity:using Azure.Identity;En Program.cs, reemplace la llamada al
AddAzureAppConfigurationmétodo por la llamada en el código siguiente. La llamada actualizada incluye laConfigureKeyVaultopción . Esta opción usa el métodoSetCredentialpara pasar las credenciales necesarias para autenticarse con la bóveda de claves.var builder = WebApplication.CreateBuilder(args); // Retrieve the App Configuration endpoint. string endpoint = builder.Configuration.GetValue<string>("Endpoints:AppConfiguration") // Load the configuration from App Configuration. builder.Configuration.AddAzureAppConfiguration(options => { options.Connect(new Uri(endpoint), new DefaultAzureCredential()); options.ConfigureKeyVault(keyVaultOptions => { keyVaultOptions.SetCredential(new DefaultAzureCredential()); }); });Sugerencia
Si tiene varios almacenes de claves, el sistema usa la misma credencial para todos ellos. Si los almacenes de claves requieren credenciales diferentes, puede establecerlas usando los métodos
RegisteroSetSecretResolverde la claseAzureAppConfigurationKeyVaultOptions.Para acceder a los valores de las referencias de Key Vault en el código, vaya a la carpeta Pages del proyecto. Abra Index.cshtml y reemplace su contenido por el código siguiente. El código del bloque anterior inicializa la conexión de App Configuration y configura la conexión de Key Vault. Como resultado, en Index.cshtml, puede acceder a los valores de las referencias de Key Vault de la misma manera que accede a los valores de las claves normales de la configuración de la aplicación.
@page @using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <style> body { background-color: @Configuration["TestApp:Settings:BackgroundColor"] } h1 { color: @Configuration["TestApp:Settings:FontColor"]; font-size: @Configuration["TestApp:Settings:FontSize"]px; } </style> <h1>@Configuration["TestApp:Settings:Message"] and @Configuration["TestApp:Settings:KeyVaultMessage"]</h1>Este código tiene acceso al valor de la referencia
TestApp:Settings:KeyVaultMessagede Key Vault de la misma manera que accede al valor de configuración deTestApp:Settings:Message.
Concesión a la aplicación de acceso a Key Vault
App Configuration no accede al almacén de claves. En su lugar, la aplicación lee directamente del almacén de claves, por lo que debe conceder a la aplicación acceso a los secretos del almacén de claves. De este modo, los secretos siempre permanecen con la aplicación. Puede usar una directiva de acceso de Key Vault o un control de acceso basado en rol de Azure para conceder el acceso.
El código de este tutorial usa la clase DefaultAzureCredential para la autenticación. Esta credencial de token agregada intenta automáticamente varios tipos de credenciales, como EnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredentialy VisualStudioCredential. Para obtener más información, vea DefaultAzureCredential (Clase).
Puede reemplazar por DefaultAzureCredential cualquier tipo de credencial explícito. Sin embargo, cuando se usa DefaultAzureCredential, el código se puede ejecutar en entornos locales y de Azure. Por ejemplo, cuando la aplicación se ejecuta en Azure, DefaultAzureCredential usa ManagedIdentityCredential. Pero cuando se usa Visual Studio para el desarrollo local, DefaultAzureCredential vuelve automáticamente a SharedTokenCacheCredential o VisualStudioCredential.
Como alternativa, puede establecer las AZURE_TENANT_IDvariables de entorno , AZURE_CLIENT_IDy AZURE_CLIENT_SECRET . Cuando lo haga, DefaultAzureCredential usa estas variables y EnvironmentCredential para autenticarse con el almacén de claves.
Después de implementar la aplicación en un servicio de Azure con una identidad administrada habilitada, como Azure App Service, Azure Kubernetes Service o Azure Container Instance, se le otorgan permisos a la identidad administrada del servicio de Azure para acceder a su almacén de claves.
DefaultAzureCredential usa automáticamente ManagedIdentityCredential cuando la aplicación se ejecuta en Azure. Puede usar la misma identidad administrada para autenticarse con App Configuration y Key Vault. Para más información, consulte Uso de identidades administradas para acceder a App Configuration.
Compilación y ejecución de la aplicación en un entorno local
Para compilar la aplicación mediante la CLI de .NET, ejecute el siguiente comando en un símbolo del sistema:
dotnet buildUna vez finalizada la compilación, use el siguiente comando para ejecutar la aplicación web localmente:
dotnet runEn la salida del comando
dotnet run, busque una dirección URL en la que está escuchando la aplicación web, comohttp://localhost:5292. Abra un explorador y vaya a esa dirección URL.
El texto de la página web incluye los siguientes componentes:
- Valor asociado con la clave
TestApp:Settings:Messageen el almacén de App Configuration - El valor del secreto Mensaje almacenado en el almacén de claves
- Valor asociado con la clave
Limpieza de recursos
Si no quiere seguir usando los recursos que se han creado en este artículo, elimine el grupo de recursos se que ha creado con el fin de evitar cargos.
Importante
La eliminación de un grupo de recursos es irreversible. El grupo de recursos y todos los recursos que contiene se eliminan permanentemente. Asegúrese de no eliminar accidentalmente el grupo de recursos o los recursos equivocados. Si creó los recursos para este artículo en un grupo de recursos que contenga los recursos que desee conservar, elimine cada recurso de forma individual desde su panel respectivo, en lugar de eliminar el grupo de recursos.
- Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
- En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
- En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
- Seleccione Eliminar grupo de recursos.
- Se le pedirá que confirme la eliminación del grupo de recursos. Escriba el nombre del grupo de recursos para confirmar y seleccione Eliminar.
Transcurridos unos instantes, el grupo de recursos y todos sus recursos se eliminan.