Usare gli endpoint servizio di rete virtuale e le regole per il database SQL di Azure

Si applica a:database SQL di Azure Azure Synapse Analytics

Le regole di rete virtuale sono una funzionalità di sicurezza del firewall che controlla se il server per i database e i pool elastici in database SQL di Azure o per i database SQL dedicati (in precedenza SQL Data Warehouse) in Azure Synapse Analytics accetta comunicazioni inviate da subnet specifiche nelle reti virtuali. Questo articolo illustra perché le regole di rete virtuale sono talvolta l'opzione migliore per consentire in modo sicuro la comunicazione con il database in database SQL e Azure Synapse Analytics.

Nota

Questo articolo si applica sia a database SQL che ad Azure Synapse Analytics. Per semplicità, il termine database si riferisce a entrambi i database in database SQL e azure Synapse Analytics. Analogamente, tutti i riferimenti al server fanno riferimento al server logico che ospita database SQL e Azure Synapse Analytics.

Per creare una regola di rete virtuale, deve essere disponibile un endpoint servizio di rete virtuale al quale la regola possa fare riferimento.

Nota

Microsoft Entra ID era precedentemente noto come Azure Active Directory (Azure AD).

Creare una regola di rete virtuale

Se si vuole creare solo una regola di rete virtuale, è possibile passare alla procedura e alla spiegazione più avanti in questo articolo.

Dettagli sulle regole di rete virtuale

Questa sezione illustra alcuni dettagli sulle regole di rete virtuale.

Una sola area geografica

Ogni endpoint servizio di rete virtuale si applica a una sola area di Azure. L'endpoint non consente ad altre aree di accettare la comunicazione dalla subnet.

Ogni regola di rete virtuale è limitata all'area a cui si applica il relativo endpoint sottostante.

Livello del server, non a livello di database

Ogni regola di rete virtuale si applica all'intero server, non solo a un database specifico nel server. In altre parole, le regole di rete virtuale si applicano a livello di server, non a livello di database.

Al contrario, le regole IP possono essere applicate a qualsiasi livello.

Ruoli di amministrazione di sicurezza

Esiste una separazione dei ruoli di sicurezza nell'amministrazione degli endpoint servizio di rete virtuale. Ogni ruolo indicato di seguito deve svolgere determinate azioni:

  • Network Amministrazione (ruolo Collaboratore rete): attivare l'endpoint.
  • Database Amministrazione (ruolo Collaboratore SQL Server): aggiornare l'elenco di controllo di accesso (ACL) per aggiungere la subnet specificata al server.

Alternativa al controllo degli accessi in base al ruolo di Azure

I ruoli di amministratore di rete e amministratore di database hanno più funzionalità di quelle necessarie a gestire le regole di rete virtuale. È necessario solo un subset delle relative funzionalità.

È possibile scegliere di usare il controllo degli accessi in base al ruolo (RBAC) in Azure per creare un singolo ruolo personalizzato che contiene solo il subset necessario di funzionalità. È possibile usare il ruolo personalizzato invece di coinvolgere l'Amministrazione di rete o l'Amministrazione database. L'area di attacco dell'esposizione alla sicurezza è inferiore se si aggiunge un utente a un ruolo personalizzato rispetto all'aggiunta dell'utente agli altri due ruoli di amministratore principali.

Nota

In alcuni casi, il database in database SQL e la subnet della rete virtuale si trovano in sottoscrizioni diverse. In questi casi, è necessario verificare le configurazioni seguenti:

  • Entrambe le sottoscrizioni devono trovarsi nello stesso tenant di Microsoft Entra.
  • L'utente dispone delle autorizzazioni necessarie per avviare operazioni, ad esempio l'abilitazione degli endpoint di servizio e l'aggiunta di una subnet di rete virtuale al server specificato.
  • Entrambe le sottoscrizioni devono avere registrato il provider di Microsoft.Sql.

Limiti

