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 este 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 steps for getting an Azure web application to read information from Azure Key Vault by using managed identities for Azure resources. El uso de Key Vault le ayuda a proteger la información.Using Key Vault helps keep the information secure. 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 seguir, conozca los conceptos básicos de Key Vault.Before we go any further, please read the basic concepts for Key Vault.

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.In keeping with security best practices, this first secret needs to be rotated periodically.

Con las identidades de servicio administradas para recursos de Azure, las aplicaciones que se ejecutan en Azure obtienen una identidad que Azure administra automáticamente.With managed service identities for Azure resources, applications that run in Azure get 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.

Apertura de Azure Cloud ShellOpen Azure Cloud Shell

Azure Cloud Shell es un shell interactivo gratuito que puede usar para ejecutar los pasos de este artículo.Azure Cloud Shell is a free, interactive shell that you can use to run the steps in this article. Cloud Shell incluye herramientas comunes de Azure preinstaladas y configuradas para que las use con su cuenta.Common Azure tools are preinstalled and configured in Cloud Shell for you to use with your account. Seleccione Copiar para copiar el código, péguelo en Cloud Shell y presione Entrar para ejecutarlo.Select Copy to copy the code, paste it in Cloud Shell, and then press Enter to run it. Existen varias maneras de abrir Cloud Shell:There are a few ways to open Cloud Shell:

Seleccione Probarlo en la esquina superior derecha de un bloque de código.Select Try It in the upper-right corner of a code block. Ejemplo de Probarlo para Azure Cloud Shell
Abra Cloud Shell en el explorador.Open Cloud Shell in your browser. Botón Iniciar Cloud ShellLaunch Azure Cloud Shell button
Seleccione el botón Cloud Shell en el menú de la esquina superior derecha de Azure Portal.Select the Cloud Shell button on the menu in the upper-right corner of the Azure portal. Botón Cloud Shell en Azure Portal

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 entre 3 y 24 caracteres, y solo debe contener estos caracteres: 0-9, a-z, A-Z y un guion (-).Key vault name: The name must be a string of 3-24 characters and must contain only 0-9, a-z, A-Z, and a hyphen (-).
  • 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 the 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.

En la CLI de Azure, ejecute el comando assign-identity para crear la identidad de esta aplicación:In the Azure CLI, 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 de App Service los permisos para realizar operaciones get y list en su almacén de claves.In the preceding command, you're giving the identity of the app service permissions to do get and list operations on your key vault.

Limpieza de recursosClean up resources

Elimine el grupo de recursos, la máquina virtual y todos los recursos relacionados Cuando ya no los necesite.Delete the resource group, virtual machine, and all related resources when you no longer need them. Para ello, seleccione el grupo de recursos de la máquina virtual y seleccione Eliminar.To do so, select the resource group for the VM and select Delete.

Elimine el almacén de claves mediante el comando az keyvault delete:Delete the key vault by using the az keyvault delete command:

az keyvault delete --name
                   [--resource-group]
                   [--subscription]

Pasos siguientesNext steps