Tutorial: Protección de la conexión con Azure SQL Database desde App Service mediante una identidad administradaTutorial: Secure Azure SQL Database connection from App Service using a managed identity

App Service proporciona un servicio de hospedaje web muy escalable y con aplicación de revisiones de un modo automático en Azure.App Service provides a highly scalable, self-patching web hosting service in Azure. También proporciona una identidad administrada para la aplicación, la cual constituye una solución inmediata para proteger el acceso a Azure SQL Database y a otros servicios de Azure.It also provides a managed identity for your app, which is a turn-key solution for securing access to Azure SQL Database and other Azure services. Las identidades administradas de App Service hacen que su aplicación sea más segura mediante la eliminación de los secretos de aplicación como, por ejemplo, las credenciales en las cadenas de conexión.Managed identities in App Service make your app more secure by eliminating secrets from your app, such as credentials in the connection strings. En este tutorial, agregará una identidad administrada a la aplicación web de ejemplo que se creó en los tutoriales siguientes:In this tutorial, you will add managed identity to the sample web app you built in one of the following tutorials:

Cuando haya terminado, la aplicación de ejemplo se conectará a SQL Database de forma segura sin necesidad de nombres de usuario ni contraseñas.When you're finished, your sample app will connect to SQL Database securely without the need of username and passwords.

Nota

Los pasos descritos en este tutorial son compatibles con las siguientes versiones:The steps covered in this tutorial support the following versions:

  • .NET Framework 4.7.2 y versiones posteriores..NET Framework 4.7.2 and above
  • .NET Core 2.2 y versiones posteriores..NET Core 2.2 and above

Lo qué aprenderá:What you will learn:

  • Habilitar identidades administradasEnable managed identities
  • Conceder a SQL Database acceso a la identidad administradaGrant SQL Database access to the managed identity
  • Configurar Entity Framework para utilizar la autenticación de Azure AD con SQL DatabaseConfigure Entity Framework to use Azure AD authentication with SQL Database
  • Conectarse a SQL Database desde Visual Studio mediante la autenticación de Azure ADConnect to SQL Database from Visual Studio using Azure AD authentication

Nota

La autenticación de Azure AD es distinta de la autenticación integrada de Windows en Active Directory (AD DS) local.Azure AD authentication is different from Integrated Windows authentication in on-premises Active Directory (AD DS). AD DS y Azure AD utilizan protocolos de autenticación completamente diferentes.AD DS and Azure AD use completely different authentication protocols. Para más información, consulte Documentación de Azure AD Domain Services.For more information, see Azure AD Domain Services documentation.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.If you don't have an Azure subscription, create a free account before you begin.

PrerrequisitosPrerequisites

Este artículo continúa donde lo dejó en Tutorial: Creación de una aplicación ASP.NET en Azure con SQL Database o Tutorial: Compilación de una aplicación ASP.NET Core y SQL Database en Azure App Service.This article continues where you left off in Tutorial: Build an ASP.NET app in Azure with SQL Database or Tutorial: Build an ASP.NET Core and SQL Database app in Azure App Service. Si aún no lo ha hecho, siga uno de los dos tutoriales en primer lugar.If you haven't already, follow one of the two tutorials first. Como alternativa, puede adaptar los pasos para su propia aplicación .NET con SQL Database.Alternatively, you can adapt the steps for your own .NET app with SQL Database.

Para depurar la aplicación con SQL Database como back-end, asegúrese de permitir la conexión de cliente desde el equipo.To debug your app using SQL Database as the back end, make sure that you've allowed client connection from your computer. Si no es así, agregue la dirección IP del cliente siguiendo los pasos que se describen en Administración de reglas de firewall de nivel de servidor mediante Azure Portal.If not, add the client IP by following the steps at Manage server-level IP firewall rules using the Azure portal.

Uso de Azure Cloud ShellUse Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Para iniciar Azure Cloud Shell:To start Azure Cloud Shell:

OpciónOption Ejemplo o vínculoExample/Link
Seleccione Pruébelo en la esquina superior derecha de un bloque de código.Select Try It in the upper-right corner of a code block. Solo con seleccionar Pruébelo no se copia automáticamente el código en Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Ejemplo de Probarlo para Azure Cloud Shell
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell en una nueva ventanaLaunch Cloud Shell in a new window
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Botón Cloud Shell en Azure Portal

Para ejecutar el código de este artículo en Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Inicie Cloud Shell.Start Cloud Shell.

  2. Seleccione el botón Copiar de un bloque de código para copiar el código.Select the Copy button on a code block to copy the code.

  3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Seleccione Entrar para ejecutar el código.Select Enter to run the code.

Concesión del acceso a la base de datos a un usuario de Azure ADGrant database access to Azure AD user

Primero debe habilitar la autenticación de Azure AD para SQL Database mediante la asignación de un usuario de Azure AD como administrador de Active Directory para el servidor de SQL Database.First enable Azure AD authentication to SQL Database by assigning an Azure AD user as the Active Directory admin of the SQL Database server. Este usuario no es la cuenta Microsoft que usó para suscribirse a Azure.This user is different from the Microsoft account you used to sign up for your Azure subscription. Debe ser un usuario que haya creado, importado, sincronizado o invitado en Azure AD.It must be a user that you created, imported, synced, or invited into Azure AD. Para más información sobre los usuarios de Azure AD permitidos, consulte las características de Azure AD y las limitaciones de en SQL Database.For more information on allowed Azure AD users, see Azure AD features and limitations in SQL Database.

Si el inquilino de Azure AD aún no tiene un usuario, cree uno siguiendo los pasos que se indican en Incorporación o eliminación de usuarios mediante Azure Active Directory.If your Azure AD tenant doesn't have a user yet, create one by following the steps at Add or delete users using Azure Active Directory.

Busque el identificador de objeto del usuario de Azure AD mediante az ad user list y reemplace <nombre-principal-de-usuario> .Find the object ID of the Azure AD user using the az ad user list and replace <user-principal-name>. El resultado se guardará en una variable.The result is saved to a variable.

azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)

Sugerencia

Para ver la lista de todos los nombres principales de usuario de Azure AD, ejecute az ad user list --query [].userPrincipalName.To see the list of all user principal names in Azure AD, run az ad user list --query [].userPrincipalName.

Agregue este usuario de Azure AD como administrador de Active Directory mediante el comando az sql server ad-admin create en Cloud Shell.Add this Azure AD user as an Active Directory admin using az sql server ad-admin create command in the Cloud Shell. En el siguiente comando, reemplace <nombre del servidor> con el nombre del servidor de SQL Database (sin el sufijo .database.windows.net).In the following command, replace <server-name> with the SQL Database server name (without the .database.windows.net suffix).

az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser

Para más información sobre cómo agregar un administrador de Active Directory, consulte Provision an Azure Active Directory administrator for your Azure SQL Database Server (Aprovisionamiento de un administrador de Azure Active Directory para el servidor de Azure SQL Database)For more information on adding an Active Directory admin, see Provision an Azure Active Directory administrator for your Azure SQL Database Server

Configuración de Visual StudioSet up Visual Studio

WindowsWindows

Visual Studio para Windows está integrado con la autenticación de Azure AD.Visual Studio for Windows is integrated with Azure AD authentication. Para habilitar el desarrollo y la depuración en Visual Studio, agregue el usuario de Azure AD en Visual Studio; para ello, seleccione Archivo > Configuración de la cuenta en el menú y haga clic en Agregar un cuenta.To enable development and debugging in Visual Studio, add your Azure AD user in Visual Studio by selecting File > Account Settings from the menu, and click Add an account.

Para establecer el usuario de Azure AD para la autenticación de servicio de Azure, seleccione Herramientas > Opciones en el menú y, después, Azure Service Authentication (Autenticación del servicio de Azure) > Selección de cuentas.To set the Azure AD user for Azure service authentication, select Tools > Options from the menu, then select Azure Service Authentication > Account Selection. Seleccione el usuario de Azure AD que agregó y haga clic en Aceptar.Select the Azure AD user you added and click OK.

Ahora está listo para desarrollar y depurar la aplicación con SQL Database como back-end y mediante la autenticación de Azure AD.You're now ready to develop and debug your app with the SQL Database as the back end, using Azure AD authentication.

MacOSMacOS

Visual Studio para Mac no está integrado con la autenticación de Azure AD.Visual Studio for Mac is not integrated with Azure AD authentication. No obstante, la biblioteca Microsoft.Azure.Services.AppAuthentication que utilizará más adelante puede usar tokens de la CLI de Azure.However, the Microsoft.Azure.Services.AppAuthentication library that you will use later can use tokens from Azure CLI. Para habilitar el desarrollo y la depuración en Visual Studio, primero debe instalar la CLI de Azure en la máquina local.To enable development and debugging in Visual Studio, first you need to install Azure CLI on your local machine.

Una vez que se haya instalado la CLI de Azure en la máquina local, inicie sesión en la CLI de Azure con el siguiente comando mediante el usuario de Azure AD:Once Azure CLI is installed on your local machine, sign in to Azure CLI with the following command using your Azure AD user:

az login --allow-no-subscriptions

Ahora está listo para desarrollar y depurar la aplicación con SQL Database como back-end y mediante la autenticación de Azure AD.You're now ready to develop and debug your app with the SQL Database as the back end, using Azure AD authentication.

Modificación del proyectoModify your project

Los pasos que se siguen para el proyecto dependen de si se trata de un proyecto de ASP.NET o de ASP.NET Core.The steps you follow for your project depends on whether it's an ASP.NET project or an ASP.NET Core project.

Modificación de ASP.NETModify ASP.NET

En Visual Studio, abra la consola del administrador de paquetes y agregue el paquete NuGet Microsoft.Azure.Services.AppAuthentication:In Visual Studio, open the Package Manager Console and add the NuGet package Microsoft.Azure.Services.AppAuthentication:

Install-Package Microsoft.Azure.Services.AppAuthentication -Version 1.4.0

En Web.config, desde el principio del archivo, realice los siguientes cambios:In Web.config, working from the top of the file and make the following changes:

  • En <configSections>, agregue la siguiente declaración de la sección:In <configSections>, add the following section declaration in it:

    <section name="SqlAuthenticationProviders" type="System.Data.SqlClient.SqlAuthenticationProviderConfigurationSection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    
  • Bajo la etiqueta de cierre </configSections>, agregue el siguiente código XML para <SqlAuthenticationProviders>.below the closing </configSections> tag, add the following XML code for <SqlAuthenticationProviders>.

    <SqlAuthenticationProviders>
      <providers>
        <add name="Active Directory Interactive" type="Microsoft.Azure.Services.AppAuthentication.SqlAppAuthenticationProvider, Microsoft.Azure.Services.AppAuthentication" />
      </providers>
    </SqlAuthenticationProviders>
    
  • Busque la cadena de conexión denominada MyDbConnection y reemplace su valor connectionString por "server=tcp:<server-name>.database.windows.net;database=<db-name>;UID=AnyString;Authentication=Active Directory Interactive".Find the connection string called MyDbConnection and replace its connectionString value with "server=tcp:<server-name>.database.windows.net;database=<db-name>;UID=AnyString;Authentication=Active Directory Interactive". Reemplace <nombre-del-servidor> y <nombre-de-la-base-de-datos> por el nombre del servidor y el de la base de datos.Replace <server-name> and <db-name> with your server name and database name.

Nota

La clase SqlAuthenticationProvider que acaba de registrar se basa en la biblioteca AppAuthentication que ha instalado antes.The SqlAuthenticationProvider you just registered is based on top of the AppAuthentication library you installed earlier. De forma predeterminada usa una identidad asignada por el sistema.By default, it uses a system-assigned identity. Para aprovechar una identidad asignada por el usuario, necesitará proporcionar una configuración adicional.To leverage a user-assigned identity, you will need to provide an additional configuration. Consulte Compatibilidad de la cadena de conexión para más información acerca de la biblioteca AppAuthentication.Please see connection string support for the AppAuthentication library.

Eso es todo lo que necesita para conectarse a SQL Database.That's every thing you need to connect to SQL Database. Al depurar en Visual Studio, el código utiliza el usuario de Azure AD que configuró en Configuración de Visual Studio.When debugging in Visual Studio, your code uses the Azure AD user you configured in Set up Visual Studio. Después, configurará el servidor de SQL Database para permitir la conexión desde la identidad administrada de la aplicación App Service.You'll set up the SQL Database server later to allow connection from the managed identity of your App Service app.

Escriba Ctrl+F5 para ejecutar la aplicación de nuevo.Type Ctrl+F5 to run the app again. Ahora, la misma aplicación CRUD del explorador se conectará a Azure SQL Database directamente con la autenticación de Azure AD.The same CRUD app in your browser is now connecting to the Azure SQL Database directly, using Azure AD authentication. Esta configuración permite ejecutar migraciones de base de datos desde Visual Studio.This setup lets you run database migrations from Visual Studio.

Modificación de ASP.NET CoreModify ASP.NET Core

En Visual Studio, abra la consola del administrador de paquetes y agregue el paquete NuGet Microsoft.Azure.Services.AppAuthentication:In Visual Studio, open the Package Manager Console and add the NuGet package Microsoft.Azure.Services.AppAuthentication:

Install-Package Microsoft.Azure.Services.AppAuthentication -Version 1.4.0

En el tutorial de ASP.NET Core y SQL Database, la cadena de conexión MyDbConnection no se usa porque el entorno de desarrollo local utiliza un archivo de base de datos de SQLite y el entorno de producción de Azure usa una cadena de conexión de App Service.In the ASP.NET Core and SQL Database tutorial, the MyDbConnection connection string isn't used at all because the local development environment uses a Sqlite database file, and the Azure production environment uses a connection string from App Service. Con la autenticación de Active Directory, es conveniente que ambos entornos usen la misma cadena de conexión.With Active Directory authentication, you want both environments to use the same connection string. En appsettings.json, reemplace el valor de la cadena de conexión MyDbConnection por:In appsettings.json, replace the value of the MyDbConnection connection string with:

"Server=tcp:<server-name>.database.windows.net,1433;Database=<database-name>;"

A continuación, proporcione el contexto de base de datos de Entity Framework con el token de acceso para la base de datos SQL Database.Next, you supply the Entity Framework database context with the access token for the SQL Database. En Data\MyDatabaseContext.cs, agregue el código siguiente dentro de las llaves del constructor MyDatabaseContext (DbContextOptions<MyDatabaseContext> options) vacío:In Data\MyDatabaseContext.cs, add the following code inside the curly braces of the empty MyDatabaseContext (DbContextOptions<MyDatabaseContext> options) constructor:

var conn = (Microsoft.Data.SqlClient.SqlConnection)Database.GetDbConnection();
conn.AccessToken = (new Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result;

Nota

Este código de demostración es sincrónico para mayor claridad y simplicidad.This demonstration code is synchronous for clarity and simplicity.

Eso es todo lo que necesita para conectarse a SQL Database.That's every thing you need to connect to SQL Database. Al depurar en Visual Studio, el código utiliza el usuario de Azure AD que configuró en Configuración de Visual Studio.When debugging in Visual Studio, your code uses the Azure AD user you configured in Set up Visual Studio. Después, configurará el servidor de SQL Database para permitir la conexión desde la identidad administrada de la aplicación App Service.You'll set up the SQL Database server later to allow connection from the managed identity of your App Service app. La AzureServiceTokenProvider clase almacena el token en la memoria y lo recupera de Azure AD justo antes de que expire.The AzureServiceTokenProvider class caches the token in memory and retrieves it from Azure AD just before expiration. Para actualizar el token no es necesario ningún código personalizado.You don't need any custom code to refresh the token.

Sugerencia

Si el usuario de Azure AD que ha configurado tiene acceso a varios inquilinos, llame a GetAccessTokenAsync("https://database.windows.net/", tenantid) con el identificador de inquilino que desee para recuperar el token de acceso adecuado.If the Azure AD user you configured has access to multiple tenants, call GetAccessTokenAsync("https://database.windows.net/", tenantid) with the desired tenant ID to retrieve the proper access token.

Escriba Ctrl+F5 para ejecutar la aplicación de nuevo.Type Ctrl+F5 to run the app again. Ahora, la misma aplicación CRUD del explorador se conectará a Azure SQL Database directamente con la autenticación de Azure AD.The same CRUD app in your browser is now connecting to the Azure SQL Database directly, using Azure AD authentication. Esta configuración permite ejecutar migraciones de base de datos desde Visual Studio.This setup lets you run database migrations from Visual Studio.

Uso de la conectividad de la identidad administradaUse managed identity connectivity

A continuación, configure la aplicación de App Service para conectarse a SQL Database con una identidad administrada asignada por el sistema.Next, you configure your App Service app to connect to SQL Database with a system-assigned managed identity.

Nota

Aunque las instrucciones de esta sección son para una identidad asignada por el sistema, es igual de fácil usar una identidad asignada por el usuario.While the instructions in this section are for a system-assigned identity, a user-assigned identity can just as easily be used. Para elloTo do this. necesitaría cambiar az webapp identity assign command para asignar la identidad asignada por el usuario deseada.you would need the change the az webapp identity assign command to assign the desired user-assigned identity. Luego, al crear el usuario de SQL, asegúrese de usar el nombre del recurso de la identidad asignada por el usuario, en lugar del nombre del sitio.Then, when creating the SQL user, make sure to use the name of the user-assigned identity resource rather than the site name.

Habilitación de la identidad administrada en la aplicaciónEnable managed identity on app

Para habilitar una identidad administrada para la aplicación de Azure, use el comando az webapp identity assign de Cloud Shell.To enable a managed identity for your Azure app, use the az webapp identity assign command in the Cloud Shell. En el siguiente comando, reemplace <nombre-de-la-aplicación> .In the following command, replace <app-name>.

az webapp identity assign --resource-group myResourceGroup --name <app-name>

Este es un ejemplo de la salida:Here's an example of the output:

{
  "additionalProperties": {},
  "principalId": "21dfa71c-9e6f-4d17-9e90-1d28801c9735",
  "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
  "type": "SystemAssigned"
}

Concesión de permisos a una identidad administradaGrant permissions to managed identity

Nota

Si lo desea, puede agregar la identidad a un grupo de Azure AD y, a continuación, conceder acceso a SQL Database al grupo de Azure AD en lugar de a la identidad.If you want, you can add the identity to an Azure AD group, then grant SQL Database access to the Azure AD group instead of the identity. Por ejemplo, los siguientes comandos agregan la identidad administrada del paso anterior a un nuevo grupo llamado myAzureSQLDBAccessGroup:For example, the following commands add the managed identity from the previous step to a new group called myAzureSQLDBAccessGroup:

groupid=$(az ad group create --display-name myAzureSQLDBAccessGroup --mail-nickname myAzureSQLDBAccessGroup --query objectId --output tsv)
msiobjectid=$(az webapp identity show --resource-group myResourceGroup --name <app-name> --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
az ad group member list -g $groupid

En Cloud Shell, inicie sesión en SQL Database mediante el comando SQLCMD.In the Cloud Shell, sign in to SQL Database by using the SQLCMD command. Reemplace <nombre-del-servidor> por su nombre de servidor de SQL Database, <nombre-de-la-base-de-datos> por el nombre de la base de datos que utiliza la aplicación y <nombre-de-usuario-de-aad> y <contraseña-de-aad> por las credenciales de usuario de Azure AD.Replace <server-name> with your SQL Database server name, <db-name> with the database name your app uses, and <aad-user-name> and <aad-password> with your Azure AD user's credentials.

sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30

En el símbolo del sistema de SQL para la base de datos que desee, ejecute los siguientes comandos para conceder los permisos que la aplicación necesita.In the SQL prompt for the database you want, run the following commands to grant the permissions your app needs. Por ejemplo,For example,

CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>];
GO

<identity-name> es el nombre de la identidad administrada en Azure AD.<identity-name> is the name of the managed identity in Azure AD. Si la identidad la ha asignado el sistema, el nombre siempre coincide con el nombre de la aplicación de App Service.If the identity is system-assigned, the name always the same as the name of your App Service app. Para conceder permisos para un grupo de Azure AD, utilice en su lugar el nombre para mostrar del grupo (por ejemplo, myAzureSQLDBAccessGroup).To grant permissions for an Azure AD group, use the group's display name instead (for example, myAzureSQLDBAccessGroup).

Escriba EXIT para volver al símbolo del sistema de Cloud Shell.Type EXIT to return to the Cloud Shell prompt.

Nota

Los servicios de back-end de las identidades administradas también mantienen una caché de token que actualiza el token de un recurso de destino solo cuando expira.The back-end services of managed identities also maintains a token cache that updates the token for a target resource only when it expires. Si realiza algún error al configurar los permisos de SQL Database e intenta modificarlos después de intentar obtener un token con su aplicación, no obtendrá realmente un token nuevo con permisos actualizados hasta que expire el token de la caché.If you make a mistake configuring your SQL Database permissions and try to modify the permissions after trying to get a token with your app, you don't actually get a new token with the updated permissions until the cached token expires.

Modificación de la cadena de conexiónModify connection string

Recuerde que los mismos cambios que haya realizado en Web.config o appsettings.json funcionan con la identidad administrada, por lo que lo único necesario es eliminar la cadena de conexión existente de App Service, que Visual Studio creó al implementar la aplicación inicialmente.Remember that the same changes you made in Web.config or appsettings.json works with the managed identity, so the only thing to do is to remove the existing connection string in App Service, which Visual Studio created deploying your app the first time. En los siguientes comandos, reemplace <nombre-de-la-aplicación> por el nombre de la aplicación.Use the following command, but replace <app-name> with the name of your app.

az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names MyDbConnection

Publicación de los cambiosPublish your changes

Ahora lo único que queda es publicar los cambios en Azure.All that's left now is to publish your changes to Azure.

Si venía del Tutorial: Creación de una aplicación de ASP.NET en Azure con SQL Database , publique los cambios en Visual Studio.If you came from Tutorial: Build an ASP.NET app in Azure with SQL Database, publish your changes in Visual Studio. En el Explorador de soluciones, haga clic con el botón derecho en su proyecto DotNetAppSqlDb y seleccione Publicar.In the Solution Explorer, right-click your DotNetAppSqlDb project and select Publish.

Publicar desde el Explorador de soluciones

En la página de publicación, haga clic en Publicar.In the publish page, click Publish.

Si venía del Tutorial: Cree una aplicación ASP.NET Core y SQL Database en Azure App Service y publique los cambios con Git, con los siguientes comandos:If you came from Tutorial: Build an ASP.NET Core and SQL Database app in Azure App Service, publish your changes using Git, with the following commands:

git commit -am "configure managed identity"
git push azure master

Cuando la página web nueva muestra su lista de tareas pendientes, la aplicación se conecta a la base de datos mediante la identidad administrada.When the new webpage shows your to-do list, your app is connecting to the database using the managed identity.

Aplicación de Azure después de Migraciones de Code First

Ahora ya puede editar la lista de tareas pendientes como antes.You should now be able to edit the to-do list as before.

Limpieza de recursosClean up resources

En los pasos anteriores, creó recursos de Azure en un grupo de recursos.In the preceding steps, you created Azure resources in a resource group. Si prevé que no necesitará estos recursos en el futuro, elimine el grupo de recursos ejecutando el siguiente comando en Cloud Shell:If you don't expect to need these resources in the future, delete the resource group by running the following command in the Cloud Shell:

az group delete --name myResourceGroup

Este comando puede tardar varios segundos en ejecutarse.This command may take a minute to run.

Pasos siguientesNext steps

¿Qué ha aprendido?What you learned:

  • Habilitar identidades administradasEnable managed identities
  • Conceder a SQL Database acceso a la identidad administradaGrant SQL Database access to the managed identity
  • Configurar Entity Framework para utilizar la autenticación de Azure AD con SQL DatabaseConfigure Entity Framework to use Azure AD authentication with SQL Database
  • Conectarse a SQL Database desde Visual Studio mediante la autenticación de Azure ADConnect to SQL Database from Visual Studio using Azure AD authentication

Vaya al siguiente tutorial para aprender a asignar un nombre DNS personalizado a una aplicación web.Advance to the next tutorial to learn how to map a custom DNS name to your web app.