Esporta (0) Stampa
Espandi tutto

Linee guida e limitazioni per la sicurezza per il database SQL di Azure

Aggiornamento: febbraio 2014

In questo argomento vengono descritte le linee guida e le limitazioni del Microsoft database SQL di Microsoft Azure in materia di sicurezza. Si considerino questi punti in fase di gestione della sicurezza di istanze di database SQL di Azure:

Il servizio database SQL di Microsoft Azure è disponibile solo attraverso la porta TCP 1433. Per accedere a un database SQL di Azure dal computer, verificare che il firewall consenta le comunicazioni TCP in uscita sulla porta TCP 1433.

Prima di connettersi al server database SQL di Azure per la prima volta, è necessario utilizzare il portale di gestione della piattaforma Azure per configurare il firewall database SQL di Azure. È necessario creare un'impostazione del firewall di livello server che consenta tentativi di connessione dal computer o da Azure al server database SQL di Azure. Se si desidera controllare l'accesso ad alcuni database nel server database SQL di Azure, è possibile creare regole firewall di livello database per i rispettivi database. Per ulteriori informazioni, vedere Firewall di database SQL di Azure.

Tutte le comunicazioni tra il database SQL di Microsoft Azure e l'applicazione richiedono sempre la crittografia (SSL). Se nell'applicazione client non viene eseguita la convalida dei certificati durante la connessione, la connessione al database SQL di Microsoft Azure sarà soggetta ad attacchi "man in the middle".

Per convalidare i certificati con strumenti o codice dell'applicazione, richiedere in modo esplicito una connessione crittografata e non ritenere attendibili i certificati server. Se il codice dell'applicazione o gli strumenti non richiedono una connessione crittografata, riceveranno comunque connessioni crittografate, ma potrebbero non convalidare i certificati server e pertanto saranno soggetti ad attacchi "man in the middle".

Per convalidare i certificati con codice dell'applicazione ADO.NET, impostare Encrypt=True e TrustServerCertificate=False nella stringa di connessione del database. Per ulteriori informazioni, vedere Procedura: Connettersi al database SQL di Azure tramite ADO.NET.

Anche in SQL Server Management Studio è supportata la convalida dei certificati. Nella finestra di dialogo Connetti al server fare clic su Crittografa connessione nella scheda Proprietà connessione.

noteNota
In SQL Server Management Studio il database SQL di Microsoft Azure non è supportato nelle versioni precedenti a SQL Server 2008 R2.

Sebbene in SQLCMD il database SQL di Microsoft Azure sia supportato a partire da SQL Server 2008, nelle versioni precedenti a SQL Server 2008 R2 non è supportata la convalida dei certificati. Per convalidare i certificati con SQLCMD a partire da SQL Server 2008 R2, utilizzare l'opzione della riga di comando -N e non utilizzare l'opzione -C. Tramite l'opzione -N in SQLCMD viene richiesta una connessione crittografata. Se non si utilizza l'opzione -C, in SQLCMD il certificato server non verrà ritenuto attendibile in modo implicito e la convalida verrà forzata.

Per informazioni tecniche supplementari, vedere l'articolo relativo alla sicurezza della connessione a database SQL di Azure nel sito Wiki di TechNet.

Nel database SQL di Microsoft Azure è supportata solo l'autenticazione di SQL Server. Non è supportata l'autenticazione di Windows (sicurezza integrata). Gli utenti dovranno fornire le credenziali (account di accesso e password) ogni volta che si connettono al database SQL di Microsoft Azure. Per ulteriori informazioni sull'autenticazione di SQL Server, vedere Scelta di una modalità di autenticazione nella documentazione online di SQL Server.

Per garantire prestazioni ottimali, se una password viene reimpostata nel database SQL di Microsoft Azure, l'autenticazione della connessione non verrà rieseguita, anche se la connessione viene reimpostata a causa di un pool di connessioni. Si tratta di un comportamento diverso rispetto a quanto accade in un'istanza locale di SQL Server. Se la password è stata modificata, la richiesta avrà esito negativo e la sessione verrà disconnessa (terminata). Per eseguire l'autenticazione utilizzando la nuova password, utilizzare il comando KILL per terminare la sessione ed effettuare nuovamente la connessione. Per ulteriori informazioni su Kill, vedere KILL (database SQL di Azure).

Quando si gestiscono gli account di accesso e gli utenti nel database SQL di Microsoft Azure, occorre rispettare alcune restrizioni.

  • Per l'account di accesso dell'entità di livello server si applicano le restrizioni seguenti:

    • Non è possibile modificare o rimuovere l'utente del database nel database master che corrisponde all'account di accesso dell'entità di livello server.

    • Sebbene l'account di accesso dell'entità di livello server non sia un membro dei due ruoli del database dbmanager e loginmanager nel database master, dispone di tutte le autorizzazioni concesse a questi due ruoli.

noteNota
Questo account di accesso viene creato durante il provisioning del server ed è analogo all'account di accesso sa in un'istanza di SQL Server. Per ulteriori informazioni sul provisioning del server, vedere Server Provisioning Model (SQL Data Services).

Per tutti gli account di accesso si applicano le restrizioni seguenti:

  • Inglese (Stati Uniti) è la lingua predefinita.

  • Per accedere al database master, è necessario che per ogni account di accesso sia stato eseguito il mapping a un account utente nel database master.

  • Se non si specifica un database nella stringa di connessione, la connessione verrà eseguita al database master per impostazione predefinita.

  • È necessario essere connessi al database master in fase di esecuzione delle istruzioni CREATE/ALTER/DROP LOGIN e CREATE/ALTER/DROP DATABASE.

  • In fase di esecuzione delle istruzioni CREATE/ALTER/DROP LOGIN e CREATE/ALTER/DROP DATABASE in un'applicazione ADO.NET, non è consentito utilizzare comandi con parametri. Per ulteriori informazioni, vedere Comandi e parametri (ADO.NET).

  • In fase di esecuzione di istruzioni CREATE/ALTER/DROP DATABASE e CREATE/ALTER/DROP LOGIN, ognuna di queste istruzioni dovrà essere l'unica istruzione in un batch Transact-SQL. In caso contrario si verificherà un errore. Nell'esempio seguente, Transact-SQL verifica che il database sia presente. In caso affermativo, verrà chiamata un'istruzione DROP DATABASE per rimuovere il database. Poiché l'istruzione DROP DATABASE non è l'unica istruzione nel batch, se si esegue questo Transact-SQL verrà restituito un errore.

IF EXISTS (SELECT [name]
           FROM   [sys].[databases]
           WHERE  [name] = N'database_name')
     DROP DATABASE [database_name];
go
  • In fase di esecuzione dell'istruzione CREATE USER con l'opzione FOR/FROM LOGIN, dovrà essere l'unica istruzione in un batch Transact-SQL.

  • In fase di esecuzione dell'istruzione ALTER USER con l'opzione WITH LOGIN, dovrà essere l'unica istruzione in un batch Transact-SQL.

  • Solo l'account di accesso dell'entità di livello server e i membri del ruolo del database dbmanager nel database master dispongono delle autorizzazioni per eseguire le istruzioni CREATE DATABASE e DROP DATABASE.

  • Solo l'account di accesso dell'entità di livello server e i membri del ruolo del database loginmanager nel database master dispongono delle autorizzazioni per eseguire le istruzioni CREATE LOGIN, ALTER LOGIN e DROP LOGIN.

  • Se il proprietario di un ruolo del database tenta di aggiungere o rimuovere un altro utente del database dal ruolo specifico, è possibile che venga restituito il seguente errore: User or role 'Name' does not exist in this database. Questo errore si verifica poiché l'utente non è visibile al proprietario. Per risolvere il problema, concedere al ruolo proprietario l'autorizzazione VIEW DEFINITION sull'utente.

Si considerino questi punti per rendere le applicazioni di database SQL di Azure meno vulnerabili a rischi per la sicurezza:

  • Utilizzare sempre gli aggiornamenti più recenti: in fase di connessione al database SQL di Azure, utilizzare sempre la versione più aggiornata di strumenti e librerie per impedire vulnerabilità della sicurezza. Per ulteriori informazioni sugli strumenti e sulle librerie supportati, vedere Linee guida e limitazioni generali per il database SQL di Azure.

  • Bloccare le connessioni in ingresso attraverso la porta TCP 1433: per consentire la comunicazione delle applicazioni con il database SQL di Microsoft Azure sono necessarie esclusivamente le connessioni in uscita attraverso la porta TCP 1433. Se le comunicazioni in ingresso non sono necessarie per altre applicazioni nel computer, accertarsi che il firewall continui a bloccare le connessioni in ingresso attraverso la porta TCP 1433.

  • Impedire vulnerabilità di tipo SQL injection: per accertarsi che nelle applicazioni non siano presenti vulnerabilità di tipo SQL injection, utilizzare query con parametri laddove possibile. Accertarsi inoltre di esaminare attentamente il codice ed eseguire un test di penetrazione prima di distribuire l'applicazione.

Vedere anche

Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft