Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure App Service oferuje wysoce skalowalną, samopoprawczą usługę hostingu internetowego na platformie Azure. Usługa App Service udostępnia również tożsamość zarządzaną aplikacji, która jest rozwiązaniem w zakresie zabezpieczania dostępu do usługi Azure SQL i innych usług platformy Azure. Tożsamości zarządzane w usłudze App Service sprawiają, że aplikacja jest bezpieczniejsza, eliminując wpisy tajne, takie jak poświadczenia w parametrach połączenia.
W tym samouczku pokazano, jak dodać tożsamość zarządzaną do przykładowej aplikacji platformy .NET z zapleczem usługi Azure SQL. Po zakończeniu aplikacja może bezpiecznie nawiązać połączenie z bazą danych Azure SQL Database bez konieczności używania nazwy użytkownika i hasła.
W tym samouczku nauczysz się następujących rzeczy:
- Włącz funkcję tożsamości zarządzanych.
- Udziel usłudze Azure SQL Database dostępu do tożsamości zarządzanej.
- Skonfiguruj Entity Framework do używania uwierzytelniania Microsoft Entra z bazą danych SQL.
- Połącz się z bazą danych SQL z programu Visual Studio przy użyciu uwierzytelniania Microsoft Entra.
Aby uzyskać wskazówki dotyczące korzystania z usługi Azure Database for MySQL lub Azure Database for PostgreSQL w środowiskach Node.js, Python i Java, zobacz Samouczek: nawiązywanie połączenia z bazami danych platformy Azure z usługi App Service bez wpisów tajnych przy użyciu tożsamości zarządzanej.
Uwaga
Identyfikator Microsoft Entra ID i tożsamości zarządzane nie są obsługiwane w przypadku lokalnego serwera SQL Server.
Uwierzytelnianie firmy Microsoft Entra różni się od zintegrowanego uwierzytelniania systemu Windows w lokalnych usługach Active Directory Domain Services (DS). Usługi AD DS i Microsoft Entra ID używają zupełnie różnych protokołów uwierzytelniania. Aby uzyskać więcej informacji, zobacz dokumentację usług Microsoft Entra Domain Services.
Wymagania wstępne
-
Jeśli nie masz jeszcze konta platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Miej podstawowy serwis aplikacyjny Azure App Service ASP.NET MVC lub ASP.NET Core MVC z funkcjonalnością create-read-update-delete (CRUD), która korzysta z Azure SQL Database z uwierzytelnianiem SQL jako zaplecza. Kroki opisane w tym samouczku obsługują następujące wersje platformy .NET:
- .NET Framework 4.8 lub nowszy
- .NET 6.0 i nowsze
Zezwól na połączenie klienta z komputera na platformę Azure, aby można było debugować aplikację w środowisku projektowym. Adres IP klienta można dodać, wykonując kroki opisane w temacie Zarządzanie regułami zapory adresów IP na poziomie serwera przy użyciu witryny Azure Portal.
Zaloguj się do usługi Azure Cloud Shell lub przygotuj środowisko do korzystania z interfejsu wiersza polecenia platformy Azure.
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z usługą Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą interfejsu wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Udzielanie administratorowi bazy danych dostępu do użytkownika Entra firmy Microsoft
Włącz uwierzytelnianie microsoft Entra w bazie danych Azure SQL Database, przypisując użytkownika Microsoft Entra jako administratora serwera Azure SQL. Administrator firmy Microsoft Entra musi być użytkownikiem utworzonym, zaimportowanym, zsynchronizowanym lub zaproszonym do identyfikatora Entra firmy Microsoft. Ten użytkownik może nie być taki sam jak użytkownik konta Microsoft dla subskrypcji platformy Azure.
- Aby uzyskać więcej informacji na temat tworzenia użytkownika entra firmy Microsoft, zobacz Dodawanie lub usuwanie użytkowników przy użyciu identyfikatora Entra firmy Microsoft.
- Aby uzyskać więcej informacji na temat dozwolonych użytkowników usługi Microsoft Entra dla usługi SQL Database, zobacz Microsoft Entra features and limitations in SQL Database (Funkcje i ograniczenia firmy Microsoft w usłudze SQL Database).
- Aby uzyskać więcej informacji na temat dodawania administratora programu Azure SQL Server, zobacz Provision a Microsoft Entra administrator for your server (Aprowizuj administratora usługi Microsoft Entra dla serwera).
Uruchom następujące polecenia w środowisku powłoki Bash usługi Azure Cloud Shell lub po zalogowaniu się lokalnie do Azure CLI.
Użyj
az ad user list
z parametremdisplay-name
,filter
lubupn
, aby uzyskać identyfikator obiektu dla użytkownika Microsoft Entra ID, którego chcesz zostać administratorem. Uruchomaz ad user list
samodzielnie, aby wyświetlić informacje dla wszystkich użytkowników w katalogu Microsoft Entra.Na przykład następujące polecenie wyświetla informacje dla użytkownika Microsoft Entra ID z
display-name
o imieniu i nazwisku Firstname Lastname.az ad user list --display-name "Firstname Lastname"
Oto przykładowe dane wyjściowe:
"businessPhones": [], "displayName": "Firstname Lastname", "givenName": null, "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "jobTitle": null, "mail": "firstname@contoso.com", "mobilePhone": null, "officeLocation": null, "preferredLanguage": null, "surname": null, "userPrincipalName": "firstname@contoso.com"
Dodaj użytkownika Microsoft Entra ID jako administratora na serwerze Azure SQL przy użyciu
az sql server ad-admin create
parametruobject-id
. W poniższym poleceniu zastąp<server-name>
nazwę serwera bez sufiksu.database.windows.net
, oraz<entra-id>
wartościąid
z wyniku poprzedniego poleceniaaz ad user list
.az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id <entra-id>
Konfigurowanie łączności tożsamości zarządzanej dla aplikacji
Poniższe kroki umożliwiają skonfigurowanie aplikacji w celu nawiązania połączenia z usługą Azure SQL Database przy użyciu przypisanej przez system tożsamości zarządzanej. Aby użyć tożsamości przypisanej przez użytkownika, zobacz Samouczek: nawiązywanie połączenia z bazami danych platformy Azure z usługi App Service bez wpisów tajnych przy użyciu tożsamości zarządzanej.
Włączanie tożsamości zarządzanej dla aplikacji
Aby włączyć tożsamość zarządzaną dla aplikacji platformy Azure, użyj polecenia az webapp identity assign , zastępując ciąg <app-name>
nazwą aplikacji. Nazwa tożsamości przypisanej przez system jest zawsze taka sama jak nazwa aplikacji.
az webapp identity assign --resource-group myResourceGroup --name <app-name>
Poniżej przedstawiono przykładowe dane wyjściowe:
{
"additionalProperties": {},
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
}
Aby włączyć zarządzaną tożsamość dla miejsca wdrożenia, dodaj --slot <slot-name>
do poprzedniego polecenia i użyj nazwy miejsca w <slot-name>
. Nazwa tożsamości systemowej przypisanej do miejsca wdrożenia to <app-name>/slots/<slot-name>
.
Możesz również dodać tożsamość do grupy Microsoft Entra, a następnie przyznać usłudze SQL Database dostęp do grupy Microsoft Entra zamiast do tożsamości. Aby udzielić uprawnień grupie Microsoft Entra, użyj jej nazwy wyświetlanej. Następujące polecenia dodają przykładową tożsamość zarządzaną do nowej grupy o nazwie 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
Przyznawanie uprawnień dla tożsamości zarządzanej
Udziel tożsamości minimalnych uprawnień, które są wymagane przez aplikację.
Otwórz wiersz polecenia programu PowerShell i zaloguj się do usługi SQL Database przy użyciu następującego polecenia SQLCMD. Zastąp
<server-name>
nazwą swojego serwera,<db-name>
nazwą swojej bazy danych oraz<admin-user>
nauserPrincipalName
, czyli nazwę użytkownika administratora, z danych wyjściowych poprzedniego poleceniaaz ad user list
.sqlcmd -S <servername>.database.windows.net -d <db-name> -U <admin-user> -G -l 30
Postępuj zgodnie z monitami, aby się zalogować.
W wierszu polecenia SQL uruchom następujące polecenia, aby przyznać aplikacji minimalne uprawnienia, których potrzebuje w bazie danych. Zastąp
<identity-name>
nazwą tożsamości zarządzanej w usłudze Microsoft Entra ID, której nazwa jest taka sama jak nazwa aplikacji.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
Uwaga
Usługi tożsamości zarządzanej zaplecza utrzymują pamięć podręczną tokenów , która aktualizuje token dla zasobu docelowego tylko wtedy, gdy wygaśnie. Jeśli spróbujesz zmodyfikować uprawnienia usługi SQL Database po pierwszym otrzymaniu tokenu z aplikacją, nie otrzymasz nowego tokenu ze zaktualizowanymi uprawnieniami do momentu wygaśnięcia buforowanego tokenu.
Usuwanie oryginalnych parametrów połączenia
Wszelkie zmiany wprowadzone w web.config lub appsettings.json współpracują z tożsamością zarządzaną. Oryginalny ciąg połączenia użyty podczas pierwszego wdrażania aplikacji można usunąć. Aby usunąć ciąg połączenia, uruchom następujące polecenie Azure CLI, zastępując <app-name>
nazwą swojej aplikacji i <connection-string-name>
nazwą swojego ciągu połączenia.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names <connection-string-name>
Konfigurowanie środowiska projektowego
Skonfiguruj wybrane środowisko programistyczne i zaloguj się na platformie Azure. Aby uzyskać więcej informacji na temat konfigurowania środowiska deweloperskiego na potrzeby uwierzytelniania firmy Microsoft Entra, zobacz Biblioteka klienta tożsamości platformy Azure dla platformy .NET.
- Visual Studio Windows
- Visual Studio Code
- Interfejs wiersza polecenia platformy Azure
- Azure PowerShell
Program Visual Studio dla systemu Windows jest zintegrowany z uwierzytelnianiem firmy Microsoft Entra.
- Aby włączyć rozwój i debugowanie w programie Visual Studio, dodaj użytkownika Microsoft Entra, wybierając pozycję Plik>Ustawienia konta w górnym menu, a następnie wybierz Zaloguj lub Dodaj.
- Aby ustawić użytkownika Microsoft Entra na potrzeby uwierzytelniania usługi platformy Azure, wybierz pozycję Narzędzia>Opcje w górnym menu, a następnie wybierz Uwierzytelnianie usługi Azure>Wybór konta. Wybierz dodanego użytkownika Microsoft Entra i wybierz przycisk OK.
Modyfikowanie projektu i publikowanie aplikacji
Aplikacja internetowa korzystająca z bazy danych Azure SQL Database używa kontekstu bazy danych do nawiązywania połączenia z bazą danych. Aby używać uwierzytelniania Microsoft Entra do pracy z aplikacją, należy zaktualizować kontekst bazy danych, aby odwoływał się do dostawcy programu Entity Framework SQL Server, który zależy od nowoczesnego dostawcy ADO.NET Microsoft.Data.SqlClient.
Dostawca Entity Framework zastępuje wbudowanego dostawcę SQL Server System.Data.SqlClient
i obejmuje obsługę metod uwierzytelniania Microsoft Entra ID. Aby uzyskać więcej informacji, zobacz Microsoft.EntityFramework.SqlServer.
[DbConfigurationType(typeof(MicrosoftSqlDbConfiguration))]
Działa lokalnie, aby używać Microsoft.Data.SqlClient
dla kontekstu bazy danych, ale ponieważ System.Data.SqlClient
jest zakodowany jako dostawca w usłudze Azure App Service, należy rozszerzyć MicrosoftSqlDbConfiguration
, aby przekierować System.Data.SqlClient
odwołania do Microsoft.Data.SqlClient
. Kroki różnią się w zależności od tego, czy masz aplikację ASP.NET, czy ASP.NET Core.
- aplikacja ASP.NET Core
-
aplikacji
ASP.NET
Aplikacja ASP.NET Core domyślnie używa platformy Entity Framework Core .
W konsoli menedżera pakietów programu Visual Studio dodaj pakiet NuGet Microsoft.Data.SqlClient.
Install-Package Microsoft.Data.SqlClient
W appsettings.json, zastąp wartość ciągu połączenia następującym kodem, zastępując
<server-name
nazwą serwera i<database-name>
nazwą bazy danych."Server=tcp:<server-name>.database.windows.net;Authentication=Active Directory Default; Database=<database-name>;"
Uwaga
Możesz użyć uwierzytelniania domyślnego usługi Active Directory zarówno na komputerze lokalnym, jak i w usłudze Azure App Service. Sterownik może uzyskać token z identyfikatora Entra firmy Microsoft na kilka różnych sposobów.
Jeśli aplikacja jest wdrożona, sterownik uzyskuje token z zarządzanej tożsamości przypisanej do aplikacji przez system. Sterownik może również uwierzytelniać się przy użyciu przez użytkownika przypisanej tożsamości zarządzanej, jeśli uwzględnisz
User Id=<client-id-of-user-assigned-managed-identity>;
w parametrach połączenia.Klasa
DefaultAzureCredential
buforuje token w pamięci i pobiera go z identyfikatora Entra firmy Microsoft przed wygaśnięciem. Do odświeżenia tokenu nie jest potrzebny żaden kod niestandardowy.Teraz masz wszystko, co musisz zrobić, aby nawiązać połączenie z usługą Azure SQL Database podczas debugowania w programie Visual Studio. Twój kod używa użytkownika Microsoft Entra skonfigurowanego podczas konfigurowania środowiska deweloperskiego.
Uruchom aplikację. Aplikacja CRUD w przeglądarce łączy się bezpośrednio z bazą danych Azure SQL Database przy użyciu uwierzytelniania firmy Microsoft Entra. Ta konfiguracja umożliwia uruchamianie migracji baz danych z programu Visual Studio.
Opublikuj zmiany przy użyciu następujących poleceń usługi Git:
git commit -am "configure managed identity" git push azure main
Testowanie aplikacji
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.
Teraz możesz edytować listę to-do.
Czyszczenie zasobów
W poprzednich krokach utworzono zasoby platformy Azure w grupie zasobów. 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:
az group delete --name myResourceGroup
Wykonanie tego polecenia może potrwać około minutę.
Treści powiązane
- Samouczek: zabezpieczanie aplikacji przy użyciu domeny niestandardowej i certyfikatu zarządzanego
- Samouczek: łączenie aplikacji usługi App Service z usługą SQL Database w imieniu zalogowanego użytkownika
- Samouczek: Łączenie z bazami danych Azure z usługi App Service bez użycia haseł przy użyciu tożsamości zarządzanej
- Samouczek: nawiązywanie połączenia z usługami platformy Azure, które nie obsługują tożsamości zarządzanych przy użyciu usługi Key Vault
- Samouczek: Jak izolować komunikację zaplecza poprzez integrację z siecią wirtualną