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.
Si applica a:Database SQL di Azure
Questo quickstart descrive come collegare un'applicazione a un database in database SQL di Azure ed eseguire query utilizzando .NET e Entity Framework Core. Questa guida di avvio rapido segue l'approccio senza password consigliato per connettersi al database. Per saperne di più sulle connessioni senza password, consulta l'hub senza password.
Prerequisiti
- Una sottoscrizione di Azure.
- Un database SQL configurato per l'autenticazione con Microsoft Entra ID (precedentemente Azure Active Directory). Puoi crearne uno usando Quickstart: Crea un unico database - database SQL di Azure.
- .NET 10.0 o versione successiva.
- Visual Studio o versione successiva con il carico di lavoro Sviluppo ASP.NET e Web.
- L'ultima versione dell'interfaccia della riga di comando di Azure.
- L’ultima versione degli strumenti di Entity Framework Core:
- Gli utenti di Visual Studio devono installare gli strumenti della console di Gestione pacchetti per Entity Framework Core.
- Gli utenti dell'interfaccia della riga di comando di .NET devono installare gli strumenti dell'interfaccia della riga di comando di .NET per Entity Framework Core.
Configurazione del server database
La connessione sicura senza password a Database SQL di Azure richiede determinate configurazioni del database. Verificare le impostazioni seguenti nel server logico in Azure per connettersi correttamente a Database SQL di Azure in ambienti locali e ospitati:
Per le connessioni di sviluppo locale, assicurarsi che il server logico SQL di Azure sia configurato per consentire all'indirizzo IP del computer locale e ad altri servizi di Azure di connettersi:
Nel menu delle risorse del portale di Azure, in Sicurezza, selezionare Rete.
Selezionare il pulsante Reti selezionate per visualizzare opzioni di configurazione aggiuntive.
Selezionare Aggiungere l'indirizzo IPv4 client (xx.xx.xx.xx.xx) per aggiungere una regola del firewall che consentirà le connessioni dall'indirizzo IPv4 del computer locale. In alternativa, è anche possibile selezionare + Aggiungi una regola del firewall per immettere un indirizzo IP specifico a propria scelta.
Selezionare la casella di controllo Consenti alle risorse e ai servizi di Azure di accedere a questo server.
Avviso
L'abilitazione dell'impostazione Consenti a servizi e risorse di Azure di accedere a questo server non è una procedura di protezione consigliata per gli scenari di produzione. Le applicazioni reali devono implementare approcci più sicuri, ad esempio restrizioni firewall più avanzate o configurazioni di reti virtuali.
Per altre informazioni sulle configurazioni di sicurezza del database, vedere le seguenti risorse:
Al server deve essere abilitata anche l'autenticazione Microsoft Entra e deve essere assegnato un account amministratore di Microsoft Entra. Per le connessioni di sviluppo locali, l'account amministratore di Microsoft Entra deve essere un account con il quale è possibile accedere localmente anche a Visual Studio o all'interfaccia della riga di comando di Azure. È possibile verificare se nel server è abilitata l'autenticazione Microsoft Entra dalla pagina Microsoft Entra ID del server logico.
Se stai usando un account Azure personale, assicurati di aver configurato Microsoft Entra per Database SQL di Azure in modo da poter assegnare il tuo account come amministratore del server. Se stai usando un account aziendale, è probabile che Microsoft Entra ID sia già configurato per te.
Creare il progetto
I passaggi descritti in questa sezione creano un'API Web minima .NET usando l'interfaccia della riga di comando di .NET o Visual Studio 2022.
Nella barra del menu di Visual Studio, vai su File>NewProject>.
Nella finestra di dialogo, immetti
ASP.NETnella casella di ricerca del modello di progetto e seleziona il risultato ASP.NET Core Web API. Selezionare Avanti nella parte inferiore della finestra di dialogo.Per il Project Name, inserisci
DotNetSQL. Mantenere i valori predefiniti per il resto dei campi e selezionare Avanti.Per il Framework, seleziona .NET 10.0 e deseleziona Usa controller. Questa guida di avvio rapido usa un modello di API minimo per semplificare la creazione e la configurazione degli endpoint.
Scegliere Create. Il nuovo progetto si apre nell'ambiente di Visual Studio.
Aggiungere Entity Framework Core al progetto
Per connetterti ad database SQL di Azure utilizzando .NET e Entity Framework Core, aggiungi i seguenti pacchetti NuGet al tuo progetto, utilizzando uno dei seguenti metodi:
Nella finestra Esplora soluzioni fare clic con il pulsante destro del mouse sul nodoDipendenze del progetto, quindi selezionare Gestisci pacchetti NuGet.
Nella finestra generata, cercare EntityFrameworkCore. Individuare e installare i pacchetti seguenti:
-
Microsoft.EntityFrameworkCore: fornisce funzionalità essenziali di Entity Framework Core -
Microsoft.EntityFrameworkCore.SqlServer: fornisce componenti aggiuntivi per la connessione al server logico -
Microsoft.EntityFrameworkCore.Design: fornisce supporto per l'esecuzione di migrazioni di Entity Framework -
Microsoft.EntityFrameworkCore.Tools: fornisce supporto per gli strumenti della console di Gestione pacchetti di Visual Studio (solo PowerShell) -
Microsoft.AspNetCore.OpenApi: Opzionale - fornisce supporto per la generazione di documentazione OpenAPI -
Swashbuckle.AspNetCore.SwaggerUI: Opzionale - fornisce l'interazione UI OpenAPI con gli endpoint dell'app
Aggiungere il codice per connettersi al database SQL di Azure
Le librerie Entity Framework Core si basano sulle librerie Microsoft.Data.SqlClient e Azure.Identity per implementare connessioni senza password a database SQL di Azure. La libreria Azure.Identity fornisce una classe denominata DefaultAzureCredential che gestisce l'autenticazione senza password in Azure.
DefaultAzureCredential supporta più metodi di autenticazione e determina quello da usare in fase di esecuzione. Questo approccio consente all'app di usare metodi di autenticazione diversi in ambienti diversi (locale o di produzione) senza implementare codice specifico dell'ambiente. La panoramica della libreria di identità di Azure illustra l'ordine e le posizioni in cui DefaultAzureCredential cerca le credenziali.
Completare i passaggi seguenti per connettersi a database SQL di Azure usando Entity Framework Core e la classe DefaultAzureCredential sottostante:
Aggiungere una sezione
ConnectionStringsal fileappsettings.Development.jsonin modo che corrisponda al codice seguente. Sostituire<server>.database.windows.netcon il nome del server di database senza password a cui connettersi e<database>con il nome del database.{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ConnectionStrings": { "AZURE_SQL_CONNECTIONSTRING": "Data Source=<server>.database.windows.net;Initial Catalog=<database>;Authentication=Active Directory Default;Encrypt=True;" } }Nota
Ricordarsi di aggiornare i segnaposto
<your database-server-name>e<your-database-name>nella stringa di connessione del database. Le stringhe di connessione senza password sono sicure per essere sottoposte al controllo del codice sorgente, perché non contengono elementi riservati come nomi utente, password o chiavi di accesso.La stringa di connessione senza password comprende un valore di configurazione di
Authentication=Active Directory Default, che consente a Entity Framework Core di usareDefaultAzureCredentialper connettersi ai servizi di Azure. Quando l'app viene eseguita in locale, esegue l'autenticazione con l'utente con cui si è connessi a Visual Studio. Dopo la distribuzione dell'app in Azure, lo stesso codice individua e applica l'identità gestita associata all'app ospitata, configurata in un secondo momento.Sostituire il contenuto del file
Program.cscon il codice seguente:using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(); builder.Services.AddOpenApi(); var connection = string.Empty; if (builder.Environment.IsDevelopment()) { builder.Configuration.AddEnvironmentVariables().AddJsonFile("appsettings.Development.json"); connection = builder.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING"); } else { connection = Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING"); } builder.Services.AddDbContext<PersonDbContext>(options => options.UseSqlServer(connection)); var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.MapOpenApi(); app.UseSwaggerUI(options => { options.SwaggerEndpoint("/openapi/v1.json", "v1"); }); } app.MapGet("/", () => "Hello world!"); app.MapGet("/Person", (PersonDbContext context) => context.Person.ToList()); app.MapPost("/Person", (Person person, PersonDbContext context) => { context.Add(person); context.SaveChanges(); }); app.Run(); public class Person { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } public class PersonDbContext(DbContextOptions<PersonDbContext> options) : DbContext(options) { public DbSet<Person> Person { get; set; } }Il codice precedente gestisce i passaggi seguenti:
- Recupera la stringa di connessione al database senza password dal file
appsettings.Development.jsonper lo sviluppo locale, o dalle variabili di ambiente per gli scenari di produzione ospitati. - Registra la classe
DbContextEntity Framework Core con il contenitore di inserimento delle dipendenze .NET. Per altre informazioni suDbContext, vedere la documentazione introduttiva di Entity Framework Core. - Configura il supporto OpenAPI .NET 10.0 con SwaggerUI per fornire un'interfaccia utente che puoi utilizzare per interagire con gli endpoint dell'app e il database.
- Aggiunge endpoint per recuperare e aggiungere entità nel database.
- Definisce una classe
Personper rappresentare un singolo record nella tabella del databasePersonse la classePersonDbContextregistrata nel contenitore di dependency injection di .NET.
- Recupera la stringa di connessione al database senza password dal file
Eseguire migrazioni per creare il database
Per aggiornare lo schema del database e adattarlo al tuo modello dati usando Entity Framework Core, usa una migrazione. Le migrazioni possono creare e aggiornare in modo incrementale uno schema del database per mantenerlo sincronizzato con il modello di dati dell'applicazione. Per saperne di più su questo schema, consulta la panoramica delle migrazioni.
Apri una finestra del terminale nella directory principale del tuo progetto.
Eseguire il comando seguente per generare una migrazione iniziale che possa creare il database:
Add-Migration InitialCreateUna cartella
Migrationsdovrebbe essere visualizzata nella directory del progetto, insieme a un file denominatoInitialCreatecon numeri univoci anteposti. Eseguire la migrazione per creare il database usando il comando seguente e gli strumenti di Entity Framework Core creano lo schema del database in Azure definito dallaPersonDbContextclasse .Update-Database
Test dell'app in locale
L'app è pronta per essere testata localmente. Assicurati di essere connesso a Visual Studio o alla interfaccia della riga di comando di Azure con lo stesso account che hai impostato come amministratore del tuo database.
Seleziona il pulsante esegui in alto in Visual Studio per avviare il progetto API.
Nella pagina Swagger UI (ad esempio,
https://localhost:<port>/swagger), espandi ilPOSTmetodo e seleziona Prova.Modificare il codice JSON di esempio per includere i valori per il nome e il nome della famiglia. Selezionare Esegui per aggiungere un nuovo record al database. L'API restituisce una risposta di esito positivo.
Espandere il
GETmetodo nella pagina dell'interfaccia utente di Swagger e selezionare Prova. Selezionare Esegui e, in questo modo, viene restituita la persona appena creata.
Eseguire la distribuzione nel servizio app di Azure
L'app è pronta per essere distribuita su Azure. Visual Studio può creare un servizio app di Azure per distribuire l'applicazione in un singolo flusso di lavoro.
Assicurati che l'app sia arrestata e che la compilazione venga completata correttamente.
Nella finestra Esplora soluzioni di Visual Studio, fare clic con il pulsante destro del mouse sul nodo del progetto di primo livello e scegliere Pubblica.
Nella finestra di dialogo di pubblicazione selezionare Azure come destinazione di distribuzione, quindi selezionare Avanti.
Per la destinazione specifica, selezionare Servizio app di Azure (Windows), quindi scegliere Avanti.
Selezionare l'icona + verde per creare un nuovo servizio app in cui eseguire la distribuzione e immettere i valori seguenti:
- Nome: lasciare il valore predefinito.
- Nome sottoscrizione: Seleziona la sottoscrizione a cui vuoi effettuare il deployment.
- Gruppo di risorse: selezionare Nuovo e creare un nuovo gruppo di risorse denominato msdocs-dotnet-sql.
- Piano di hosting: selezionare Nuovo per aprire la finestra di dialogo del piano di hosting. Lasciare i valori predefiniti, quindi selezionare OK.
- Selezionare Crea per chiudere la finestra di dialogo iniziale. Visual Studio crea la risorsa App Service su Azure.
Dopo aver creato la risorsa, assicurati di selezionarla nell'elenco dei servizi app, e poi seleziona Avanti.
Nel passaggio Gestione API, selezionare la casella di controllo Salta questo passaggio nella parte inferiore, quindi selezionare Fine.
Selezionare Pubblica nella parte in alto a destra del riepilogo del profilo di pubblicazione per distribuire l'app in Azure.
Al termine della distribuzione, Visual Studio avvia il browser per visualizzare l'app ospitata. Vedi il Hello world messaggio dall'endpoint predefinito. Tuttavia, a questo punto gli endpoint del database non funzionano correttamente in Azure. È comunque necessario configurare la connessione protetta tra il servizio app e il database SQL per recuperare i dati.
Connettere il servizio app al database SQL di Azure
Per collegare l'istanza di App Service a database SQL di Azure, completare i seguenti passaggi:
Creare un'identità gestita per il servizio app. La
Microsoft.Data.SqlClientlibreria inclusa nell'app individua automaticamente l'identità gestita, proprio come ha individuato l'utente di Visual Studio locale.Creare un utente del database SQL e associarlo all'identità gestita del servizio app.
Assegnare ruoli SQL all'utente del database che consentano di leggere, scrivere e potenzialmente di ottenere altre autorizzazioni.
Puoi utilizzare più strumenti per implementare questi passaggi:
Connettore di servizi è uno strumento che semplifica le connessioni autenticate tra vari servizi in Azure. Attualmente Service Connector supporta la connessione di un App Service a un database SQL utilizzando l'estensione senza password di interfaccia della riga di comando di Azure.
Installare o aggiornare l'estensione senza password di Service Connector:
az extension add --name serviceconnector-passwordless --upgradeEsegui il
az webapp connection create sqlcomando per collegare la tua web app al database usando un'identità gestita assegnata dal sistema. Sostituire i segnaposto con i valori appropriati:az webapp connection create sql -g <your-resource-group> -n <your-app-service-name> --tg <your-database-server-resource-group> --server <your-database-server-name> --database <your-database-name> --system-identity
È possibile verificare le modifiche apportate dal connettore di servizi nelle impostazioni dei servizi app.
Vai alla pagina Identità del tuo App Service. Nella scheda Assegnata dal sistema , lo Stato deve essere impostato su Attivato. Questo valore indica che è stata abilitata un'identità gestita assegnata dal sistema per l'app.
Vai alla pagina di Configurazione del tuo App Service. Nella scheda Stringhe di connessione dovrebbe essere visualizzata una stringa di connessione denominata
AZURE_SQL_CONNECTIONSTRING. Selezionare il testo Fare clic per visualizzare il valore per visualizzare la stringa di connessione senza password generata. Il nome di questa stringa di connessione è allineato a quello configurato nell'app, quindi viene individuato automaticamente durante l'esecuzione in Azure.
Important
Sebbene questa soluzione offra un approccio base per iniziare, non è una buona pratica per ambienti di produzione aziendali. In questi scenari, l'app non dovrebbe eseguire tutte le operazioni con un'unica identità elevata. Implementa il principio del minimo privilegio configurando più identità con permessi specifici per compiti specifici. Per altre informazioni sulla configurazione dei ruoli e della sicurezza del database, vedere:
Testare l'applicazione distribuita
Passare all'URL dell'app per testare il funzionamento della connessione al database SQL di Azure. È possibile individuare l'URL dell'app nella pagina di panoramica del servizio app. Accodare il percorso /person alla fine dell'URL per passare allo stesso endpoint testato in locale.
La persona creata in locale verrà visualizzata nel browser. L'applicazione è ora connessa al database SQL di Azure in ambienti locali e ospitati.
Pulire le risorse
Al termine dell'utilizzo del database SQL di Azure, eliminare la risorsa per evitare costi accidentali.
Nella barra di ricerca del portale di Azure, cercare Azure SQL e selezionare il risultato corrispondente.
Individuare e selezionare il proprio database nell'elenco dei database.
Nella pagina Panoramica del database SQL di Azure, selezionare Elimina.
Nella pagina Azure: vuoi davvero eliminare... che viene visualizzata, digitare il nome del database per confermare, quindi selezionare Elimina.
Nota
Se hai distribuito l'app di esempio su Azure, assicurati di cercare ed eliminare anche la risorsa del Servizio App per evitare costi indesiderati.
Contenuto correlato
- Esercitazione: Proteggere un database nel database SQL di Azure
- Autorizza l'accesso al database ad database SQL di Azure
- Panoramica delle funzionalità di sicurezza del database SQL di Azure e dell'istanza gestita di SQL
- Guida per soddisfare i requisiti di sicurezza comuni con database SQL di Azure e Istanza gestita di SQL di Azure