Compartir vía


Tutorial: Uso de referencias de Key Vault en una aplicación de ASP.NET Core

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

  1. Vaya a Azure Portal y seleccione Crear un recurso.

    Captura de pantalla de Azure Portal. En Los servicios de Azure, se resalta crear un recurso y se muestran los iconos de varios tipos de recursos.

  2. En el cuadro de búsqueda, escriba Key Vault. En la lista de resultados, seleccione Key Vault.

  3. En la página Key Vault , seleccione Crear.

  4. 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.
  5. Para las otras opciones, use los valores predeterminados.

  6. Selecciona Revisar + crear.

  7. 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".

  1. En el menú de recursos de Key Vault, seleccione Secretos de objetos>.

  2. Seleccione Generar o importar.

  3. 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.
  4. Para las otras opciones, use los valores predeterminados.

  5. Seleccione Crear.

Incorporación de una referencia de Key Vault a App Configuration

  1. 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.

  2. Seleccione Explorador de configuración.

  3. 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.

    Captura de pantalla del cuadro de diálogo para crear una referencia de Key Vault. Los campos Clave, Suscripción, Grupo de recursos, Key Vault y Secreto se rellenan.

Actualización del código para usar una referencia de Key Vault

  1. Vaya a la carpeta que contiene el proyecto de aplicación web de ASP.NET Core que creó en el inicio rápido.

  2. En el símbolo del sistema, ejecute el siguiente comando. Este comando agrega la referencia del Azure.Identity paquete NuGet al archivo del proyecto o la actualiza.

    dotnet add package Azure.Identity
    
  3. Abra Program.cs. En la sección de directiva using, agregue la siguiente línea para importar tipos desde el espacio de nombres Azure.Identity:

    using Azure.Identity;
    
  4. En Program.cs, reemplace la llamada al AddAzureAppConfiguration método por la llamada en el código siguiente. La llamada actualizada incluye la ConfigureKeyVault opción . Esta opción usa el método SetCredential para 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 Register o SetSecretResolver de la clase AzureAppConfigurationKeyVaultOptions.

  5. 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:KeyVaultMessage de Key Vault de la misma manera que accede al valor de configuración de TestApp: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

  1. Para compilar la aplicación mediante la CLI de .NET, ejecute el siguiente comando en un símbolo del sistema:

    dotnet build
    
  2. Una vez finalizada la compilación, use el siguiente comando para ejecutar la aplicación web localmente:

    dotnet run
    
  3. En la salida del comando dotnet run, busque una dirección URL en la que está escuchando la aplicación web, como http://localhost:5292. Abra un explorador y vaya a esa dirección URL.

    Recorte de pantalla de un navegador abierto en localhost:5292. El texto de la página indica Datos de Azure App Configuration y Hola desde Key Vault.

    El texto de la página web incluye los siguientes componentes:

    • Valor asociado con la clave TestApp:Settings:Message en el almacén de App Configuration
    • El valor del secreto Mensaje almacenado en el almacén de claves

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.

  1. Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
  2. En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
  3. En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
  4. Seleccione Eliminar grupo de recursos.
  5. 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.

Pasos siguientes