Guía de inicio rápido: Establecimiento y recuperación de un secreto de Azure Key Vault mediante una aplicación web de .NETQuickstart: Set and retrieve a secret from Azure Key Vault by using a .NET web app

En esta guía de inicio rápido, siga los pasos necesarios para conseguir que una aplicación web de Azure lea información de Azure Key Vault mediante identidades administradas para recursos de Azure.In this quickstart, you follow the necessary steps for getting an Azure web application to read information from Azure Key Vault by using managed identities for Azure resources. Aprenderá a:You learn how to:

  • Cree un almacén de claves.Create a key vault.
  • Almacenar un secreto en el almacén de claves.Store a secret in the key vault.
  • Recuperar un secreto del almacén de claves.Retrieve a secret from the key vault.
  • Crear una aplicación web de Azure.Create an Azure web application.
  • Habilite una identidad de servicio administrada para la aplicación web.Enable a managed service identity for the web app.
  • Conceder los permisos necesarios para que la aplicación web lea datos del almacén de claves.Grant the required permissions for the web application to read data from the key vault.

Antes de que sigamos avanzando, conozca los conceptos básicos.Before we go any further, please read the basic concepts.

Nota

Key Vault es un repositorio central para almacenar secretos mediante programación.Key Vault is a central repository to store secrets programmatically. Pero para poder hacer esto, las aplicaciones y los usuarios tienen primero que autenticarse en Key Vault, es decir, presentar un secreto.But to do so, applications and users need to first authenticate to Key Vault--that is, present a secret. Para seguir los procedimientos recomendados de seguridad debe cambiar este secreto periódicamente.To follow security best practices, this first secret needs to be rotated periodically.

Con las identidades de servicio administradas para recursos de Azure, a las aplicaciones que se ejecutan en Azure se les asigna una identidad que Azure administra automáticamente.With managed service identities for Azure resources, applications that run in Azure are given an identity that Azure manages automatically. Esto ayuda a solucionar el problema de introducción de secretos por el que los usuarios o aplicaciones pueden seguir procedimientos recomendados y no tener que preocuparse por el cambio del primer secreto.This helps solve the secret introduction problem so that users and applications can follow best practices and not have to worry about rotating the first secret.

Requisitos previosPrerequisites

Inicio de sesión en AzureLog in to Azure

Para iniciar sesión en Azure mediante la CLI de Azure, escriba:To log in to Azure by using the Azure CLI, enter:

az login

Crear un grupo de recursosCreate a resource group

Cree un grupo de recursos con el comando az group create.Create a resource group by using the az group create command. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure.An Azure resource group is a logical container into which Azure resources are deployed and managed.

Seleccione el nombre de un grupo de recursos y rellene el marcador de posición.Select a resource group name and fill in the placeholder. En el siguiente ejemplo, se crea un grupo de recursos en la ubicación Este de EE. UU:The following example creates a resource group in the East US location:

# To list locations: az account list-locations --output table
az group create --name "<YourResourceGroupName>" --location "East US"

El grupo de recursos que acaba de crear se utiliza en todo este artículo.The resource group that you just created is used throughout this article.

Creación de un Almacén de clavesCreate a key vault

A continuación, creará un almacén de claves en el grupo de recursos creado en el paso anterior.Next you create a key vault in the resource group that you created in the previous step. Proporcione la siguiente información:Provide the following information:

  • Nombre del almacén de claves: el nombre debe ser una cadena de 3 a 24 caracteres y solo puede incluir alguno de estos caracteres: 0-9, a-z, A-Z y "-".Key vault name: The name must be a string of 3-24 characters and must contain only (0-9, a-z, A-Z, and -).
  • Nombre del grupo de recursos.Resource group name.
  • Ubicación: Este de EE. UU.Location: East US.
az keyvault create --name "<YourKeyVaultName>" --resource-group "<YourResourceGroupName>" --location "East US"

En este momento, su cuenta de Azure es la única autorizada para realizar operaciones en este nuevo almacén.At this point, your Azure account is the only one that's authorized to perform any operations on this new vault.

Incorporación de un secreto al almacén de clavesAdd a secret to the key vault

Estamos agregando un secreto para ayudar a ilustrar cómo funciona.We're adding a secret to help illustrate how this works. Se puede almacenar una cadena de conexión de SQL o cualquier otra información que necesite guardar de forma segura, pero que esté disponibles para la aplicación.You might be storing a SQL connection string or any other information that you need to keep securely but make available to your application.

Escriba los siguientes comandos para crear un secreto en el almacén de claves denominado AppSecret.Type the following commands to create a secret in the key vault called AppSecret. Este secreto almacenará el valor MySecret.This secret will store the value MySecret.

az keyvault secret set --vault-name "<YourKeyVaultName>" --name "AppSecret" --value "MySecret"

Para ver el valor contenido en el secreto como texto sin formato:To view the value contained in the secret as plain text:

az keyvault secret show --name "AppSecret" --vault-name "<YourKeyVaultName>"

