Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure Key Vault biedt een manier om referenties en andere geheimen op te slaan met verhoogde beveiliging. Maar uw code moet worden geverifieerd bij Key Vault om ze op te halen. Beheerde identiteiten voor Azure resources lossen dit probleem op door Azure services een automatisch beheerde identiteit in Microsoft Entra ID te geven. Uw code gebruikt deze identiteit om zich te authenticeren bij elke service die Microsoft Entra-authenticatie ondersteunt, inclusief Key Vault, zonder aanmeldingsgegevens in de code op te nemen.
In deze zelfstudie maakt en implementeert u een Azure-webtoepassing in Azure App Service en gebruikt u vervolgens een beheerde identiteit om de app te verifiëren bij een sleutelkluis met behulp van de Azure Key Vault geheime clientbibliotheek voor .NET en de Azure CLI. Dezelfde principes gelden als u een andere taal, Azure PowerShell of de Azure-portal gebruikt.
Zie voor meer informatie over App Service-web-apps en -implementatie:
- Overzicht van App Service
- Maak een ASP.NET Core-web-app in Azure App Service
- Bestanden implementeren naar App Service
Vereiste voorwaarden
U hebt het volgende nodig om deze zelfstudie te voltooien:
- Een Azure-abonnement. Maak gratis een account.
- De .NET SDK versie 8.0 of hoger.
- De Azure CLI of Azure PowerShell.
- Azure Key Vault. U kunt een sleutelkluis maken met behulp van de Azure portal, de Azure CLI of Azure PowerShell.
- Een Key Vault geheim. U kunt een geheim maken met behulp van de Azure-portal, PowerShell of de Azure CLI.
Als u al een web-app hebt geïmplementeerd in Azure App Service, gaat u naar De web-app configureren om verbinding te maken met Key Vault en wijzigt u de app voor toegang tot uw key vault.
Een .NET Core-app maken
In deze stap stelt u het lokale .NET project in.
Maak in een terminalvenster een map met de naam akvwebapp en ga naar die map:
mkdir akvwebapp
cd akvwebapp
Maak een .NET-web-app met behulp van de nieuwe dotnet-webopdracht:
dotnet new web
Voer de app lokaal uit om te zien hoe deze eruitziet voordat u deze implementeert in Azure:
dotnet run
Open de app in een webbrowser op http://localhost:5000. U ziet het bericht 'Hallo wereld!' van de voorbeeld-app.
Zie Een ASP.NET Core-web-app maken in Azure App Service voor meer informatie over het maken van web-apps.
De app implementeren in Azure
In deze stap implementeert u de .NET-app in Azure App Service met behulp van zip deploy. Zip deploy is het aanbevolen implementatiemechanisme op basis van pakketten voor App Service. Voor continue levering vanuit broncodebeheer gebruikt u in plaats daarvan GitHub Actions of Azure DevOps Pipelines.
Een brongroep maken
Maak een resourcegroep die de sleutelkluis en web-app bevat met behulp van az group create:
az group create --name "<resource-group>" --location "EastUS"
Een App Service-plan maken
Maak een App Service-plan met behulp van az appservice plan create. In het volgende voorbeeld wordt een plan gemaakt met de naam myAppServicePlan in de gratis laag (FREE):
az appservice plan create --name myAppServicePlan --resource-group <resource-group> --sku FREE
Een web-app maken
Maak een Azure-web-app in het myAppServicePlan plan.
Belangrijk
Net als een sleutelkluis moet een Azure-web-app een wereldwijd unieke naam hebben. Vervang door <webapp-name> de naam van uw web-app.
az webapp create --resource-group "<resource-group>" --plan "myAppServicePlan" --name "<webapp-name>"
Ga naar de nieuwe app om te controleren of deze actief is:
https://<webapp-name>.azurewebsites.net
U ziet de standaardpagina voor een nieuwe Azure-web-app.
Uw lokale app implementeren met zip deploy
Ga in de projectmap akvwebapp, bouw het project en maak een zipbestand voor implementatie:
dotnet publish -c Release -o ./publish
cd publish
zip -r ../akvwebapp.zip .
cd ..
Tip
Gebruik op Windows zonder zip PowerShell: Compress-Archive -Path .\publish\* -DestinationPath .\akvwebapp.zip.
Implementeer de zip in uw web-app met behulp van az webapp deploy:
az webapp deploy --resource-group "<resource-group>" --name "<webapp-name>" --src-path ./akvwebapp.zip --type zip
Vernieuw de geïmplementeerde app in uw webbrowser:
https://<webapp-name>.azurewebsites.net
U ziet hetzelfde bericht "Hallo wereld!" dat u bij http://localhost:5000 zag.
De web-app configureren om verbinding te maken met Key Vault
In deze sectie schakelt u de web-app in voor toegang tot Key Vault en werkt u uw app-code bij om een geheim op te halen.
Toegang tot een beheerde identiteit maken en toewijzen
Gebruik een beheerde identiteit om de web-app te verifiëren voor Key Vault. Met een beheerde identiteit hoeft u geen referenties in code te beheren.
Maak de identiteit voor de app met behulp van az webapp identity assign:
az webapp identity assign --name "<webapp-name>" --resource-group "<resource-group>"
De opdracht retourneert een JSON-fragment dat er ongeveer als volgt uit ziet:
{
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
}
Als u machtigingen wilt verkrijgen voor uw sleutelkluis via Role-Based Access Control (RBAC), wijst u een rol toe aan uw UPN (User Principal Name) met behulp van de Azure CLI-opdracht az-roltoewijzing maken.
az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
Vervang , <upn>en <subscription-id> door <vault-name>uw werkelijke waarden. Als u een andere resourcegroepnaam hebt gebruikt, vervangt u myResourceGroup ook. Uw UPN heeft meestal de indeling van een e-mailadres (bijvoorbeeld username@domain.com).
Pas de app aan om toegang te krijgen tot uw sleutelkluis
In deze zelfstudie wordt de Azure Key Vault geheime clientbibliotheek gebruikt. U kunt ook de clientbibliotheek van het Azure Key Vault-certificaat of de Azure Key Vault-sleutelclientbibliotheek gebruiken.
De pakketten installeren
Installeer vanuit het terminalvenster de Azure Key Vault geheime clientbibliotheek en de Azure Identity-clientbibliotheek:
dotnet add package Azure.Identity
dotnet add package Azure.Security.KeyVault.Secrets
De code bijwerken
Open Program.cs in je akvwebapp-project.
Voeg deze using instructies toe boven aan het bestand:
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Azure.Core;
Voeg de volgende regels toe vóór de aanroep app.MapGet en werk <vault-name> bij naar de naam van uw Key Vault. Deze code maakt gebruik van DefaultAzureCredential om te verifiëren bij Key Vault via de beheerde identiteit van de web-app. Zie de handleiding voor ontwikkelaars voor meer informatie. De code configureert ook exponentieel uitstel voor nieuwe pogingen voor het geval Key Vault wordt beperkt. Zie Azure Key Vault-richtlijnen voor throttling voor meer informatie over transactielimieten.
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;
Werk de regel app.MapGet("/", () => "Hallo wereld!"); bij naar:
app.MapGet("/", () => secretValue);
Sla de wijzigingen op.
Uw web-app opnieuw implementeren
Bouw het implementatiepakket opnieuw en implementeer het opnieuw:
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
Ga naar uw voltooide web-app
https://<webapp-name>.azurewebsites.net
Waar u eerder 'Hallo wereld!' hebt gezien, ziet u nu de waarde van uw geheim.