Per database SQL, la funzionalità regole di rete virtuale presenta le limitazioni seguenti:

  • Nel firewall del database in database SQL ogni regola di rete virtuale fa riferimento a una subnet. Tutte queste subnet a cui si fa riferimento devono essere ospitate nella stessa area geografica che ospita il database.
  • Ogni server può avere fino a 128 voci ACL per qualsiasi rete virtuale.
  • Le regole di rete virtuale si applicano solo alle reti virtuali di Azure Resource Manager e non alle reti del modello di distribuzione classica.
  • L'attivazione degli endpoint servizio di rete virtuale per database SQL abilita anche gli endpoint per Database di Azure per MySQL e Database di Azure per PostgreSQL. Con gli endpoint impostati su ON, i tentativi di connessione dagli endpoint al Database di Azure per MySQL o alle istanze di Database di Azure per PostgreSQL potrebbero non riuscire.With endpoints set to ON, attempts to connect from the endpoints to your Database di Azure per MySQL or Database di Azure per PostgreSQL instances might fail.
    • Il motivo sottostante è che Database di Azure per MySQL e Database di Azure per PostgreSQL probabilmente non hanno una regola di rete virtuale configurata. È necessario configurare una regola di rete virtuale per Database di Azure per MySQL e Database di Azure per PostgreSQL.
    • Per definire le regole del firewall di rete virtuale in un server logico SQL già configurato con endpoint privati, impostare Nega l'accesso alla rete pubblica su No.
  • Nel firewall gli intervalli di indirizzi IP si applicano agli elementi di rete seguenti, ma le regole di rete virtuale non sono:

Considerazioni sull'uso degli endpoint di servizio

Quando si usano gli endpoint di servizio per database SQL, esaminare le considerazioni seguenti:

  • In uscita verso database SQL di Azure indirizzi IP pubblici è necessario. I gruppi di sicurezza di rete (NSG) devono essere aperti per database SQL indirizzi IP per consentire la connettività. A tale scopo, è possibile usare i tag del servizio NSG per database SQL.

ExpressRoute

Se si usa ExpressRoute dall'ambiente locale, per il peering pubblico o il peering Microsoft, sarà necessario identificare gli indirizzi IP NAT usati. Per il peering pubblico, ogni circuito ExpressRoute usa per impostazione predefinita due indirizzi IP NAT applicati al traffico del servizio di Azure quando il traffico entra nel backbone della rete di Microsoft Azure. Per il peering Microsoft, gli indirizzi IP NAT usati vengono forniti dal cliente o dal provider di servizi. Per consentire l'accesso alle risorse del servizio è necessario autorizzare questi indirizzi IP pubblici nell'impostazione del firewall IP per le risorse. Per trovare gli indirizzi IP del circuito ExpressRoute per il peering pubblico, aprire un ticket di supporto con ExpressRoute tramite il portale di Azure. Per altre informazioni su NAT per il peering pubblico di ExpressRoute e Microsoft, vedere Requisiti NAT per il peering pubblico di Azure.

Per consentire la comunicazione dal circuito a database SQL, è necessario creare regole di rete IP per gli indirizzi IP pubblici del nat.

Impatto dell'uso degli endpoint servizio di rete virtuale con Archiviazione di Azure

Archiviazione di Azure ha implementato la stessa funzionalità che consente di limitare la connettività all'account di archiviazione di Azure. Se si sceglie di usare questa funzionalità con un account Archiviazione di Azure che database SQL usa, è possibile che si verifichino problemi. Di seguito è riportato un elenco e una descrizione delle database SQL e delle funzionalità di Azure Synapse Analytics interessate da questo problema.

Istruzione PolyBase e COPY di Azure Synapse Analytics

PolyBase e l'istruzione COPY vengono comunemente usati per caricare i dati in Azure Synapse Analytics da Archiviazione di Azure account per l'inserimento di dati con velocità effettiva elevata. Se l'account Archiviazione di Azure che si caricano dati da limiti di accesso solo a un set di subnet di rete virtuale, la connettività quando si usa PolyBase e l'istruzione COPY nell'account di archiviazione si interromperanno. Per abilitare gli scenari di importazione ed esportazione usando COPY e PolyBase con Azure Synapse Analytics che si connette a Archiviazione di Azure protetto in una rete virtuale, seguire la procedura descritta in questa sezione.