Este comando muestra la información secreta, URI incluido.This command shows the secret information, including the URI. Después de completar estos pasos debe tener un identificador URI para un secreto en un almacén de claves.After you complete these steps, you should have a URI to a secret in a key vault. Tome nota de esta información.Make note of this information. La necesitará en otro paso más adelante.You'll need it in a later step.

Clonación del repositorioClone the repo

Clone el repositorio para hacer una copia local en la que pueda editar el origen.Clone the repo to make a local copy where you can edit the source. Ejecute el siguiente comando:Run the following command:

git clone https://github.com/Azure-Samples/key-vault-dotnet-core-quickstart.git

Apertura y edición de la soluciónOpen and edit the solution

Edite el archivo program.cs para ejecutar el ejemplo con su nombre del almacén de claves específico:Edit the program.cs file to run the sample with your specific key vault name:

  1. Vaya a la carpeta key-vault-dotnet-core-quickstart.Browse to the folder key-vault-dotnet-core-quickstart.
  2. Abra el archivo key-vault-dotnet-core-quickstart.sln en Visual Studio 2017.Open the key-vault-dotnet-core-quickstart.sln file in Visual Studio 2017.
  3. Abra el archivo Program.cs y actualice el marcador de posición YourKeyVaultName con el nombre del almacén de claves que creó anteriormente.Open the Program.cs file and update the placeholder YourKeyVaultName with the name of your key vault that you created earlier.

Esta solución usa las bibliotecas de NuGet AppAuthentication y KeyVault.This solution uses AppAuthentication and KeyVault NuGet libraries.

Ejecución de la aplicaciónRun the app

En el menú principal de Visual Studio 2017, elija Depurar > Iniciar sin depurar.From the main menu of Visual Studio 2017, select Debug > Start without debugging. Cuando aparezca el explorador, vaya a la página Acerca de.When the browser appears, go to the About page. Aparecerá el valor de AppSecret.The value for AppSecret is displayed.

Publicación de la aplicación web en AzurePublish the web application to Azure

Publique esta aplicación en Azure para verla en vivo como una aplicación web y para ver también que puede capturar el valor del secreto:Publish this app to Azure to see it live as a web app, and to see that you can fetch the secret value:

  1. En Visual Studio, seleccione el proyecto key-vault-dotnet-core-quickstart.In Visual Studio, select the key-vault-dotnet-core-quickstart project.
  2. Seleccione Publicar > Iniciar.Select Publish > Start.
  3. Cree una nueva instancia de App Service y seleccione Publicar.Create a new App Service, and then select Publish.
  4. Cambie el nombre de la aplicación a keyvaultdotnetcorequickstart.Change the app name to keyvaultdotnetcorequickstart.
  5. Seleccione Crear.Select Create.

Habilitación de una identidad administrada para la aplicación webEnable a managed identity for the web app

Azure Key Vault proporciona una manera de almacenar de forma segura las credenciales y otras claves y secretos, pero el código tiene que autenticarse en Key Vault para recuperarlos.Azure Key Vault provides a way to securely store credentials and other keys and secrets, but your code needs to authenticate to Key Vault to retrieve them. En ¿Qué es Managed Identities for Azure Resources? se facilita la resolución de este problema, al ofrecer a los servicios de Azure una identidad administrada automáticamente en Azure Active Directory (Azure AD).Managed identities for Azure resources overview makes solving this problem simpler, by giving Azure services an automatically managed identity in Azure Active Directory (Azure AD). Puede usar esta identidad para autenticar cualquier servicio que admita la autenticación de Azure AD, incluido Key Vault, sin necesidad de tener credenciales en el código.You can use this identity to authenticate to any service that supports Azure AD authentication, including Key Vault, without having any credentials in your code.

  1. Vuelva a la CLI de Azure.Return to the Azure CLI.
  2. Ejecute el comando assign-identity para crear la identidad de esta aplicación:Run the assign-identity command to create the identity for this application:

    az webapp identity assign --name "keyvaultdotnetcorequickstart" --resource-group "<YourResourceGroupName>"
    

Nota

El comando de este procedimiento equivale a ir al portal y cambiar la configuración de Identidad o sistema asignados a Activada en las propiedades de la aplicación web.The command in this procedure is the equivalent of going to the portal and switching the Identity / System assigned setting to On in the web application properties.

Asignación de permisos a una aplicación para leer secretos de Key VaultAssign permissions to your application to read secrets from Key Vault

Tome nota de la salida cuando publique la aplicación en Azure.Make a note of the output when you publish the application to Azure. Debe tener el formato:It should be of the format:

    {
      "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "type": "SystemAssigned"
    }

Luego, ejecute este comando con el nombre del almacén de claves y el valor de PrincipalId:Then, run this command by using the name of your key vault and the value of PrincipalId:


az keyvault set-policy --name '<YourKeyVaultName>' --object-id <PrincipalId> --secret-permissions get list

Ahora, cuando ejecute la aplicación debería ver el valor del secreto recuperado.Now when you run the application, you should see your secret value retrieved. En el comando anterior, otorga a la identidad (MSI) de App Service permisos para realizar operaciones get y list en Key Vault.In the above command you are giving the Identity(MSI) of the App Service permissions to do get and list operations on your Key Vault

Pasos siguientesNext steps