SQL Azure: Protezione di SQL Azure

La sicurezza è un fattore altrettanto essenziale per le soluzioni ospitate, benché gli strumenti e le tecniche utilizzati siano certamente diversi.

Joshua Hoffman

Il cloud computing ha di recente acquisito maggiore importanza nell'ambito dell'infrastruttura IT. Sebbene l'elaborazione on-premise continui a ricoprire un ruolo di primo piano, le soluzioni ospitate iniziano ad assumere un certo rilievo grazie alla scalabilità, all'elasticità e ai risparmi economici che consentono di conseguire e che rappresentano elementi fondamentali per le organizzazioni più flessibili. Questo discorso è valido in particolar modo per quanto riguarda la gestione dei dati.

SQL Azure è un esempio calzante di questo tipo di piattaforma cloud. SQL Azure è un'infrastruttura potente e semplice per archiviare, gestire e analizzare i dati che offre al contempo anche i vantaggi del cloud computing. L'infrastruttura ospitata condivisa consente di ridurre costi diretti e indiretti, il modello "a consumo" permette di ottenere un livello maggiore di efficienza e inoltre sono incluse la funzionalità di tolleranza di errore ed elevata disponibilità.

Nonostante i numerosi vantaggi relativi al cloud computing, la migrazione dei dati a una soluzione basata su cloud come SQL Azure rappresenta una svolta nell'approccio a concetti relativi alla gestione IT, quali la sicurezza. Il modello di sicurezza è diverso, ma è comunque necessario tenere in considerazione molti fattori per garantire la massima protezione dei dati, tra cui vari metodi di controllo di accesso, autenticazione e crittografia.

Introduzione a SQL Azure

Per i neofiti di SQL Azure, iniziare è un gioco da ragazzi, soprattutto per chi ha familiarità con gli strumenti di gestione di SQL Server classici come SQL Server Management Studio (che a partire da SQL Server 2008 R2 può essere utilizzato anche per gestire le istanze di SQL Azure).