Prerequisiti

  • Installare Azure PowerShell. Per altre informazioni, vedere Installare il modulo Azure Az PowerShell.
  • Se si dispone di un account per utilizzo generico v1 o Archiviazione BLOB di Azure, è prima necessario eseguire l'aggiornamento alla versione 2 per utilizzo generico seguendo i passaggi descritti in Eseguire l'aggiornamento a un account di archiviazione per utilizzo generico v2.
  • È necessario avere Consenti servizi Microsoft attendibile di accedere a questo account di archiviazione attivato nel menu Firewall dell'account Archiviazione di Azure e Impostazioni reti virtuali. L'abilitazione di questa configurazione consentirà a PolyBase e all'istruzione COPY di connettersi all'account di archiviazione usando l'autenticazione avanzata in cui il traffico di rete rimane nel backbone di Azure. Per altre informazioni, vedere questa guida.

Importante

Il modulo Di Azure Resource Manager di PowerShell è ancora supportato da database SQL di Azure, ma tutto lo sviluppo futuro è destinato al Az.Sql modulo. Il modulo AzureRM continuerà a ricevere correzioni di bug almeno fino a dicembre 2020. Gli argomenti per i comandi nei moduli Az e AzureRm sono sostanzialmente identici. Per altre informazioni sulla compatibilità, vedere Introduzione del nuovo modulo Az di Azure PowerShell.

Passaggi

  1. Se si dispone di un pool SQL dedicato autonomo (in precedenza SQL Data Warehouse), registrare il server SQL con l'ID Microsoft Entra usando PowerShell:

    Connect-AzAccount
    Select-AzSubscription -SubscriptionId <subscriptionId>
    Set-AzSqlServer -ResourceGroupName your-database-server-resourceGroup -ServerName your-SQL-servername -AssignIdentity
    

    Questo passaggio non è necessario per i pool SQL dedicati all'interno di un'area di lavoro di Azure Synapse Analytics. L'identità gestita assegnata dal sistema (SA-MI) dell'area di lavoro è membro del ruolo synapse Amministrazione istrator e dispone quindi di privilegi elevati per i pool SQL dedicati dell'area di lavoro.

  2. Creare un account per utilizzo generico v Archiviazione 2 v seguendo la procedura descritta in Creare un account di archiviazione.

  3. Nella pagina dell'account di archiviazione selezionare Controllo di accesso (IAM).

  4. Selezionare Aggiungi aggiungi>assegnazione di ruolo per aprire la pagina Aggiungi assegnazione di ruolo.

  5. Assegnare il ruolo seguente. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

    Impostazione Valore
    Ruolo Collaboratore dati BLOB di archiviazione
    Assegna accesso a Utente, gruppo o entità servizio
    Membri Server o area di lavoro che ospita il pool SQL dedicato registrato con Microsoft Entra ID

    Screenshot that shows Add role assignment page in Azure portal.

    Nota

    Solo i membri con privilegi di proprietario per l'account di archiviazione possono eseguire questo passaggio. Per diversi ruoli predefiniti di Azure, vedere Ruoli predefiniti di Azure.

  6. Per abilitare la connettività PolyBase all'account Archiviazione di Azure:

    1. Creare una chiave master del database se non ne è stata creata una in precedenza.

      CREATE MASTER KEY [ENCRYPTION BY PASSWORD = 'somepassword'];
      
    2. Creare una credenziale con ambito database con IDENTITY = 'Identità del servizio gestita'.

      CREATE DATABASE SCOPED CREDENTIAL msi_cred WITH IDENTITY = 'Managed Service Identity';
      
      • Non è necessario specificare edizione Standard CRET con una chiave di accesso Archiviazione di Azure perché questo meccanismo usa l'identità gestita sotto le quinte. Questo passaggio non è necessario per i pool SQL dedicati all'interno di un'area di lavoro di Azure Synapse Analytics. L'identità gestita assegnata dal sistema (SA-MI) dell'area di lavoro è membro del ruolo synapse Amministrazione istrator e dispone quindi di privilegi elevati per i pool SQL dedicati dell'area di lavoro.

      • Il nome IDENTITY deve essere "Identità del servizio gestito" per consentire la connettività PolyBase per l'uso con un account Archiviazione di Azure protetto in una rete virtuale.

    3. Creare un'origine dati esterna con lo schema per la connessione all'account abfss:// di archiviazione per utilizzo generico v2 usando PolyBase.

      CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss WITH (TYPE = hadoop, LOCATION = 'abfss://myfile@mystorageaccount.dfs.core.windows.net', CREDENTIAL = msi_cred);
      
      • Se sono già presenti tabelle esterne associate a un account Archiviazione per utilizzo generico v1 o BLOB, è necessario eliminare prima tali tabelle esterne. Eliminare quindi l'origine dati esterna corrispondente. Creare quindi un'origine dati esterna con lo abfss:// schema che si connette a un account di archiviazione per utilizzo generico v2, come illustrato in precedenza. Quindi ricreare tutte le tabelle esterne usando questa nuova origine dati esterna. È possibile usare la Creazione guidata script di generazione e pubblicazione per generare script di creazione per tutte le tabelle esterne per semplificare.
      • Per altre informazioni sullo abfss:// schema, vedere Usare l'URI di Azure Data Lake Archiviazione Gen2.
      • Per altre informazioni sui comandi T-SQL, vedere CREATE EXTERNAL DATA SOURCE.
    4. Eseguire una query come di consueto usando tabelle esterne.

database SQL controllo BLOB

Il controllo SQL di Azure può scrivere log di controllo SQL nel proprio account di archiviazione. Se questo account di archiviazione usa la funzionalità endpoint servizio di rete virtuale, vedere come scrivere il controllo in un account di archiviazione dietro rete virtuale e firewall.

Aggiungere una regola del firewall di rete virtuale al server

Molto tempo fa, prima che questa funzionalità fosse stata migliorata, era necessario attivare gli endpoint servizio di rete virtuale prima di poter implementare una regola di rete virtuale in tempo reale nel firewall. Gli endpoint correlati a una determinata subnet di rete virtuale a un database in database SQL. A partire da gennaio 2018, è possibile aggirare questo requisito impostando il flag IgnoreMissingVNetServiceEndpoint . A questo punto, è possibile aggiungere una regola del firewall di rete virtuale al server senza attivare gli endpoint servizio di rete virtuale.

La semplice impostazione di una regola del firewall non consente di proteggere il server. È anche necessario attivare gli endpoint servizio di rete virtuale per rendere effettiva la sicurezza. Quando si attivano gli endpoint di servizio, la subnet della rete virtuale subisce tempi di inattività fino a quando non completa la transizione da disattivata a attivata. Questo periodo di inattività è particolarmente vero nel contesto di reti virtuali di grandi dimensioni. È possibile usare il flag IgnoreMissingVNetServiceEndpoint per ridurre o eliminare il tempo di inattività durante la transizione.

È possibile impostare il flag IgnoreMissingVNetServiceEndpoint usando PowerShell. Per altre informazioni, vedere PowerShell per creare un endpoint servizio di rete virtuale e una regola per database SQL.

Nota

Per istruzioni simili in Azure Synapse Analytics, vedere Regole del firewall IP di Azure Synapse Analytics

Usare portale di Azure per creare una regola di rete virtuale

Questa sezione illustra come usare il portale di Azure per creare una regola di rete virtuale nel database in database SQL. La regola indica al database di accettare la comunicazione da una determinata subnet contrassegnata come endpoint servizio di rete virtuale.

Nota

Se si intende aggiungere un endpoint di servizio alle regole del firewall di rete virtuale del server, assicurarsi prima di tutto che gli endpoint di servizio siano attivati per la subnet.

Se gli endpoint di servizio non sono attivati per la subnet, il portale chiede di abilitarli. Selezionare il pulsante Abilita nello stesso riquadro in cui si aggiunge la regola.

Prerequisiti

È necessario avere già una subnet contrassegnata con il nome del tipo di endpoint servizio di rete virtuale specifico pertinente per database SQL.

