Share via


Eseguire la migrazione di un'applicazione .NET per usare connessioni senza password con Database SQL di Azure

Si applica a:database SQL di Azure

Le richieste dell'applicazione al database SQL di Azure devono essere autenticate. Anche se sono disponibili più opzioni per l'autenticazione al database SQL di Azure, è consigliabile assegnare priorità alle connessioni senza password nelle applicazioni, laddove possibile. I metodi di autenticazione tradizionali che utilizzano password o chiavi private generano rischi e complicazioni per la sicurezza. Visitare l’hub delle connessioni senza password per i servizi di Azure per ricevere altre informazioni sui vantaggi del passaggio alle connessioni senza password. L'esercitazione seguente spiega come eseguire la migrazione di un'applicazione esistente per la connessione a Database SQL di Azure al fine di usare connessioni senza password anziché una soluzione che preveda nome utente e password.

Configurare il database SQL di Azure

Le connessioni senza password usano l'autenticazione di Microsoft Entra per connettersi ai servizi di Azure, compreso Database SQL di Azure. Con l'autenticazione di Microsoft Entra, è possibile gestire centralmente le identità per semplificare la gestione delle autorizzazioni. Informazioni su come configurare l'autenticazione di Microsoft Entra per Database SQL di Azure:

Per questa guida alla migrazione, verificare di disporre di un amministratore di Microsoft Entra assegnato al database SQL di Azure.

  1. Passare alla pagina Microsoft Entra del server logico.

  2. Selezionare Imposta amministratore per aprire il menu a comparsa Microsoft Entra ID.

  3. Nel menu a comparsa Microsoft Entra ID, cercare l'utente da assegnare come amministratore.

  4. Selezionare l’utente e scegliere Seleziona.

    A screenshot showing how to enable Microsoft Entra admin.

Configurare l'ambiente di sviluppo locale

Le connessioni senza password possono essere configurate in modo da funzionare sia per gli ambienti locali che per quelli ospitati in Azure. In questa sezione vengono applicate configurazioni per consentire ai singoli utenti di eseguire l'autenticazione a database SQL di Azure per lo sviluppo locale.

Accedere ad Azure

Per lo sviluppo locale, verificare di aver eseguito l'accesso con lo stesso account Azure AD che si vuole usare per accedere al database SQL di Azure. È possibile eseguire l'autenticazione tramite strumenti di sviluppo diffusi, come l'interfaccia della riga di comando di Azure o Azure PowerShell. Gli strumenti di sviluppo con cui è possibile eseguire l'autenticazione variano a seconda dei linguaggi.

Accedere ad Azure tramite l'interfaccia della riga di comando di Azure usando il comando seguente:

az login

Creare un utente del database e assegnare i ruoli

Creare un utente nel database SQL di Azure. L'utente deve corrispondere all'account Azure usato per accedere in locale tramite strumenti di sviluppo come ad esempio Visual Studio o IntelliJ.

  1. Nel portale di Azure, passare al database SQL e selezionare Editor di query (anteprima).

  2. Selezionare Continua come <your-username> sul lato destro della schermata per accedere al database con il proprio account.

  3. Nella visualizzazione dell'editor di query eseguire i seguenti comandi T-SQL:

    CREATE USER [user@domain] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user@domain];
    ALTER ROLE db_datawriter ADD MEMBER [user@domain];
    ALTER ROLE db_ddladmin ADD MEMBER [user@domain];
    GO
    

    A screenshot showing how to use the Azure Query editor.

    L'esecuzione di questi comandi assegna il ruolo Collaboratore database SQL all'account specificato. Questo ruolo consente all'identità di leggere, scrivere e modificare i dati e lo schema del database. Per altre informazioni sui ruoli assegnati, vedere Ruoli predefiniti del database.

Aggiornare la configurazione della connessione locale

Il codice dell'applicazione esistente che si connette a database SQL di Azure usando la libreria Microsoft.Data.SqlClient o Entity Framework Core continuerà a funzionare con connessioni senza password. Tuttavia, è necessario aggiornare la stringa di connessione al database per usare il formato senza password. Il codice seguente, ad esempio, funziona sia con l'autenticazione SQL che con le connessioni senza password:

string connectionString = app.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING")!;

using var conn = new SqlConnection(connectionString);
conn.Open();

var command = new SqlCommand("SELECT * FROM Persons", conn);
using SqlDataReader reader = command.ExecuteReader();

Per aggiornare la stringa di connessione di riferimento (AZURE_SQL_CONNECTIONSTRING) per usare il formato di stringa di connessione senza password:

  1. Individuare la stringa di connessione. Per lo sviluppo locale con applicazioni .NET, in genere è archiviata in una delle posizioni seguenti:

    • Il file di configurazione appsettings.json per il progetto.
    • Il file di configurazione launchsettings.json per i progetti di Visual Studio.
    • Variabili di ambiente del sistema o del contenitore locali.
  2. Sostituire il valore della stringa di connessione con il formato senza password seguente. Aggiornare i segnaposto <database-server-name> e <database-name> con i propri valori:

    Server=tcp:<database-server-name>.database.windows.net,1433;Initial Catalog=<database-name>;
    Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication="Active Directory Default";
    

Testare l'app

Eseguire l'app in locale e verificare che le connessioni al database SQL di Azure funzionino come previsto. Considerare che potrebbero essere necessari alcuni minuti prima che le modifiche apportate agli utenti e ai ruoli di Azure vengano propagate nell'ambiente Azure. L'applicazione è ora configurata per l'esecuzione in locale senza che gli sviluppatori debbano gestire i segreti nell'applicazione stessa.

Configurare l'ambiente host di Azure