Il primo passaggio consiste nel configurare un account per la piattaforma Windows Azure accedendo al Portale per i clienti dei Microsoft Online Services. In questo modo sarà possibile accedere ai servizi Windows Azure, tra cui Windows Azure, SQL Azure e Windows Azure AppFabric (che offre agli sviluppatori un modo per collegare le applicazioni e i servizi all'interno del perimetro aziendale e di rete).

Una volta configurato un account, è possibile accedere al pannello di controllo di SQL all'indirizzo sql.azure.com. Per creare una nuova istanza di SQL Azure, fare clic su Nuovo server database.

Controllo di accesso alla rete

Per proteggere i dati, il firewall di SQL Azure impedisce qualsiasi accesso ai database finché non verrà concesso da specifici computer. L'accesso tramite il firewall di SQL Azure si basa su un indirizzo IP di origine, gestibile tramite il Portale di gestione della piattaforma Windows Azure (vedere la Figura 1) o direttamente nel database master con le stored procedure.

Per configurare le regole firewall di SQL Azure, attenersi alla procedura indicata di seguito:

  1. Accedere al Portale di gestione della piattaforma Windows Azure.
  2. Nel riquadro sinistro fare clic su Database.
  3. Nel riquadro sinistro espandere l'abbonamento e fare clic sul server SQL Azure per cui si desidera configurare regole firewall.
  4. Fare clic su Regole firewall per visualizzare l'elenco delle regole.
  5. Fare clic su Aggiungi per creare una nuova regola firewall. Per consentire ad altri servizi Windows l'accesso al server SQL Azure, selezionare "Consenti ad altri servizi Windows Azure di accedere al server". Verrà creata una regola con intervallo IP "0.0.0.0 - 0.0.0.0". È possibile utilizzare la stessa procedura per aggiornare ed eliminare regole.

Nota: ogni regola firewall deve disporre di un nome univoco senza distinzione tra maiuscole e minuscole.

Figura 1 Configurazione di una regola firewall in SQL Azure.

Per maggiori dettagli sulla configurazione di regole firewall mediante le stored procedure SQL, vedere Modifica delle regole firewall mediante T-SQL.

Il servizio SQL Azure è disponibile tramite la porta TCP 1433. A seconda dei criteri firewall esistenti, potrebbe inoltre essere necessario configurare computer client per consentire l'accesso in uscita tramite questa porta. Per maggiori dettagli sul processo, vedere Configurazione del firewall lato client.

Autenticazione SQL

Il metodo di autenticazione in SQL Azure si basa sull'autenticazione SQL Server tradizionale. Non supporta l'autenticazione Windows (sicurezza integrata). È necessario fornire le credenziali ogni volta che ci si collega a SQL Azure.

Se si crea un nuovo server database in SQL Azure, sarà possibile creare un account di accesso e una password di entità di livello server, equivalente all'account amministratore di sistema di SQL Server. È possibile creare ulteriori account di accesso con T-SQL, mediante la gestione database per SQL Azure o SQL Server Management Studio 2008 R2.

È possibile creare ed eliminare account di accesso tramite il database master, utilizzando il comando CREATE LOGIN. Connettersi ad esempio al database master mediante la gestione database per SQL Azure o SQL Server Management Studio ed eseguire la query seguente.

--create a login named "testlogin"
CREATE LOGIN testlogin WITH password='Passw0rd!';

È possibile eseguire query per account di accesso esistenti mediante il comando illustrato nella Figura 2.

Figura 2 Esecuzione di query per account di accesso SQL Server mediante la gestione database per SQL Azure.

Una volta creati gli account di accesso, sarà possibile creare utenti a livello di database associati a questi account e assegnare specifiche autorizzazioni a livello di database a ogni utente. Per creare un utente per un database specifico, connettersi al database appropriato ed eseguire il comando indicato di seguito:

CREATE USER testuser FROM LOGIN testlogin;

A questo punto è possibile assegnare autorizzazioni con il comando seguente:

EXEC sp_addrolemember 'db_datareader', 'testuser';

Per un elenco completo dei ruoli, vedere Ruoli a livello di database. In caso di esecuzione di istruzioni CREATE/ALTER/DROP LOGIN o CREATE/ALTER/DROP USER (con l'opzione FOR/FROM LOGIN), ogni istruzione dovrà essere l'unica presente nel batch T-SQL; in caso contrario si verificherà un errore.

Crittografia di connessione

SQL Azure trasferisce i dati utilizzando il flusso di dati tabulare (TDS, Tabular Data Stream) attraverso una connessione SSL. SQL Azure non supporta connessioni non crittografate e dispone di un certificato firmato emesso da un'autorità di certificazione. Tutti questi fattori consentono di proteggere la trasmissione dei dati e impediscono attacchi man-in-the-middle.

L'handshake di crittografia avviene nel flusso PRELOGIN del protocollo TDS. Qualsiasi client che comunica con SQL Azure ne avrà bisogno (inclusi SQL Server Management Studio e le applicazioni tramite ADO.NET).

Per crittografare connessioni da SQL Server Management Studio, attenersi alla procedura indicata di seguito:

  1. Aprire SQL Server Management Studio.
  2. In Esplora oggetti fare clic su Connetti e quindi su Motore di database.
  3. In Conntetti al server fare clic su Proprietà connessione.
  4. Selezionare Crittografa connessione (vedere la Figura 3).

Figura 3 Crittografia di una connessione a SQL Azure in SQL Server Management Studio

Per convalidare certificati con il codice dell'applicazione ADO.NET, impostare Encrypt=True e TrustServerCertificate=False nella stringa di connessione del database.

Crittografia dei dati

SQL Azure non supporta attualmente i meccanismi standard di crittografia dei dati supportati da SQL Server e che includono crittografia dei dati trasparenti, chiavi asimmetriche, chiavi simmetriche e funzioni Transact-SQL quali ENCRYPTBYPASSPHRASE e DECRYPTBYPASSPHRASE, CREATE/ALTER/DROP DATABASE ENCRYPTION KEY o CREATE/ALTER/DROP MASTER KEY.

Con SQL Azure è necessario crittografare o decrittografare a livello dell'applicazione. In altre parole, l'applicazione è responsabile della crittografia e decrittografia dei dati in caso di invio o recupero di dati da SQL Azure.

Man mano che si esegue l'hosting di determinate applicazioni e dati nella cloud, è fondamentale non trascurare la sicurezza dei dati e tenere sempre presente l'architettura di sicurezza basata su cloud. L'esigenza di sicurezza rimane invariata: solo le tecniche cambiano con la piattaforma di cloud computing. Per ulteriori risorse sull'argomento, leggere l'articolo Linee guida e limitazioni sulla sicurezza di SQL Azure.

Seguendo le procedure consigliate per la gestione degli account e delle connessioni, è possibile sfruttare al meglio i vantaggi derivanti dalla migrazione dei dati alla cloud. Non sarà necessario compromettere la sicurezza delle informazioni aziendali più importanti.

Joshua Hoffman

Joshua Hoffman è l'ex caporedattore di TechNet Magazine*. Oggi è un autore e consulente indipendente che offre i suoi servizi ai clienti in merito a tecnologie e marketing rivolto a destinatari specifici. Hoffman è inoltre caporedattore di ResearchAccess.com, un sito dedicato alla crescita e all'arricchimento della community coinvolta nella ricerca di mercato. Vive a New York City.*

Contenuto correlato