Procedure del portale di Azure

  1. Accedere al portale di Azure.

  2. Cercare e selezionare SERVER SQL e quindi selezionare il server. In Sicurezza selezionare Rete.

  3. Nella scheda Accesso pubblico verificare che l'accesso alla rete pubblica sia impostato su Seleziona reti. In caso contrario, le impostazioni delle reti virtuali sono nascoste. Selezionare + Aggiungi rete virtuale esistente nella sezione Reti virtuali.

    Screenshot that shows logical server properties for Networking.

  4. Nel nuovo riquadro Crea/Aggiorna compilare le caselle con i nomi delle risorse di Azure.

    Suggerimento

    È necessario includere il prefisso dell'indirizzo corretto per la subnet. È possibile trovare il valore del prefisso Indirizzo nel portale. Passare a Tutte le risorse>Tutti i tipi>Reti virtuali. Il filtro visualizza le reti virtuali. Selezionare la rete virtuale e quindi subnet. La colonna ADDRESS RANGE contiene il prefisso dell'indirizzo necessario.

    Screenshot that shows filling in boxes for the new rule.

  5. Vedere la regola di rete virtuale risultante nel riquadro Firewall .

    Screenshot that shows the new rule on the Firewall pane.

  6. Impostare Consenti alle risorse e ai servizi di Azure di accedere a questo server su No.

    Importante

    Se si lascia Consenti ai servizi e alle risorse di Azure di accedere a questo server selezionato, il server accetta la comunicazione da qualsiasi subnet all'interno del limite di Azure. Ovvero la comunicazione che ha origine da uno degli indirizzi IP riconosciuti come quelli all'interno degli intervalli definiti per i data center di Azure. Lasciare abilitato il controllo potrebbe essere un accesso eccessivo dal punto di vista della sicurezza. La funzionalità endpoint servizio di Microsoft Azure Rete virtuale in coordinamento con la funzionalità delle regole di rete virtuale di database SQL insieme può ridurre la superficie di attacco di sicurezza.

  7. Selezionare il pulsante OK nella parte inferiore del riquadro.

Nota

Le regole presentano gli stati seguenti:

  • Pronto: indica che l'operazione avviata è riuscita.
  • Operazione non riuscita: indica che l'operazione avviata non è riuscita.
  • Eliminato: si applica solo all'operazione Di eliminazione e indica che la regola è stata eliminata e non è più applicabile.
  • In corso: indica che l'operazione è in corso. Mentre l'operazione è in questo stato, viene applicata la regola precedente.

Usare PowerShell per creare una regola di rete virtuale

Uno script può anche creare regole di rete virtuale usando il cmdlet New-AzSqlServerVirtualNetworkRule di PowerShell o az network vnet create. Per altre informazioni, vedere PowerShell per creare un endpoint servizio di rete virtuale e una regola per database SQL.

Usare l'API REST per creare una regola di rete virtuale

Internamente, i cmdlet di PowerShell per le azioni di rete virtuale SQL chiamano le API REST. È possibile chiamare direttamente le API REST. Per altre informazioni, vedere Regole di rete virtuale: Operazioni.

Risolvere gli errori 40914 e 40615

Connessione i errore 40914 si riferisce alle regole di rete virtuale, come specificato nel riquadro Firewall nel portale di Azure. L'errore 40615 è simile, ad eccezione delle regole degli indirizzi IP nel firewall.

Errore 40914

Testo del messaggio: "Impossibile aprire il server '[server-name]' richiesto dall'account di accesso. Il client non è autorizzato ad accedere al server".

Descrizione dell'errore: il client si trova in una subnet che include endpoint server di rete virtuale. Tuttavia, il server non dispone di alcuna regola di rete virtuale che concede alla subnet il diritto di comunicare con il database.

Risoluzione degli errori: nel riquadro Firewall del portale di Azure usare il controllo regole di rete virtuale per aggiungere una regola di rete virtuale per la subnet.

Errore 40615

Testo del messaggio: "Impossibile aprire il server '{0}' richiesto dall'account di accesso. Il client con indirizzo IP '{1}' non è autorizzato ad accedere al server".

Descrizione errore: il client sta tentando di connettersi da un indirizzo IP non autorizzato a connettersi al server. Il firewall del server non dispone di una regola di indirizzo IP che consente a un client di comunicare dall'indirizzo IP specificato al database.

Risoluzione dell'errore: immettere l'indirizzo IP del client come regola IP. Usare il riquadro Firewall nel portale di Azure per eseguire questo passaggio.

Passaggi successivi