Notatka
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 Key Vault umożliwia przechowywanie poświadczeń i innych wpisów tajnych ze zwiększonym bezpieczeństwem. Jednak kod musi uwierzytelnić się z Key Vault, aby je pobrać. Tożsamości zarządzane dla zasobów platformy Azure rozwiązują ten problem, zapewniając usługom platformy Azure automatycznie zarządzaną tożsamość w usłudze Microsoft Entra ID. Kod używa tej tożsamości do uwierzytelniania w dowolnej usłudze obsługującej uwierzytelnianie Microsoft Entra, w tym Key Vault, bez osadzania poświadczeń w kodzie.
W tym samouczku utworzysz i wdrożysz aplikację internetową Azure w celu Azure App Service, a następnie użyjesz tożsamości zarządzanej, aby uwierzytelnić aplikację w magazynie kluczy przy użyciu biblioteki klienta tajnego Azure Key Vault dla .NET i Azure CLI. Te same zasady mają zastosowanie, jeśli używasz innego języka, Azure PowerShell lub portalu Azure.
Aby uzyskać więcej informacji na temat aplikacji internetowych i wdrażania usługi App Service, zobacz:
- Omówienie usługi App Service
- Tworzenie aplikacji internetowej ASP.NET Core w Azure App Service
- Wdrażanie plików w usłudze App Service
Wymagania wstępne
Do ukończenia tego samouczka potrzebne są następujące elementy:
- Subskrypcja Azure. Utwórz je bezpłatnie.
- Zestaw SDK .NET 8.0 lub nowszy.
- Azure CLI lub Azure PowerShell.
- Azure Key Vault. Magazyn kluczy można utworzyć przy użyciu portalu AzureAzure CLI lub Azure PowerShell.
- Key Vault secret. Wpis tajny można utworzyć przy użyciu portalu AzurePowerShell lub Azure CLI.
Jeśli masz już aplikację internetową wdrożona w Azure App Service, przejdź do sekcji Konfigurowanie aplikacji internetowej w celu nawiązania połączenia z Key Vault i Zmodyfikuj aplikację w celu uzyskania dostępu do key vault.
Tworzenie aplikacji .NET Core
W tym kroku skonfiguruj lokalny projekt .NET.
W oknie terminalu utwórz katalog o nazwie akvwebapp i przejdź do niego:
mkdir akvwebapp
cd akvwebapp
Utwórz aplikację internetową .NET przy użyciu polecenia dotnet new web:
dotnet new web
Uruchom aplikację lokalnie, aby zobaczyć, jak wygląda przed wdrożeniem jej w Azure:
dotnet run
W przeglądarce internetowej otwórz aplikację pod adresem http://localhost:5000. Zostanie wyświetlony komunikat "Hello world!" z przykładowej aplikacji.
Aby uzyskać więcej informacji na temat tworzenia aplikacji internetowych, zobacz Tworzenie aplikacji internetowej ASP.NET Core w Azure App Service.
Wdrażanie aplikacji w Azure
W tym kroku wdroż aplikację platformy .NET do usługi Azure App Service za pomocą funkcji zip deploy. Wdrażanie z pliku ZIP jest zalecanym mechanizmem wdrażania pakietów dla usługi App Service. W przypadku ciągłego dostarczania z systemu kontroli źródła użyj zamiast tego GitHub Actions lub Azure DevOps Pipelines.
Tworzenie grupy zasobów
Utwórz grupę zasobów zawierającą magazyn kluczy i aplikację internetową przy użyciu polecenia az group create:
az group create --name "<resource-group>" --location "EastUS"
Tworzenie planu usługi App Service
Utwórz plan usługi App Service przy użyciu polecenia az appservice plan create. Poniższy przykład tworzy plan o nazwie myAppServicePlan w bezpłatnej warstwie (FREE):
az appservice plan create --name myAppServicePlan --resource-group <resource-group> --sku FREE
Tworzenie aplikacji internetowej
Utwórz aplikację internetową Azure w myAppServicePlan planie.
Ważne
Podobnie jak magazyn kluczy, aplikacja internetowa Azure musi mieć globalnie unikatową nazwę. Zastąp znacznik <webapp-name> nazwą swojej aplikacji internetowej.
az webapp create --resource-group "<resource-group>" --plan "myAppServicePlan" --name "<webapp-name>"
Przejdź do nowej aplikacji, aby potwierdzić, że jest uruchomiona:
https://<webapp-name>.azurewebsites.net
Zostanie wyświetlona strona domyślna dla nowej aplikacji internetowej Azure.
Wdrażanie aplikacji lokalnej przy użyciu narzędzia zip deploy
Z katalogu projektu akvwebapp skompiluj projekt i utwórz wdrożeniowe archiwum ZIP:
dotnet publish -c Release -o ./publish
cd publish
zip -r ../akvwebapp.zip .
cd ..
Tip
W systemie Windows bez zip użyj programu PowerShell: Compress-Archive -Path .\publish\* -DestinationPath .\akvwebapp.zip.
Wdróż plik zip do swojej aplikacji internetowej za pomocą az webapp deploy:
az webapp deploy --resource-group "<resource-group>" --name "<webapp-name>" --src-path ./akvwebapp.zip --type zip
Odśwież wdrożoną aplikację w przeglądarce internetowej:
https://<webapp-name>.azurewebsites.net
Zostanie wyświetlony ten sam komunikat "Hello world!", który został wyświetlony pod adresem http://localhost:5000.
Konfigurowanie aplikacji internetowej w celu nawiązania połączenia z Key Vault
W tej sekcji włączysz aplikację internetową, aby uzyskać dostęp do Key Vault i zaktualizować kod aplikacji w celu pobrania wpisu tajnego.
Tworzenie i przypisywanie dostępu do tożsamości zarządzanej
Użyj tożsamości zarządzanej do uwierzytelniania aplikacji internetowej w usłudze Key Vault. Tożsamość zarządzana eliminuje potrzebę zarządzania poświadczeniami w kodzie.
Przypisz tożsamość do aplikacji za pomocą az webapp identity assign:
az webapp identity assign --name "<webapp-name>" --resource-group "<resource-group>"
Polecenie zwraca fragment kodu JSON podobny do następującego:
{
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
}
Aby uzyskać uprawnienia do magazynu kluczy za pomocą Role-Based Access Control (RBAC), przypisz rolę do głównej nazwy użytkownika (UPN) przy użyciu polecenia Azure CLI az role assignment create.
az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
Zastąp <upn>, <subscription-id> i <vault-name> rzeczywistymi wartościami. Jeśli użyto innej nazwy grupy zasobów, zastąp "myResourceGroup" również. Twój UPN zazwyczaj będzie w formacie adresu e-mail (np. username@domain.com).
Modyfikowanie aplikacji w celu uzyskania dostępu do magazynu kluczy
W tym samouczku jest używana biblioteka klienta wpisu tajnego Azure Key Vault. Możesz również użyć biblioteki klienta certyfikatu Azure Key Vault lub biblioteki klienta klucza Azure Key Vault.
Instalowanie pakietów
W oknie terminalu zainstaluj bibliotekę klienta wpisu tajnego Azure Key Vault i bibliotekę klienta Azure Identity:
dotnet add package Azure.Identity
dotnet add package Azure.Security.KeyVault.Secrets
Aktualizacja kodu
Otwórz Program.cs w projekcie akvwebapp .
Dodaj następujące using dyrektywy w górnej części pliku:
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Azure.Core;
Dodaj następujące wiersze przed wywołaniem app.MapGet, zastępując element <vault-name> nazwą magazynu kluczy. Ten kod używa DefaultAzureCredential do uwierzytelniania w usłudze Key Vault za pośrednictwem tożsamości zarządzanej aplikacji internetowej. Aby uzyskać więcej informacji, zobacz przewodnik dewelopera. Kod konfiguruje również wycofywanie wykładnicze dla ponownych prób w przypadku ograniczenia Key Vault. Aby uzyskać szczegółowe informacje na temat limitów transakcji, zobacz wskazówki dotyczące ograniczania przepustowości Azure Key Vault.
SecretClientOptions options = new SecretClientOptions()
{
Retry =
{
Delay= TimeSpan.FromSeconds(2),
MaxDelay = TimeSpan.FromSeconds(16),
MaxRetries = 5,
Mode = RetryMode.Exponential
}
};
var client = new SecretClient(new Uri("https://<vault-name>.vault.azure.net/"), new DefaultAzureCredential(), options);
KeyVaultSecret secret = client.GetSecret("<secret-name>");
string secretValue = secret.Value;
Zaktualizuj wiersz app.MapGet("/", () => "Hello world!"); do:
app.MapGet("/", () => secretValue);
Zapisz zmiany.
Ponowne wdrażanie aplikacji internetowej
Ponownie skompiluj pakiet wdrożeniowy i ponownie wdróż:
dotnet publish -c Release -o ./publish
cd publish
zip -r ../akvwebapp.zip .
cd ..
az webapp deploy --resource-group "<resource-group>" --name "<webapp-name>" --src-path ./akvwebapp.zip --type zip
Przejdź do ukończonej aplikacji internetowej
https://<webapp-name>.azurewebsites.net
Tam, gdzie wcześniej widniał napis „Hello world!”, teraz widzisz wartość Twojego sekretu.