Dopo aver configurato l'app per l'uso delle connessioni senza password in locale, lo stesso codice può eseguire l'autenticazione al database SQL di Azure dopo la distribuzione in Azure. Le sezioni seguenti spiegano come configurare un'applicazione distribuita per la connessione a database SQL di Azure usando un'identità gestita. Le identità gestite forniscono un'identità gestita automaticamente in Microsoft Entra ID (precedentemente Azure Active Directory) per le applicazioni da usare per la connessione alle risorse che supportano l'autenticazione di Microsoft Entra. Vedere altre informazioni sulle identità gestite:

Creare l'identità gestita

Creare un'identità gestita assegnata dall'utente tramite il portale di Azure o l’interfaccia della riga di comando di Azure. L'applicazione utilizza l'identità per eseguire l'autenticazione ad altri servizi.

  1. Nella parte superiore della portale di Azure, cercare Identità gestite. Selezionare il risultato Identità gestite.
  2. Selezionare + Crea nella parte superiore della pagina di panoramica delle Identità gestite.
  3. Nella scheda Dati principali immettere i valori seguenti:
    • Sottoscrizione: selezionare la sottoscrizione desiderata.
    • Gruppo di risorse: selezionare il gruppo di risorse desiderato.
    • Area: selezionare un'area vicina alla propria posizione.
    • Nome: immettere un nome riconoscibile per l'identità, ad esempio MigrationIdentity.
  4. Selezionare Rivedi e crea nella parte inferiore della pagina.
  5. Al termine della convalida, selezionare Crea. Azure crea una nuova identità assegnata dall'utente.

Dopo aver creato la risorsa, selezionare Vai alla risorsa per visualizzare i dettagli dell'identità gestita.

A screenshot showing how to create a managed identity using the Azure portal.

Associare l'identità gestita all'app Web

Configurare l'app Web per usare l'identità gestita assegnata creata dall'utente.

Completare i passaggi seguenti nel portale di Azure per associare l'identità gestita assegnata dall'utente all'app. Gli stessi passaggi si applicano ai servizi di Azure seguenti:

  • Azure Spring Apps
  • App contenitore di Azure
  • Macchine virtuali di Azure
  • Servizio Azure Kubernetes
  • Passare alla pagina di panoramica dell'app Web.
  1. Selezionare Identità nel riquadro di spostamento a sinistra.

  2. Nella pagina Identità, passare alla scheda Assegnata dall'utente.

  3. Selezionare + Aggiungi per aprire il riquadro a comparsa Aggiungi identità gestita assegnata dall'utente.

  4. Selezionare la sottoscrizione utilizzata in precedenza per creare l'identità.

  5. Cercare MigrationIdentity per nome e selezionarlo dai risultati della ricerca.

  6. Selezionare Aggiungi per associare l'identità all'app.

    A screenshot showing how to assign a managed identity.

Creare un utente del database per l’identità e assegnare i ruoli

Creare un utente del database SQL che esegua il mapping con l'identità gestita assegnata dall'utente. Assegnare i ruoli SQL necessari all'utente per consentire all'app di leggere, scrivere e modificare i dati e lo schema del database.

  1. Nel portale di Azure, passare al database SQL e selezionare Editor di query (anteprima).

  2. Selezionare Continua come <username> sul lato destro della schermata per accedere al database con il proprio account.

  3. Nella visualizzazione dell'editor di query eseguire i seguenti comandi T-SQL:

    CREATE USER [user-assigned-identity-name] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_datawriter ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_ddladmin ADD MEMBER [user-assigned-identity-name];
    GO
    

    A screenshot showing how to use the Azure Query editor to create a SQL user for a managed identity.

    L'esecuzione di questi comandi assegna il ruolo Collaboratore database SQL all'identità gestita assegnata dall'utente. Questo ruolo consente all'identità di leggere, scrivere e modificare i dati e lo schema del database.


Importante

Prestare attenzione mentre si assegnano ruoli utente del database in ambienti di produzione aziendali. In tali scenari l'app non deve eseguire tutte le operazioni mediante un'unica identità con privilegi elevati. Provare ad adottare il principio dei privilegi minimi configurando più identità con autorizzazioni specifiche per attività specifiche.

Per altre informazioni sulle configurazioni di ruoli del database e sicurezza, vedere le seguenti risorse:

Aggiornare la stringa di connessione

Aggiornare la configurazione dell'app di Azure in modo che usi il formato di stringa di connessione senza password. Le stringhe di connessione sono in genere archiviate come variabili di ambiente nell'ambiente host dell'app. Le istruzioni seguenti sono incentrate sul servizio app, ma altri servizi di hosting di Azure forniscono configurazioni simili.

  1. Passare alla pagina di configurazione dell'Istanza del servizio app e individuare la stringa di connessione del database SQL di Azure.

  2. Selezionare l'icona di modifica e aggiornare il valore stringa di connessione in modo che corrisponda al seguente formato. Modificare i segnaposto <database-server-name> e <database-name> con i valori del proprio servizio.

    Server=tcp:<database-server-name>.database.windows.net,1433;Initial Catalog=<database-name>;
    Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication="Active Directory Default";
    
  3. Salvare le modifiche e riavviare l'applicazione, se ciò non avviene automaticamente.

Testare l'applicazione

Testare l’app, verificando che tutto funzioni ancora. La propagazione delle modifiche nell'ambiente di Azure potrebbe richiedere alcuni minuti.

Passaggi successivi

In questa esercitazione, si è appreso come eseguire la migrazione di un'applicazione a connessioni senza password.

È possibile consultare le risorse seguenti per esplorare i concetti illustrati in questo articolo in modo più approfondito: