Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure Key Vault consente di archiviare le credenziali e altri segreti con maggiore sicurezza. Tuttavia, il codice deve eseguire l'autenticazione per Key Vault per recuperarli. Le identità gestite per le risorse di Azure risolve questo problema fornendo ai servizi Azure un'identità gestita automaticamente in Microsoft Entra ID. Il codice usa questa identità per eseguire l'autenticazione a qualsiasi servizio che supporti l'autenticazione Microsoft Entra, inclusa Key Vault, senza incorporare le credenziali nel codice.
In questa esercitazione viene creata e distribuita un'applicazione Web Azure in Servizio app di Azure, quindi si usa un'identità gestita per autenticare l'app in un insieme di credenziali delle chiavi usando la libreria client dei segreti Azure Key Vault per .NET e l'interfaccia della riga di comando di Azure. Gli stessi principi si applicano se si usa un'altra lingua, Azure PowerShell o il portale di Azure.
Per altre informazioni sulle app Web e sulla distribuzione del servizio app, vedere:
- Panoramica del Servizio App
- Creare un'app Web ASP.NET Core in Servizio app di Azure
- Distribuire file su App Service
Prerequisiti
Per completare questa esercitazione, è necessario:
- Sottoscrizione Azure. Crearne una gratuitamente.
- .NET 8.0 SDK o versione successiva.
- interfaccia della riga di comando di Azure o Azure PowerShell.
- Azure Key Vault. È possibile creare un Key Vault utilizzando il portale Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell.
- Un segreto di Key Vault secret. È possibile creare un segreto usando il portale Azure, PowerShell o interfaccia della riga di comando di Azure.
Se è già stata distribuita un'app Web in Servizio app di Azure, passare a Configurare l'app Web per connettersi a Key Vault e Modificare l'app per accedere alla key vault.
Creare un'app .NET Core
In questo passaggio configurare il progetto .NET locale.
In una finestra del terminale creare una directory denominata akvwebapp e passare a questa directory:
mkdir akvwebapp
cd akvwebapp
Creare un'app Web .NET usando il comando dotnet new web:
dotnet new web
Eseguire l'app in locale per verificare l'aspetto prima di distribuirlo in Azure:
dotnet run
In un Web browser aprire l'app all'indirizzo http://localhost:5000. Viene visualizzato il messaggio "Hello World!" dall'app di esempio.
Per altre informazioni sulla creazione di app Web, vedere Creare un'app Web ASP.NET Core in Servizio app di Azure.
Distribuire l'app in Azure
In questo passaggio distribuire l'app .NET in Servizio app di Azure usando zip deploy. Zip deploy è il meccanismo di distribuzione basato su pacchetti consigliato per App Service. Per la distribuzione continua dal controllo del codice sorgente, usa invece GitHub Actions o Azure DevOps Pipelines.
Creare un gruppo di risorse
Creare un gruppo di risorse per contenere il Key Vault e l'app Web usando az group create:
az group create --name "<resource-group>" --location "EastUS"
Creare un piano di servizio app
Creare un piano di servizio app tramite az appservice plan create. L'esempio seguente crea un piano denominato myAppServicePlan nel livello gratuito (FREE):
az appservice plan create --name myAppServicePlan --resource-group <resource-group> --sku FREE
Creare un'app Web
Creare un'app Web di Azure nel piano myAppServicePlan.
Importante
Analogamente a un insieme di credenziali delle chiavi, un'app Web di Azure deve avere un nome globalmente univoco. Sostituire <webapp-name> con il nome dell'app Web.
az webapp create --resource-group "<resource-group>" --plan "myAppServicePlan" --name "<webapp-name>"
Vai alla nuova app per confermare che sia in esecuzione:
https://<webapp-name>.azurewebsites.net
Viene visualizzata la pagina predefinita per una nuova app Web Azure.
Distribuire l'app locale con zip deploy
Dalla directory del akvwebapp progetto compilare il progetto e creare un file ZIP di distribuzione:
dotnet publish -c Release -o ./publish
cd publish
zip -r ../akvwebapp.zip .
cd ..
Suggerimento
In Windows senza zipusare PowerShell: Compress-Archive -Path .\publish\* -DestinationPath .\akvwebapp.zip.
Distribuire il file ZIP nell'app Web usando az webapp deploy:
az webapp deploy --resource-group "<resource-group>" --name "<webapp-name>" --src-path ./akvwebapp.zip --type zip
Aggiornare l'app distribuita nel Web browser:
https://<webapp-name>.azurewebsites.net
Viene visualizzato lo stesso messaggio "Hello World!" visualizzato in http://localhost:5000.
Configurare l'app Web per la connessione a Key Vault
In questa sezione, abiliti l'app Web ad accedere a Key Vault e aggiorni il codice dell'app per recuperare un segreto.
Creare e assegnare l'accesso a un'identità gestita
Usare un'identità gestita per autenticare l'app Web per Key Vault. Un'identità gestita rimuove la necessità di gestire le credenziali nel codice.
Creare l'identità per l'app usando az webapp identity assign:
az webapp identity assign --name "<webapp-name>" --resource-group "<resource-group>"
Il comando restituisce un frammento JSON simile al seguente:
{
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
}
Per ottenere le autorizzazioni per l'insieme di credenziali delle chiavi tramite il controllo degli accessi in base al ruolo (RBAC), assegnare un ruolo all'UPN (User Principal Name) usando il comando dell'interfaccia della riga di comando di Azure 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>"
Sostituire <upn>, <subscription-id>e <vault-name> con i valori effettivi. Se è stato usato un nome di gruppo di risorse diverso, sostituire anche "myResourceGroup". L'UPN in genere sarà nel formato di un indirizzo e-mail (ad esempio, username@domain.com).
Modificare l'app per l'accesso all'insieme di credenziali delle chiavi
Questa esercitazione utilizza la libreria client dei segreti di Azure Key Vault. È anche possibile usare la libreria client dei certificati Azure Key Vault o la libreria client delle chiavi Azure Key Vault.
Installare i pacchetti
Dalla finestra del terminale, installare la libreria client Secret di Azure Key Vault e la libreria client Azure Identity:
dotnet add package Azure.Identity
dotnet add package Azure.Security.KeyVault.Secrets
Aggiornare il codice
Apri Program.cs nel tuo progetto akvwebapp.
Aggiungere queste using direttive all'inizio del file:
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Azure.Core;
Aggiungere le righe seguenti prima della chiamata a app.MapGet, sostituendo <vault-name> con il nome dell'insieme di credenziali delle chiavi. Questo codice usa DefaultAzureCredential per eseguire l'autenticazione per Key Vault tramite l'identità gestita dell'app Web. Per altre informazioni, vedere la guida per gli sviluppatori. Il codice configura anche il backoff esponenziale per la ripetizione dei tentativi in caso di limitazione di Key Vault. Per dettagli sui limiti di transazione, consulta le linee guida sulla limitazione delle richieste di 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;
Aggiornare la riga app.MapGet("/", () => "Hello World!"); in:
app.MapGet("/", () => secretValue);
Salvare le modifiche.
Ridistribuire l'app Web
Ricompilare il pacchetto di distribuzione e ridistribuire:
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
Passare all'app Web completata
https://<webapp-name>.azurewebsites.net
Dove prima veniva visualizzato "Hello World!", ora viene visualizzato il valore del segreto.