Samouczek: zabezpieczanie połączenia usługi Azure SQL Database z usługi App Service za pomocą tożsamości zarządzanejTutorial: Secure Azure SQL Database connection from App Service using a managed identity

Usługa App Service oferuje wysoce skalowalną i samonaprawialną usługę hostingu w Internecie na platformie Azure.App Service provides a highly scalable, self-patching web hosting service in Azure. Zapewnia także tożsamość zarządzaną dla aplikacji, czyli gotowe rozwiązanie do zabezpieczania dostępu do usługi Azure SQL Database i innych usług platformy 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. Tożsamości zarządzane w usłudze App Service zwiększają bezpieczeństwo aplikacji przez wyeliminowanie wpisów tajnych z aplikacji, takich jak poświadczenia w parametrach połączenia.Managed identities in App Service make your app more secure by eliminating secrets from your app, such as credentials in the connection strings. W tym samouczku dodasz tożsamość zarządzaną do przykładowej aplikacji internetowej skompilowanej w jednym z następujących samouczków:In this tutorial, you will add managed identity to the sample web app you built in one of the following tutorials:

Po zakończeniu Twoja przykładowa aplikacja będzie bezpiecznie łączyć się z usługą SQL Database bez konieczności podawania nazwy użytkownika i hasła.When you're finished, your sample app will connect to SQL Database securely without the need of username and passwords.

Uwaga

Kroki opisane w tym samouczku obsługują następujące wersje:The steps covered in this tutorial support the following versions:

  • .NET Framework 4.7.2 i nowsze.NET Framework 4.7.2 and above
  • .NET Core 2,2 i nowsze.NET Core 2.2 and above

Co uzyskasz:What you will learn:

  • Włączanie tożsamości zarządzanychEnable managed identities
  • Udzielanie usłudze SQL Database dostępu do tożsamości zarządzanejGrant SQL Database access to the managed identity
  • Konfigurowanie Entity Framework do korzystania z uwierzytelniania usługi Azure AD z usługą SQL DatabaseConfigure Entity Framework to use Azure AD authentication with SQL Database
  • Nawiązywanie połączenia z SQL Database z programu Visual Studio przy użyciu uwierzytelniania usługi Azure ADConnect to SQL Database from Visual Studio using Azure AD authentication

Uwaga

Uwierzytelnianie usługi Azure AD różni się od zintegrowanego uwierzytelniania systemu Windows w Active Directory lokalnym (AD DS).Azure AD authentication is different from Integrated Windows authentication in on-premises Active Directory (AD DS). AD DS i usługa Azure AD używają całkowicie różnych protokołów uwierzytelniania.AD DS and Azure AD use completely different authentication protocols. Aby uzyskać więcej informacji, zobacz dokumentację usług Azure AD Domain Services.For more information, see Azure AD Domain Services documentation.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem Utwórz bezpłatne konto .If you don't have an Azure subscription, create a free account before you begin.

Wymagania wstępnePrerequisites

Ten artykuł kontynuuje pracę w miejscu pracy w samouczku: Tworzenie aplikacji ASP.NET na platformie Azure za pomocą SQL Database lub samouczek: Tworzenie ASP.NET Core i aplikacji SQL Database w 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. Jeśli jeszcze tego nie zrobiono, należy najpierw wykonać jeden z dwóch samouczków.If you haven't already, follow one of the two tutorials first. Alternatywnie możesz dostosować kroki dla własnej aplikacji .NET za pomocą SQL Database.Alternatively, you can adapt the steps for your own .NET app with SQL Database.

Aby debugować aplikację przy użyciu SQL Database jako zaplecza, upewnij się, że z komputera zezwolono na połączenie z klientem.To debug your app using SQL Database as the back end, make sure that you've allowed client connection from your computer. W przeciwnym razie Dodaj adres IP klienta, wykonując czynności opisane w sekcji Zarządzanie regułami zapory adresów IP na poziomie serwera przy użyciu Azure Portal.If not, add the client IP by following the steps at Manage server-level IP firewall rules using the Azure portal.

Używanie usługi Azure Cloud ShellUse Azure Cloud Shell

Na platforma Azure hostowane jest Azure Cloud Shell, interaktywne środowisko powłoki, z którego można korzystać w przeglądarce.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Aby uruchomić kod z tego artykułu bez konieczności instalowania narzędzi w środowisku lokalnym, można użyć wstępnie zainstalowanych poleceń środowiska Cloud Shell.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Aby uruchomić środowisko Azure Cloud Shell:To start Azure Cloud Shell:

OpcjaOption Przykład/linkExample/Link
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu.Select Try It in the upper-right corner of a code block. Wybranie pozycji Wypróbuj nie spowoduje automatycznego skopiowania kodu do środowiska Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Przykład funkcji Wypróbuj w środowisku Azure Cloud Shell
Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Uruchamianie środowiska Cloud Shell w nowym oknieLaunch Cloud Shell in a new window
Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Przycisk Cloud Shell w witrynie Azure Portal

Aby uruchomić kod z tego artykułu w środowisku Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Uruchom usługę Cloud Shell.Start Cloud Shell.

  2. Wybierz przycisk Kopiuj w bloku kodu, aby skopiować kod.Select the Copy button on a code block to copy the code.

  3. Wklej kod w sesji Cloud Shell, naciskając klawisze Ctrl+Shift+V w systemach Windows i Linux lub klawisze Cmd+Shift+V w systemie 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. Naciśnij klawisz Enter, aby uruchomić kod.Select Enter to run the code.

Udzielanie dostępu do bazy danych użytkownikowi usługi Azure ADGrant database access to Azure AD user

Najpierw należy włączyć uwierzytelnianie usługi Azure AD, aby SQL Database, przypisując użytkownika usługi Azure AD jako administratora Active Directory serwera.First enable Azure AD authentication to SQL Database by assigning an Azure AD user as the Active Directory admin of the server. Ten użytkownik różni się od konto Microsoft użytego do zarejestrowania się w ramach subskrypcji platformy Azure.This user is different from the Microsoft account you used to sign up for your Azure subscription. Musi to być użytkownik, który został utworzony, zaimportowany, zsynchronizowany lub zaproszony do usługi Azure AD.It must be a user that you created, imported, synced, or invited into Azure AD. Aby uzyskać więcej informacji na temat dozwolonych użytkowników usługi Azure AD, zobacz temat funkcje i ograniczenia usługi Azure AD w SQL Database.For more information on allowed Azure AD users, see Azure AD features and limitations in SQL Database.

Jeśli dzierżawa usługi Azure AD nie ma jeszcze użytkownika, utwórz ją, wykonując czynności opisane w sekcji Dodawanie lub usuwanie użytkowników przy użyciu 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.

Znajdź identyfikator obiektu użytkownika usługi Azure AD przy użyciu az ad user list i Zamień <user-principal-name> .Find the object ID of the Azure AD user using the az ad user list and replace <user-principal-name>. Wynik jest zapisywany w zmiennej.The result is saved to a variable.

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

Porada

Aby wyświetlić listę wszystkich głównych nazw użytkowników w usłudze Azure AD, uruchom polecenie 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.

Dodaj tego użytkownika usługi Azure AD jako administratora Active Directory za pomocą az sql server ad-admin create polecenia w Cloud Shell.Add this Azure AD user as an Active Directory admin using az sql server ad-admin create command in the Cloud Shell. W poniższym poleceniu Zastąp <server-name> wartość nazwą serwera (bez .database.windows.net sufiksu).In the following command, replace <server-name> with the 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

Aby uzyskać więcej informacji na temat dodawania administratora Active Directory, zapoznaj się z tematem udostępnianie Azure Active Directory administratorem serweraFor more information on adding an Active Directory admin, see Provision an Azure Active Directory administrator for your server

Konfigurowanie programu Visual StudioSet up Visual Studio

Klient systemu WindowsWindows client

Program Visual Studio dla systemu Windows jest zintegrowany z uwierzytelnianiem w usłudze Azure AD.Visual Studio for Windows is integrated with Azure AD authentication. Aby włączyć programowanie i debugowanie w programie Visual Studio, Dodaj użytkownika usługi Azure AD w programie Visual Studio File, wybierając > z menu pozycję Ustawienia konta plików, a następnie kliknij pozycję Dodaj konto.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.

Aby ustawić użytkownika usługi Azure AD na potrzeby uwierzytelniania usługi platformy Azure Tools, wybierz > Opcje narzędzia z menu, a następnie wybierz pozycję wybór konta uwierzytelniania usługi platformy Azure > Account Selection.To set the Azure AD user for Azure service authentication, select Tools > Options from the menu, then select Azure Service Authentication > Account Selection. Wybierz dodanego użytkownika usługi Azure AD, a następnie kliknij przycisk OK.Select the Azure AD user you added and click OK.

Teraz możesz przystąpić do tworzenia i debugowania aplikacji za pomocą SQL Database jako zaplecza przy użyciu uwierzytelniania usługi Azure AD.You're now ready to develop and debug your app with the SQL Database as the back end, using Azure AD authentication.

Klient systemu macOSmacOS client

Visual Studio dla komputerów Mac nie jest zintegrowana z uwierzytelnianiem w usłudze Azure AD.Visual Studio for Mac is not integrated with Azure AD authentication. Jednak biblioteka Microsoft. Azure. Services. AppAuthentication , która będzie używana później, może używać tokenów z interfejsu wiersza polecenia platformy Azure.However, the Microsoft.Azure.Services.AppAuthentication library that you will use later can use tokens from Azure CLI. Aby włączyć programowanie i debugowanie w programie Visual Studio, najpierw musisz zainstalować interfejs wiersza polecenia platformy Azure na komputerze lokalnym.To enable development and debugging in Visual Studio, first you need to install Azure CLI on your local machine.

Po zainstalowaniu interfejsu wiersza polecenia platformy Azure na komputerze lokalnym Zaloguj się w interfejsie wiersza polecenia platformy Azure przy użyciu następujące polecenie za pomocą użytkownika usługi 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

Teraz możesz przystąpić do tworzenia i debugowania aplikacji za pomocą SQL Database jako zaplecza przy użyciu uwierzytelniania usługi Azure AD.You're now ready to develop and debug your app with the SQL Database as the back end, using Azure AD authentication.

Modyfikowanie projektuModify your project

Kroki opisane w projekcie zależą od tego, czy jest to projekt ASP.NET czy projekt 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.

Modyfikuj ASP.NETModify ASP.NET

W programie Visual Studio otwórz konsolę menedżera pakietów, a następnie dodaj pakiet 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

W Web.config, praca z góry pliku i wprowadzanie następujących zmian:In Web.config, working from the top of the file and make the following changes:

  • W programie <configSections> Dodaj następującą deklarację sekcji: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" />
    
  • pod tagiem zamykającym </configSections> Dodaj następujący kod XML dla <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>
    
  • Znajdź parametry połączenia o nazwie MyDbConnection i Zastąp ją connectionString wartością "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". Zamień <server-name> <db-name> na nazwę serwera i nazwę bazy danych.Replace <server-name> and <db-name> with your server name and database name.

Uwaga

SqlAuthenticationProvider zarejestrowano na podstawie zainstalowanej wcześniej biblioteki AppAuthentication.The SqlAuthenticationProvider you just registered is based on top of the AppAuthentication library you installed earlier. Domyślnie używa ona tożsamości przypisanej do systemu.By default, it uses a system-assigned identity. Aby skorzystać z tożsamości przypisanej do użytkownika, należy podać dodatkową konfigurację.To leverage a user-assigned identity, you will need to provide an additional configuration. Zobacz obsługę parametrów połączenia dla biblioteki AppAuthentication.Please see connection string support for the AppAuthentication library.

Jest to każda czynność, którą należy połączyć z SQL Database.That's every thing you need to connect to SQL Database. Podczas debugowania w programie Visual Studio kod używa użytkownika usługi Azure AD, który został skonfigurowany w konfiguracji programu Visual Studio.When debugging in Visual Studio, your code uses the Azure AD user you configured in Set up Visual Studio. Skonfigurujesz SQL Database później, aby umożliwić połączenie z tożsamości zarządzanej aplikacji App Service.You'll set up SQL Database later to allow connection from the managed identity of your App Service app.

Wpisz Ctrl+F5 ponownie, aby uruchomić aplikację.Type Ctrl+F5 to run the app again. Ta sama aplikacja CRUD w przeglądarce jest teraz łącząca się bezpośrednio z Azure SQL Database przy użyciu uwierzytelniania usługi Azure AD.The same CRUD app in your browser is now connecting to the Azure SQL Database directly, using Azure AD authentication. Ta konfiguracja pozwala uruchamiać migracje baz danych z programu Visual Studio.This setup lets you run database migrations from Visual Studio.

Modyfikuj ASP.NET CoreModify ASP.NET Core

W programie Visual Studio otwórz konsolę menedżera pakietów, a następnie dodaj pakiet 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

W samouczku ASP.NET Core i SQL Database MyDbConnection Parametry połączenia nie są używane, ponieważ w lokalnym środowisku programistycznym jest używany plik bazy danych programu SQLite, a w środowisku produkcyjnym platformy Azure używane są parametry połączenia z 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. W przypadku uwierzytelniania Active Directory w obu środowiskach należy używać tych samych parametrów połączenia.With Active Directory authentication, you want both environments to use the same connection string. W appsettings.json, Zastąp wartość MyDbConnection parametrów połączenia:In appsettings.json, replace the value of the MyDbConnection connection string with:

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

Następnie podaj kontekst bazy danych Entity Framework z tokenem dostępu dla SQL Database.Next, you supply the Entity Framework database context with the access token for the SQL Database. W Data\MyDatabaseContext.cs Dodaj następujący kod wewnątrz nawiasów klamrowych pustego MyDatabaseContext (DbContextOptions<MyDatabaseContext> options) konstruktora:In Data\MyDatabaseContext.cs, add the following code inside the curly braces of the empty MyDatabaseContext (DbContextOptions<MyDatabaseContext> options) constructor:

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

Uwaga

Ten kod demonstracyjny jest synchroniczny dla jasności i prostoty.This demonstration code is synchronous for clarity and simplicity.

Jest to każda czynność, którą należy połączyć z SQL Database.That's every thing you need to connect to SQL Database. Podczas debugowania w programie Visual Studio kod używa użytkownika usługi Azure AD, który został skonfigurowany w konfiguracji programu Visual Studio.When debugging in Visual Studio, your code uses the Azure AD user you configured in Set up Visual Studio. Skonfigurujesz SQL Database później, aby umożliwić połączenie z tożsamości zarządzanej aplikacji App Service.You'll set up SQL Database later to allow connection from the managed identity of your App Service app. AzureServiceTokenProviderKlasa buforuje token w pamięci i pobiera go z usługi Azure AD tuż przed wygaśnięciem.The AzureServiceTokenProvider class caches the token in memory and retrieves it from Azure AD just before expiration. Nie jest potrzebny żaden kod niestandardowy w celu odświeżenia tokenu.You don't need any custom code to refresh the token.

Porada

Jeśli skonfigurowany użytkownik usługi Azure AD ma dostęp do wielu dzierżawców, Połącz GetAccessTokenAsync("https://database.windows.net/", tenantid) się z żądanym identyfikatorem dzierżawy w celu pobrania odpowiedniego tokenu dostępu.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.

Wpisz Ctrl+F5 ponownie, aby uruchomić aplikację.Type Ctrl+F5 to run the app again. Ta sama aplikacja CRUD w przeglądarce jest teraz łącząca się bezpośrednio z Azure SQL Database przy użyciu uwierzytelniania usługi Azure AD.The same CRUD app in your browser is now connecting to the Azure SQL Database directly, using Azure AD authentication. Ta konfiguracja pozwala uruchamiać migracje baz danych z programu Visual Studio.This setup lets you run database migrations from Visual Studio.

Korzystanie z łączności tożsamości zarządzanejUse managed identity connectivity

Następnie skonfigurujesz aplikację App Service, aby połączyć się z SQL Database przy użyciu tożsamości zarządzanej przypisanej do systemu.Next, you configure your App Service app to connect to SQL Database with a system-assigned managed identity.

Uwaga

Chociaż instrukcje w tej sekcji dotyczą tożsamości przypisanej do systemu, tożsamość przypisana przez użytkownika może być równie łatwa.While the instructions in this section are for a system-assigned identity, a user-assigned identity can just as easily be used. W tym celu:To do this. należy zmienić, az webapp identity assign command Aby przypisać żądaną tożsamość przypisaną przez użytkownika.you would need the change the az webapp identity assign command to assign the desired user-assigned identity. Następnie podczas tworzenia użytkownika SQL upewnij się, że używasz nazwy zasobu tożsamości przypisanej do użytkownika, a nie nazwy lokacji.Then, when creating the SQL user, make sure to use the name of the user-assigned identity resource rather than the site name.

Włącz zarządzaną tożsamość w aplikacjiEnable managed identity on app

Aby włączyć tożsamość zarządzanej dla aplikacji platformy Azure, użyj polecenia az webapp identity assign w usłudze Cloud Shell.To enable a managed identity for your Azure app, use the az webapp identity assign command in the Cloud Shell. W poniższym poleceniu Zastąp ciąg <app-name> .In the following command, replace <app-name>.

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

Oto przykład danych wyjściowych:Here's an example of the output:

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

Przyznawanie uprawnień do tożsamości zarządzanejGrant permissions to managed identity

Uwaga

Jeśli chcesz, możesz dodać tożsamość do grupy usługi Azure AD, a następnie przyznać SQL Database dostęp do grupy usługi Azure AD zamiast tożsamości.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. Na przykład następujące polecenia dodają tożsamość zarządzaną z poprzedniego kroku do nowej grupy o nazwie 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

W usłudze Cloud Shell zaloguj się do usługi SQL Database przy użyciu polecenia SQLCMD.In the Cloud Shell, sign in to SQL Database by using the SQLCMD command. Zastąp ciąg <server-name> nazwą serwera, <db-name> nazwą bazy danych używaną przez aplikację i <aad-user-name> i <aad-password> z poświadczeniami użytkownika usługi Azure AD.Replace <server-name> with your 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

W wierszu polecenia SQL dla bazy danych, uruchom następujące polecenie, aby przyznać uprawnienia wymagane przez aplikację.In the SQL prompt for the database you want, run the following commands to grant the permissions your app needs. Na przykładFor 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> jest nazwą zarządzanej tożsamości w usłudze Azure AD.<identity-name> is the name of the managed identity in Azure AD. Jeśli tożsamość jest przypisana przez system, nazwa jest zawsze taka sama jak nazwa aplikacji App Service.If the identity is system-assigned, the name always the same as the name of your App Service app. Aby udzielić uprawnień dla grupy usługi Azure AD, należy zamiast tego użyć nazwy wyświetlanej grupy (na przykład myAzureSQLDBAccessGroup).To grant permissions for an Azure AD group, use the group's display name instead (for example, myAzureSQLDBAccessGroup).

