Linee guida e limitazioni sulla sicurezza (database SQL di Windows Azure)
In questo argomento vengono descritte le linee guida e le limitazioni del Database SQL di Windows Azure Microsoft in materia di sicurezza. Si considerino questi punti in fase di gestione della sicurezza di istanze di Database SQL:
-
Firewall
-
Crittografia e convalida di certificati
-
Autenticazione
-
Account di accesso e utenti
-
Procedure consigliate
Firewall
Il servizio del Database SQL di Windows Azure è disponibile esclusivamente tramite la porta TCP 1433. Per accedere a Database SQL dal computer, accertarsi che il firewall consenta la comunicazione TCP in uscita attraverso la porta TCP 1433.
Prima di connettersi al server Database SQL per la prima volta, è necessario utilizzare il portale di gestione della piattaforma Windows Azure per configurare il firewall Database SQL. È necessario creare un'impostazione del firewall di livello server che consenta tentativi di connessione dal computer o da Windows Azure al server Database SQL. Se si desidera controllare l'accesso ad alcuni database nel server Database SQL, è possibile creare regole firewall di livello database per i rispettivi database. Per ulteriori informazioni, vedere Firewall di database SQL di Windows Azure.
Crittografia e convalida di certificati
Tutte le comunicazioni tra il Database SQL di Windows 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 Windows 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 a database SQL di Windows 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.
Nota |
|---|
| In SQL Server Management Studio il Database SQL di Windows Azure non è supportato nelle versioni precedenti a SQL Server 2008 R2. |
Sebbene in SQLCMD il Database SQL di Windows 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 Windows Azure nel sito Wiki di TechNet.
Autenticazione
Nel Database SQL di Windows 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 Windows 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 Windows Azure, non verrà rieseguita immediatamente l'autenticazione della connessione, 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 on-premise di SQL Server. Al contrario, il Database SQL di Windows Azure si basa su un meccanismo di riesecuzione dell'autenticazione per disconnettere sessioni obsolete. Se viene inviata una nuova richiesta in qualsiasi connessione e sono trascorsi più di 60 minuti dall'ultima esecuzione di autenticazione, l'autenticazione verrà nuovamente eseguita. Se la password è stata modificata, la richiesta avrà esito negativo e la sessione verrà disconnessa (terminata).
Account di accesso e utenti
In caso di gestione di account di accesso e utenti nel Database SQL di Windows Azure, sussistono 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
dbmanagereloginmanagernel databasemaster, dispone di tutte le autorizzazioni concesse a questi due ruoli.
-
Non è possibile modificare o rimuovere l'utente del database nel database master che corrisponde all'account di accesso dell'entità di livello server.
Nota |
|---|
| 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 Modello di provisioning di database SQL di Windows Azure. |
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 LOGINeCREATE/ALTER/DROP DATABASE. -
In fase di esecuzione delle istruzioni
CREATE/ALTER/DROP LOGINeCREATE/ALTER/DROP DATABASEin 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 DATABASEeCREATE/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'istruzioneDROP DATABASEper rimuovere il database. Poiché l'istruzioneDROP DATABASEnon è 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 USERcon l'opzioneFOR/FROM LOGIN, dovrà essere l'unica istruzione in un batch Transact-SQL. -
In fase di esecuzione dell'istruzione
ALTER USERcon l'opzioneWITH 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
dbmanagernel databasemasterdispongono delle autorizzazioni per eseguire le istruzioniCREATE DATABASEeDROP DATABASE. -
Solo l'account di accesso dell'entità di livello server e i membri del ruolo del database
loginmanagernel databasemasterdispongono delle autorizzazioni per eseguire le istruzioniCREATE LOGIN,ALTER LOGINeDROP 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 l'errore seguente:
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'autorizzazioneVIEW DEFINITIONsull'utente.
Procedure consigliate
Si considerino questi punti per rendere le applicazioni di Database SQL meno vulnerabili a rischi per la sicurezza:
-
Utilizzare sempre gli aggiornamenti più recenti: in fase di connessione a Database SQL, utilizzare sempre la versione più aggiornata di strumenti e librerie per impedire vulnerabilità di sicurezza. Per ulteriori informazioni sugli strumenti e sulle librerie supportati, vedere Linee guida e limitazioni generali (database SQL di Windows Azure).
-
Bloccare le connessioni in ingresso attraverso la porta TCP 1433: per consentire la comunicazione delle applicazioni con il Database SQL di Windows 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
Attività
Procedura: Configurare le impostazioni del firewall di livello server (database SQL di Windows Azure)Procedura: Configurare le impostazioni del firewall di livello database (database SQL di Windows Azure)
Concetti
Firewall di database SQL di Windows AzureLinee guida e limitazioni generali (database SQL di Windows Azure)
Gestione di database e account di accesso in database SQL di Windows Azure
Altre risorse
Portale di gestione della piattaforma Windows Azure
Nota