Wpisz polecenie EXIT, aby powrócić do wiersza polecenia usługi Cloud Shell.Type EXIT to return to the Cloud Shell prompt.

Uwaga

Usługi zaplecza tożsamości zarządzanych obsługują również pamięć podręczną tokenów , która aktualizuje token dla zasobu docelowego tylko po jego wygaśnięciu.The back-end services of managed identities also maintains a token cache that updates the token for a target resource only when it expires. Jeśli wystąpi błąd podczas konfigurowania uprawnień SQL Database i spróbujesz zmodyfikować uprawnienia po próbie uzyskania tokenu w aplikacji, nie otrzymasz nowego tokenu ze zaktualizowanymi uprawnieniami do momentu wygaśnięcia tokenu w pamięci podręcznej.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.

Modyfikowanie parametrów połączeniaModify connection string

Należy pamiętać, że te same zmiany wprowadzone w Web.config lub appsettings.jsw działaniu z tożsamością zarządzaną, więc jedynym zadaniem do wykonania jest usunięcie istniejących parametrów połączenia w App Service, które program Visual Studio utworzył wdrożenie aplikacji po raz pierwszy.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. Użyj poniższego polecenia, ale Zastąp <app-name> wartość nazwą aplikacji.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

Publikowanie zmianPublish your changes

Teraz pozostało tylko opublikowanie zmian na platformie Azure.All that's left now is to publish your changes to Azure.

Jeśli pochodziłeś z samouczka: tworzenie aplikacji ASP.NET na platformie Azure przy użyciu SQL Database, Opublikuj zmiany w programie Visual Studio.If you came from Tutorial: Build an ASP.NET app in Azure with SQL Database, publish your changes in Visual Studio. W obszarze Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt DotNetAppSqlDb i wybierz polecenie Publikuj.In the Solution Explorer, right-click your DotNetAppSqlDb project and select Publish.

Publikowanie z Eksploratora rozwiązań

Na stronie publikowania kliknij przycisk Publikuj.In the publish page, click Publish.

Jeśli pochodziłeś z samouczka: tworzenie aplikacji ASP.NET Core i SQL Database w Azure App Service, Opublikuj zmiany za pomocą usługi git, używając następujących poleceń: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

Gdy nowa strona internetowa wyświetla listę zadań do wykonania, aplikacja nawiązuje połączenie z bazą danych za pomocą tożsamości zarządzanej.When the new webpage shows your to-do list, your app is connecting to the database using the managed identity.

Aplikacja platformy Azure po zakończeniu migracji Code First

Teraz powinno być możliwe edytowanie listy zadań do wykonania tak jak wcześniej.You should now be able to edit the to-do list as before.

Czyszczenie zasobówClean up resources

W poprzednich krokach utworzono zasoby platformy Azure w grupie zasobów.In the preceding steps, you created Azure resources in a resource group. Jeśli te zasoby nie będą raczej potrzebne w przyszłości, usuń grupę zasobów, uruchamiając następujące polecenie w usłudze 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

Wykonanie tego polecenia może potrwać około minutę.This command may take a minute to run.

Następne krokiNext steps

Które czynności umiesz wykonać:What you learned:

  • Włączanie tożsamości zarządzanychEnable managed identities
  • Udzielanie usłudze SQL Database dostępu do tożsamości zarządzanejGrant SQL Database access to the managed identity
  • Konfigurowanie Entity Framework do korzystania z uwierzytelniania usługi Azure AD z usługą SQL DatabaseConfigure Entity Framework to use Azure AD authentication with SQL Database
  • Nawiązywanie połączenia z SQL Database z programu Visual Studio przy użyciu uwierzytelniania usługi Azure ADConnect to SQL Database from Visual Studio using Azure AD authentication

Przejdź do następnego samouczka, aby dowiedzieć się, jak zmapować niestandardową nazwę DNS na aplikację internetową.Advance to the next tutorial to learn how to map a custom DNS name to your web app.