Book625891.book Page 52 Tuesday, March 24, 2009 1:46 PM Capitolo 3 Gestione della configurazione di rete, accesso e protezione della superficie di attacco In questo capitolo: Gestione dell’accesso alle funzionalità dei componenti SQL Server . . . . . . . . . . . .53 Configurazione dei servizi di SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56 Gestione della configurazione di rete e di SQL Native Client . . . . . . . . . . . . . . . . .68 Per controllare l’accesso al proprio server poche cose sono più importanti della configurazione di servizi, componenti e funzionalità di rete di Microsoft SQL Server. Ogni installazione SQL Server ha una configurazione specifica per servizi, componenti e rete, inoltre è tramite la configurazione che vengono stabiliti i livelli di protezione che controllano l’accesso alla superficie di attacco del server, ad esempio ■ Chi può accedere al server e tramite cosa ■ Quali servizi SQL Server vengono eseguiti automaticamente all’avvio e quali manualmente in base alle necessità ■ Dove e tramite cosa i componenti SQL Server sono in grado di connettersi (o essere connessi) alle risorse remote Limitando tutti questi aspetti della configurazione del server è possibile ridurre la superficie di attacco, migliorando così la protezione del server e le prestazioni generali, in quanto vengono eseguiti solo i servizi e i componenti necessari. L’accesso dei client a SQL Server viene gestito tramite i parametri di Configurazione SQL Native Client. L’accesso di SQL Server alle risorse locali e remote viene gestito tramite Servizi di SQL Server e Configurazione di rete SQL Server. Per gestire l’accesso dei client, i servizi SQL Server e la configurazione di rete è possibile utilizzare Gestione configurazione SQL Server. 52 Book625891.book Page 53 Tuesday, March 24, 2009 1:46 PM Capitolo 3 Gestione della configurazione di rete, accesso e protezione della superficie di attacco 53 Gestione dell’accesso alle funzionalità dei componenti SQL Server Per limitare la superficie di attacco del server e migliorarne la protezione, è necessario attivare solo le funzionalità necessarie a client e applicazioni. In questo modo si limitano i modi in cui il server può essere attaccato da utenti malintenzionati e si chiudono le vie per potenziali attacchi. Nella tabella 3-1 vengono illustrate le funzionalità relative alla superficie di attacco che si possono gestire per Motore di database di SQL Server e i servizi Analysis Services e Reporting Services. In SQL Server 2008 queste funzionalità della superficie di attacco vengono gestite utilizzando i criteri della Gestione basata sui criteri, come illustrato nel capitolo 18, “Implementazione della Gestione basata sui criteri”. Queste funzionalità sono disattivate per impostazione predefinita. Tabella 3-1 Funzionalità dei componenti per la gestione dell’accesso alla superficie di attacco Componente/Facet Descrizione/Utilizzo Motore di database AdHocRemoteQueries Enabled Le funzioni OPENROWSET e OPENDATASOURCE possono utilizzare connessioni ad hoc per funzionare con origini dati remote senza un amministratore che configura nello specifico server collegati o remoti. Se le applicazioni o gli script utilizzano queste funzioni, è necessario attivare il supporto per OPENROWSET e OPENDATASOURCE. Altrimenti, disattivare questa funzionalità. ClrIntegrationEnabled Grazie all’integrazione con Common Language Runtime (CLR) è possibile scrivere stored procedure, trigger, tipi definiti dall’utente e funzioni definite dall’utente utilizzando Microsoft Visual Basic .NET, C# e ogni altro linguaggio .NET Framework. Se le applicazioni o gli script utilizzano un linguaggio .NET Framework, attivare questa funzionalità. Altrimenti, disattivarla. DatabaseMailEnabled Posta elettronica database sostituisce SQL Mail come tecnica preferita per l’invio di messaggi di posta da SQL Server utilizzando il protocollo Simple Mail Transfer Protocol (SMTP). Attivare questa funzionalità se sono stati creati un database host di posta elettronica (eseguendo lo script %ProgramFiles%\Microsoft SQL Server\MSSQL.1\MSSQL\Install\ Install_DBMail_Upgrade.sql sul server) e i profili di posta elettronica database necessari, e se si desidera che le applicazioni e gli script siano in grado di utilizzare la stored procedure sp_send_dbmail per inviare messaggi di posta da SQL Server. Altrimenti, disattivare questa funzione. Book625891.book Page 54 Tuesday, March 24, 2009 1:46 PM 54 Parte I Nozioni principali sull’amministrazione di Microsoft SQL Server 2008 Tabella 3-1 Funzionalità dei componenti per la gestione dell’accesso alla superficie di attacco (continua) Componente/Facet Descrizione/Utilizzo RemoteDacEnabled Utilizzando l’utilità della riga di commando SQLCMD con il parametro – A, gli amministratori possono mantenere le installazioni SQL Server utilizzando una connessione dedicata dalla riga di comando, sia in locale che in remoto. Per impostazione predefinita sono consentite solo le connessioni dedicate locali. Se si desidera autorizzare connessioni dedicate remote, attivare questa funzionalità. Altrimenti, disattivarla. SoapEndpointsEnabled Con Servizi Web nativi è possibile accedere a SQL Server tramite HTTP utilizzando la messaggistica Simple Object Access Protocol (SOAP). I messaggi SOAP contengono comandi basati su testo formattati con XML. Se si prevede di utilizzare SOAP per lo scambio di dati e sono stati configurati gli endpoint HTTP necessari, è possibile configurare lo stato di ogni endpoint come avviato, arrestato o disabilitato. Notare che i componenti SQL Server Reporting Services, SQL Server Service Broker e Mirroring dei database utilizzano Servizi Web nativi, ma hanno configurazioni separate. OleAutomationEnabled Automazione OLE consente di utilizzare i batch Transact-SQL, le stored procedure e i trigger per fare riferimento a SQL DMO e agli oggetti personalizzati Automazione OLE. Attivare questa funzionalità se si desidera utilizzare Automazione OLE, incluse le stored procedure estese sp_OACreate, sp_OADestroy, sp_OAGetErrorInfo, sp_OAGetProperty, sp_OAMethod, sp_OASetProperty e sp_OAStop. Altrimenti, disattivarla. ServiceBrokerEndpoint Active Service Broker consente l’accodamento e la messaggistica per Motore di database. Le applicazioni possono utilizzare Service Broker per comunicare attraverso le interfacce di SQL Server. Se si prevede di utilizzare Service Broker nelle applicazioni e sono stati configurati gli endpoint HTTP necessari, è possibile configurare lo stato di ogni endpoint come avviato, arrestato o disabilitato. SqlMailEnabled SQL Mail può essere utilizzato con le applicazioni legacy per l’invio di messaggi di posta elettronica da SQL Server utilizzando SMTP. Attivare questa funzionalità se si desidera che le applicazioni legacy e gli script siano in grado di utilizzare la stored procedure xp_sendmail per l’invio di messaggi di posta da SQL Server. Altrimenti, disattivarla. XPCmdShellEnabled xp_cmdshell esegue le stringe di comando utilizzando la shell dei comandi del sistema operativo e restituisce i risultati sotto forma di righe di testo. Se si desidera che le applicazioni e gli script eseguano i comandi del sistema operativo è necessario attivare questa funzionalità. Per impostazione predefinita, solo i membri del ruolo server predefinito sysadmin possono eseguire xp_cmdshell. È possibile concedere l’autorizzazione per l’esecuzione ad altri utenti. Per gli utenti sysadmin, xp_cmdshell viene eseguito in un contesto di protezione in cui è in esecuzione il servizio SQL Server. Per gli atri utenti, xp_cmdshell impersonerà l’account proxy della shell dei comandi (come specificato utilizzando xp_cmdshell_proxy_account). Se l’account proxy non è disponibile, xp_cmdshell non funzionerà. Book625891.book Page 55 Tuesday, March 24, 2009 1:46 PM Capitolo 3 Tabella 3-1 Gestione della configurazione di rete, accesso e protezione della superficie di attacco 55 Funzionalità dei componenti per la gestione dell’accesso alla superficie di attacco (continua) Componente/Facet Descrizione/Utilizzo WebAssistantEnabled Nelle versioni precedenti di SQL Server, Pubblicazione guidata sul Web archiviava procedure che potevano essere utilizzate per generare file HMTL dai dati SQL Server. In SQL Server 2005 e SQL Server 2008, Reporting Services sostituisce queste stored procedure, in quanto questa funzionalità è più affidabile e offre maggiori opzioni di configurazione. In caso di applicazioni legacy o script che utilizzano Pubblicazione guidata sul Web, attivare questa funzionalità. Altrimenti, disattivarla. Analysis Services AdHocDataMining QueriesEnabled La funzione OPENROWSET Data Mining Extensions stabilisce una connessione a un oggetto origine dati utilizzando un nome di provider e una stringa di connessione. Ciò consente connessioni ad hoc verso origini dati remote senza che un amministratore configuri nello specifico server collegati o remoti. Attivare questa funzionalità se le applicazioni o gli script utilizzando OPENROWSET con Data Mining. In caso contrario, disattivare questa funzionalità per evitare che applicazioni e script passino un nome di provider e una stringa di connessione quando si utilizza la funzione OPENROWSET. AnonymousConnections Con le connessioni anonime, gli utenti non autenticati possono stabilire Enabled connessioni con Analysis Services. Attivare questa funzionalità se le applicazioni e gli script richiedono l’accesso di utenti non autenticati. Altrimenti, disattivarla. LinkedObjectsLinksFrom Con Analysis Services, si possono utilizzare oggetti collegati per OtherInstancesEnabled collegare dimensioni e gruppi di misure tra server. Se si desidera che questa istanza venga collegata ad altri server, attivare la funzionalità. Altrimenti, disattivarla. LinkedObjectsLinksTo OtherInstancesEnabled Con Analysis Services, si possono utilizzare oggetti collegati per collegare dimensioni e gruppi di misure tra server. Se si desidera che Analysis Server si colleghi ad altri server, selezionare Attiva collegamenti ad altre istanze. Altrimenti, disattivarla. ListenOnlyOnLocal Connections Analysis Services può funzionare sia con risorse remote che locali. Quando Analysis Services funziona con le risorse remote, ascolta le connessioni TCP/IP sia sulle istanze server locali che remote, consentendo connessioni da computer remoti. Quando Analysis Services può funzionare solo con le risorse remote, apre una porta TCP/IP sul server, ma ascolta solo le connessioni delle istanze server locali. Se si desidera che Analysis Services funzioni solo con le risorse locali, attivare questa funzionalità. Altrimenti, disattivarla. Book625891.book Page 56 Tuesday, March 24, 2009 1:46 PM 56 Parte I Nozioni principali sull’amministrazione di Microsoft SQL Server 2008 Tabella 3-1 Funzionalità dei componenti per la gestione dell’accesso alla superficie di attacco (continua) Componente/Facet Descrizione/Utilizzo UserDefinedFunctions Enabled Analysis Services è integrato con .NET Framework e può caricare assembly contenenti funzioni definite dall’utente. Tali funzioni possono essere scritte utilizzando CLR o gli oggetti COM (component object model). Gli oggetti CLR e le funzioni hanno un modello di protezione integrato. Gli oggetti COM non utilizzano questo modello, quindi sono meno sicuri. Attivare questa funzionalità se le applicazioni e gli script richiedono funzioni COM definite dagli utenti. Altrimenti, disattivarla per consentire solo funzioni CLR. Reporting Services ScheduledEventsAnd ReportDeliveryEnabled Con Reporting Services si possono utilizzare report ad hoc, su richiesta e pianificati. In genere, quando si installa Reporting Services, sono attivati tutti i tipi di report. Se non si utilizzano report pianificati è possibile disabilitarne la generazione e la consegna disattivando questa funzionalità. WebServiceRequests I componenti di Reporting Services utilizzano la messagistica SOAP AndHTTPAccessEnabled tramite HTTP per le comunicazioni e HTTP per le richieste di accesso URL. Queste funzionalità vengono gestite tramite il servizio Web Report Server e consentono di utilizzare Reporting Services tramite Gestione report, Progettazione report e SQL Server Management Studio. In genere, se è installato Reporting Services, il server gestirà le richieste HTTP e del servizio Web. Attivare questa funzionalità se le applicazioni client utilizzano il servizio Web Server report o se si utilizza Gestione report, Progettazione report o SQL Server Management Studio con questa installazione di Reporting Services. Altrimenti, disattivarla. ReportManagerEnabled Gestione report è un’applicazione basata sul Web per la visualizzazione dei report, la gestione del contenuto del server report e per il controllo dell’accesso ai server report eseguiti in modalità nativa. Attivare questa funzionalità se si utilizza Gestione report con questa installazione del servizio Reporting Services. Altrimenti, disattivarla. Configurazione dei servizi di SQL Server Gestione configurazione SQL Server viene implementato in una console personalizzata Microsoft Management Console, inoltre è disponibile come snap-in da aggiungere alle console personalizzate. Può essere avviato utilizzando uno dei seguenti modi: ■ Accedere al server di database attraverso un accesso locale o remoto, quindi avviare Gestione configurazione SQL Server facendo clic sul pulsante Start, Tutti i programmi, Microsoft SQL Server 2008, Strumenti di configurazione, Gestione configurazione SQL Server. Questo strumento può essere avviato anche facendo clic su Start, digitando sqlservermanager10.msc nella casella Esegui e premendo Invio. Book625891.book Page 57 Tuesday, March 24, 2009 1:46 PM Capitolo 3 ■ Gestione della configurazione di rete, accesso e protezione della superficie di attacco 57 In SQL Server Management Studio, aprire Server registrati premendo Ctrl+Alt+G. Utilizzare la relativa barra degli strumenti per selezionare il gruppo di livello superiore, quindi espandere i nodi del gruppo facendo doppio clic su ognuno. Fare clic con il pulsante destro del mouse sulla voce del server, quindi selezionare Gestione configurazione SQL Server. Quando viene avviato Gestione configurazione SQL Server, verrà visualizzata la finestra principale illustrata nella figura 3-1. Questo strumento può essere utilizzato per eseguire molte attività principali: ■ Gestire la configurazione dei servizi delle istanze SQL Server correlate ■ Gestire la configurazione delle connessioni delle istanze SQL Server correlate ■ Gestire la configurazione di SQL Native Client sul computer in cui viene eseguito SQL Server Nota Sui computer a 64 bit sono presenti più nodi per la gestione delle impostazioni di configurazione di client e rete. I nodi con il suffisso (32 bit) vengono utilizzati per gestire le impostazioni a 32 bit, mentre gli altri nodi per gestire quelle a 64 bit. Figura 3-1 Finestra principale di Gestione configurazione SQL Server Gestione della configurazione dei servizi Gestione configurazione SQL Server può essere utilizzato per visualizzare e gestire lo stato di avvio dei servizi di SQL Server. Dopo averlo avviato, fare clic sul nodo Servizi di SQL Server per visualizzare i servizi principali configurati per tutte le istanze di SQL Server 2008 in esecuzione sul computer a cui si è attualmente connessi. I servizi disponibili dipendono dai componenti installati. Considerare quanto segue: ■ Active Directory Helper. Eseguito come il servizio SQL Server Active Directory Helper. Il file eseguibile di questo servizio è Sqladhlp.exe, specificato con la riga di comando di avvio del servizio, ad esempio: "C:\Program Files\Microsoft SQL Server\100\Shared\sqladhlp.exe" Non può essere configurato in Gestione configurazione SQL Server. Utilizzare invece l’utilità Servizi. Book625891.book Page 58 Tuesday, March 24, 2009 1:46 PM 58 ■ Parte I Nozioni principali sull’amministrazione di Microsoft SQL Server 2008 Analysis Services. Eseguito come il servizio SQL Server Analysis Services (InstanceName). Il file eseguibile di questo servizio è Msmdsrv.exe e viene eseguito come specifico file di inizializzazione specificato nella riga di comando di avvio, ad esempio: "C:\Program Files\Microsoft SQL Server\100\Shared\sqladhlp.exe" msmdsrv.exe" -s "C:\Program Files\Microsoft SQL Server\ MSAS10.CUSTDATAW\OLAP\Config" Il file di inizializzazione (Msmdsrv.ini) viene definito utilizzando XML e non deve essere modificato direttamente. ■ Motore di database. Eseguito come il servizio SQL Server (InstanceName). Il file eseguibile di questo servizio è Sqlservr.exe e viene eseguito con un’istanza specificata nella riga di comando di avvio, ad esempio (per l’istanza predefinita, MSSQLSERVER): "C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\ Binn\sqlservr.exe" –s MSSQLSERVER Nota Benché alcuni componenti, ad esempio Motore di database, possano essere avviati direttamente dalla riga di comando, i servizi in genere vengono avviati con lo strumento appropriato oppure con NET START. Se si avvia manualmente Motore di database, è possibile impostare specifici parametri di avvio, come illustrato nel capitolo 4, “Configurazione e ottimizzazione di Microsoft SQL Server 2008.” I parametri di avvio possono essere configurati anche utilizzando Gestione configurazione SQL Server. Fare doppio clic sul servizio SQL Server per l’istanza che si desidera utilizzare. Nella finestra di dialogo Proprietà, nella scheda Accesso, fare clic su Interrompi per arrestare il servizio. Nella scheda Avanzate, inserire i parametri di avvio nel campo Parametri di avvio. Infine, nella scheda Accesso, fare clic su Avvia per avviare il servizio. ■ Integration Services. Eseguito come il servizio SQL Server Integration Services. Il file eseguibile di questo servizio è Msdtssrvr.exe, specificato con la riga di comando di avvio del servizio, ad esempio: "C:\Program Files\Microsoft SQL Server\100\DTS\Binn\MsDtsSrvr.exe" ■ Reporting Services. Eseguito come il servizio SQL Server (InstanceName). Il file eseguibile di questo servizio è ReportingServicesService.exe, specificato con la riga di comando di avvio del servizio, ad esempio: "C:\Program Files\Microsoft SQL Server\MSRS10.CUSTDATAW\ Reporting Services\ReportServer\bin\ReportingServicesService.exe" ■ SQL Server Agent. Eseguito come il servizio SQL Server Agent (InstanceName). Il file eseguibile di questo servizio è Sqlagent.exe e viene eseguito come specifico file di inizializzazione specificato nella riga di comando di avvio, ad esempio: "C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\ Binn\SQLAGENT.EXE" -i MSSQLSERVER Book625891.book Page 59 Tuesday, March 24, 2009 1:46 PM Capitolo 3 ■ Gestione della configurazione di rete, accesso e protezione della superficie di attacco 59 SQL Server Browser. Eseguito come il servizio SQL Server Browser. Il file eseguibile di questo servizio è Sqlbrowser.exe, specificato con la riga di comando di avvio del servizio, ad esempio: "C:\Program Files\Microsoft SQL Server\100\Shared\sqlbrowser.exe" ■ Writer SQL. Eseguito come il servizio writer VSS di SQL Server. Il file eseguibile di questo servizio è Sqlwriter.exe, specificato con la riga di comando di avvio del servizio, ad esempio: "C:\Program Files\Microsoft SQL Server\100\Shared\sqlwriter.exe" Non può essere configurato in Gestione configurazione SQL Server. Utilizzare invece l’utilità Servizi. Dopo aver selezionato il nodo Servizi di SQL Server, verrà visualizzata una voce dettagliata per ogni servizio che include quanto segue. ■ Nome. Il nome comune del servizio visualizzato sull’interfaccia utente. ■ Stato. Lo stato dei servizi in base all’ultimo aggiornamento, ad esempio In esecuzione o Interrotto. ■ Modalità di avvio. Lo stato di avvio del servizio: Automatico, Manuale o Disabilitato. ■ Accedi come. L’account utente con cui è stato avviato il servizio. Nei servizi in esecuzione con gli account di sistema si noterà il nome dell’account di sistema utilizzato, ad esempio NT AUTHORITY\SERVIZIO LOCALE per un servizio in esecuzione con questo account, NT AUTHORITY\SERVIZIO DI RETE per un servizio in esecuzione con questo account, oppure Sistema locale per un servizio in esecuzione con questo account. ■ ID processo. Il numero di identificazione del processo di sistema in esecuzione nel servizio. ■ Tipo servizio. Il tipo di componente SQL Server a cui fa riferimento il servizio, ad esempio ReportServer. Tutti i servizi SQL Server che non vengono utilizzati o che non richiedono l’installazione devono essere impostati con l’avvio manuale e interrotti se sono in esecuzione. Se si desidera evitare l’esecuzione di un servizio, è necessario impostare la modalità di avvio su Disabilitato. Considerare che il servizio SQL Server Browser fornisce informazioni di connessione ai computer client. Se i client si connettono a SQL Server in remoto, questo servizio è necessario (nella maggior parte delle istanze). Nota Si può utilizzare anche l’utilità Servizi per gestire i servizi di SQL Server. Il vantaggio di Gestione configurazione SQL Server rispetto a questa utilità è che semplifica le informazioni e fornisce l’accesso solo ai servizi SQL Server invece che a tutti i servizi di sistema. Book625891.book Page 60 Tuesday, March 24, 2009 1:46 PM 60 Parte I Nozioni principali sull’amministrazione di Microsoft SQL Server 2008 Quando si installa SQL Server, il programma di installazione crea dei gruppi utente per i servizi di SQL Server e aggiunge a tali gruppi gli account di servizio, in base alle necessità. Questi gruppi hanno lo scopo di semplificare il processo di concessione delle autorizzazioni necessarie per eseguire i servizi di SQL Server e i relativi file eseguibili. Nella tabella 3-2 vengono elencati i gruppi creati tramite il programma di installazione di SQL Server, i relativi servizi di SQL Server e le autorizzazioni predefinite. A questi gruppi vengono inoltre assegnate autorizzazioni di accesso a numerosi file e cartelle utilizzate da SQL Server. Tabella 3-2 Gruppi correlati e autorizzazioni assegnati per i servizi Servizio Gruppo o gruppi correlati Autorizzazioni assegnate SQL Server Istanza predefinita: SQLServerMSSQLUser$NomeComputer$MSSQLSERVER Istanza denominata: SQLServerMSSQLUser$NomeComputer$NomeIstanza Accesso come servizio Accesso come processo batch Sostituzione di una token a livello di processo Ignorare controllo incrociato Regolazione quote di memoria per un processo Autorizzazione all’avvio di SQL Server Active Directory Helper Autorizzazione all’avvio del writer SQL Istanza predefinita o denominata: SQL Server Active Directory SQLServerMSSQLServerADHelperUser$ComputerName Helper N/D SQL Server Agent Istanza predefinita: SQLServerSQLAgentUser$NomeComputer$MSSQLSERVER Istanza denominata: SQLServerSQLAgentUser$NomeComputer$NomeIstanza Accesso come servizio Funziona come parte del sistema operativo (solo su Microsoft Windows 2000) Accesso come processo batch Sostituzione di token a livello di processo Ignorare controllo incrociato Regolazione quote di memoria per un processo SQL Server Analysis Services Istanza predefinita: SQLServerMSASUser$NomeComputer$MSSQLSERVER Istanza denominata: SQLServerMSASUser$NomeComputer$NomeIstanza Accesso come servizio SQL Server Browser Istanza predefinita o denominata: SQLServerSQLBrowserUser$NomeComputer Accesso come servizio Book625891.book Page 61 Tuesday, March 24, 2009 1:46 PM Capitolo 3 Tabella 3-2 Gestione della configurazione di rete, accesso e protezione della superficie di attacco 61 Gruppi correlati e autorizzazioni assegnati per i servizi (continua) Servizio Gruppo o gruppi correlati Autorizzazioni assegnate SQL Server Integration Services Istanza predefinita o denominata: SQLServerDTSUser$NomeComputer Accesso come servizio Autorizzazione di scrittura sul log eventi applicazioni Ignorare controllo incrociato Rappresentazione di un client dopo l’autenticazione SQL Server Reporting Services Accesso come servizio Istanza predefinita: SQLServerReportServerUser$NomeComputer$MSSQLSERVER e SQLServerReportingServicesWebServiceUser$NomeComputer$MSSQLSERVER Istanza denominata: SQLServerReportServerUser$NomeComputer$NomeIstanza e SQLServerReportingServicesWebServiceUser$NomeComputer$NomeIstanza SQL Writer N/D N/D Gestione dello stato dei servizi e della modalità di avvio Per gestire i servizi di SQL Server è possibile utilizzare Gestione configurazione SQL Server o l’utilità Servizi. Con l’utilità Servizi, i servizi di SQL Server vengono gestiti come qualsiasi altro servizio. Con Gestione configurazione SQL Server è possibile gestire l’account di accesso al servizio, la modalità di avvio e lo stato. Se possibile, si possono gestire anche le funzionalità avanzate, ad esempio la directory dump, la segnalazione degli errori e i parametri di avvio. Il vantaggio di Gestione configurazione SQL Server rispetto all’utilità Servizi è che semplifica le informazioni disponibili così che vengano visualizzati solo i servizi SQL Server invece che tutti i servizi di sistema. Inoltre, alcune opzioni avanzate, ad esempio la directory dump, possono essere configurate solo utilizzando Gestione configurazione SQL Server. Utilizzando Gestione configurazione SQL Server è possibile interrompere, avviare, sospendere o riavviare un servizio server completando la seguente procedura: 1. Avviare Gestione configurazione SQL Server, quindi selezionare il nodo Servizi di SQL Server. 2. Nel riquadro a destra verrà visualizzato un elenco dei servizi utilizzati da SQL Server e i relativi componenti configurati, come illustrato nella figura 3-1. I servizi possono essere utilizzati in molti modi: ❑ Fare clic sul nome del servizio per selezionarlo. Utilizzare i pulsanti Avvia, Sospendi, Interrompi e Riavvia nella barra dei menu per gestire lo stato di esecuzione del servizio, oppure fare clic sul pulsante Proprietà per visualizzare le proprietà. Book625891.book Page 62 Tuesday, March 24, 2009 1:46 PM 62 Parte I Nozioni principali sull’amministrazione di Microsoft SQL Server 2008 ❑ Fare clic con il pulsante destro del mouse sul servizio e utilizzare il menu di scelta rapida per gestire lo stato di esecuzione, oppure fare clic su Proprietà per visualizzare le proprietà. ❑ Fare doppio clic sul servizio per visualizzarne le proprietà. Per impostare la modalità di avvio del servizio completare la seguente procedura: 1. Avviare Gestione configurazione SQL Server, quindi selezionare il nodo Servizi di SQL Server. 2. Nel riquadro a destra, fare clic con il pulsante destro del mouse sul servizio, quindi selezionare Proprietà dal menu di scelta rapida. 3. Nella scheda Servizio della finestra di dialogo Proprietà, utilizzare il menu a discesa Modalità di avvio per selezionare la modalità desiderata, come illustrato nella figura 3-2. Le opzioni disponibili sono Automatico, Disabilitato e Manuale. 4. Fare clic su OK. Figura 3-2 Opzioni della scheda Servizio per la modalità di avvio Impostazione dell’account di avvio del servizio SQL Server e i relativi componenti hanno specifici diritti e autorizzazioni per l’account di avvio del servizio. Tali autorizzazioni vengono utilizzate ogni volta che Motore di database o altri componenti SQL Server eseguono delle attività sul sistema locale o nella rete. Come si è appreso in “Account di servizio di SQL Server” a pagina 10, è possibile configurare i servizi in modo da poter utilizzare tre diversi tipi di account predefiniti: Servizio locale, Sistema locale e Servizio di rete. È inoltre possibile configurare i servizi in modo da utilizzare gli account di dominio. Book625891.book Page 63 Tuesday, March 24, 2009 1:46 PM Capitolo 3 Gestione della configurazione di rete, accesso e protezione della superficie di attacco 63 Per specificare un account predefinito per un servizio di SQL Server completare la seguente procedura: 1. Avviare Gestione configurazione SQL Server, quindi selezionare il nodo Servizi di SQL Server. 2. Nel riquadro a destra, fare clic con il pulsante destro del mouse sul servizio, quindi selezionare Proprietà. 3. Nella scheda Accesso della finestra di dialogo Proprietà, selezionare Account predefinito, quindi utilizzare l’elenco a discesa per scegliere il servizio da utilizzare. 4. Se il servizio è in esecuzione, è necessario riavviarlo facendo clic su Riavvia. In questo modo il servizio viene arrestato e riavviato utilizzando le nuove credenziali. 5. Fare clic su OK. Per specificare un account di dominio per un servizio di SQL Server completare la seguente procedura: 1. Avviare Gestione configurazione SQL Server, quindi selezionare il nodo Servizi di SQL Server. 2. Nel riquadro a destra, fare clic con il pulsante destro del mouse sul servizio, quindi selezionare Proprietà. 3. Nella scheda Accesso della finestra di dialogo Proprietà, scegliere l’opzione Account segue, come illustrato nella figura 3-3, quindi digitare il nome e la password dell’account designato. Per gli account di dominio, specificare il dominio come parte del nome, ad esempio CPANDL\sqlprimary, dove CPANDL è il nome del dominio e sqlprimary è il nome dell’account. Per gli account del computer locale, inserire .\ seguito dal nome dell’account, ad esempio .\sqlaccount. Fare clic su Sfoglia se si desidera utilizzare la finestra di dialogo Seleziona Utente o Gruppo per selezionare un account. 4. Se il servizio è in esecuzione, è necessario riavviarlo facendo clic su Riavvia. In questo modo il servizio viene arrestato e riavviato utilizzando le nuove credenziali. 5. Dopo aver fatto clic su OK per chiudere la finestra di dialogo Proprietà, assicurarsi di aver concesso le autorizzazioni e i privilegi necessari all’account di dominio specificato. Fare riferimento alla tabella 3-2 per stabilire i gruppi a cui è necessario aggiungere l’account di dominio per essere certi che abbia le necessarie autorizzazioni di accesso ai file e alle cartelle utilizzate da SQL Server. Book625891.book Page 64 Tuesday, March 24, 2009 1:46 PM 64 Parte I Figura 3-3 Nozioni principali sull’amministrazione di Microsoft SQL Server 2008 Impostazione dell’account di avvio per un dato servizio Configurazione del flusso di file Il flusso di file (file streaming) consente a Motore di database SQL Server di funzionare con i BLOB (Binary Large Objects) archiviati al di fuori del database. Per distinguerli dai BLOB standard archiviati nelle tabelle del database, quelli archiviati al di fuori vengono chiamati BLOB FILESTREAM. Come i BLOB standard, i BLOB FILESTREAM vengono specificati nel database come tipi di dati varbinary(max) e possono includere ogni tipo di dato non strutturato di documenti Microsoft Office, dai video alle immagini digitali. A differenza dei BLOB standard, i BLOB FILESTREAM non hanno un limite di dimensione pari a 2 GB. Un BLOB FILESTREAM si distingue da un BLOB standard impostando l’attributo FILESTREAM su una colonna varbinary(max). In questo modo si comunica a Motore di database di archiviare i dati di quella colonna nel file system invece che nel database. SQL Server è in grado di individuare i dati BLOB perché archivia i puntatori di BLOB nel database. Le istruzioni Transact-SQL possono inserire, aggiornare, eseguire una query, eseguire una ricerca ed eliminare i dati di flusso di file. Motore di database SQL Server utilizza le funzionalità del file system NTFS per memorizzare nella cache i dati dei file durante il flusso di file, invece che con il pool di buffer SQL Server. In questo modo si assicura che la memoria sia disponibile per il processo di query, inoltre vengono mantenute le prestazioni di Motore di database. Benché si possa utilizzare un’operazione di inserimento per popolare in modo preliminare il campo FILESTREAM con un valore null, un valore vuoto o una quantità limitata di dati inline, una notevole quantità di dati viene inviata in modo efficace a un file che utilizza interfacce Win32. Qui, le interfacce funzionano all’interno del contesto di una transazione SQL Server e per ottenere il percorso UNC (Universal Naming Convention) del file BLOB sul file system si utilizza la funzione intrinseca Pathname. Si utilizza quindi l’API (Application Programming Book625891.book Page 65 Tuesday, March 24, 2009 1:46 PM Capitolo 3 Gestione della configurazione di rete, accesso e protezione della superficie di attacco 65 Interface) OpenSqlFilestream per ottenere un handle di file e operare sul BLOB tramite il file system utilizzando le seguenti interfacce di flusso dei file Win32: ReadFile, WriteFile, TransmitFile, SetFilePointer, SetEndOfFile e FlushFileBuffers. Chiudere l’handle utilizzando CloseHandle. Dal momento che le operazioni dei file sono transazionali, non è possibile eliminare o rinominare i file FILESTREAM attraverso il file system. Quando si aggiorna un campo FILESTREAM, vengono modificati i dati BLOB sottostanti nel file system. Quando un campo FILESTREAM è impostato su NULL, i dati BLOB associati con il campo vengono eliminati. Per eseguire aggiornamenti parziali dei dati, non è possibile utilizzare l’aggiornamento ChunkedTransact-SQL, implementato come UPDATE.Write(). Si utilizza invece un controllo del dispositivo FS (FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT) per recuperare il vecchio contenuto nel file a cui fa riferimento l’handle aperto, generando una copia del contenuto. Quando si elimina una riga o si elimina o tronca una tabella contenente dati FILESTREAM, si eliminano i dati BLOB sottostanti nel file system. I dati FILESTREAM devono essere archiviati in filegroup FILESTREAM. Un filegroup FILESTREAM è un filegroup speciale contenente directory di file system invece che file. Tali directory vengono chiamate contenitori di dati e fungono da interfaccia tra l’archiviazione di Motore di database e l’archiviazione del file system. Quando si utilizzano i dati FILESTREAM, è necessario considerare anche quanto segue: ■ Si possono creare snapshot database solo di filegroup standard (non-FILESTREAM). I filegroup FILESTREAM vengono contrassegnati come non in linea per questi snapshot database. Inoltre, un’istruzione SELECT eseguita su una tabella FILESTREAM in uno snapshot database non deve includere una colonna FILESTREAM. ■ La distribuzione dei log supporta il flusso di file fino a che i server principali e secondari eseguono SQL Server 2008, oppure una versione successiva, ed è abilitato il flusso di file. ■ Il mirroring dei database non supporta il flusso di file. Non è possibile creare un filegroup FILESTREAM sul server principale, né configurare il mirroring dei database per un database contenente filegroup FILESTREAM. ■ L’indicizzazione full-text funziona con una colonna FILESTREAM nello stesso modo in cui funziona con una colonna varbinary(max), fino a che la tabella FILESTREAM ha una colonna contenente l’estensione del nome del file per ogni BLOB FILESTREAM. Il motore full-text indicizza i contenuti dei BLOB FILESTREAM e viene nuovamente indicizzato ogni volta che viene aggiornato un BLOB FILESTREAM. ■ Una colonna varbinary(max) che ha l’attributo FILESTREAM abilitato per un Server di pubblicazione può essere replicata su un Sottoscrittore con o senza l’attributo FILESTREAM. È possibile specificare il modo in cui viene replicata la colonna utilizzando la finestra di dialogo Proprietà articolo - <Articolo> oppure il parametro @schema_option di sp_addarticle o sp_addmergearticle. Book625891.book Page 66 Tuesday, March 24, 2009 1:46 PM 66 ■ Parte I Nozioni principali sull’amministrazione di Microsoft SQL Server 2008 Per il clustering di failover, i filegroup FILESTREAM devono essere inseriti in un disco condiviso. È inoltre necessario abilitare il flusso di file su ogni nodo del cluster che ospiterà l’istanza FILESTREAM. Per abilitare e configurare il flusso di file completare la seguente procedura: 1. Avviare Gestione configurazione SQL Server, quindi selezionare il nodo Servizi di SQL Server. 2. Nel riquadro a destra, fare clic con il pulsante destro del mouse sull’istanza del servizio Motore di database che si desidera configurare, quindi selezionare Proprietà. 3. Nella scheda FILESTREAM della finestra di dialogo Proprietà, illustrata nella figura 3-4, è ora possibile utilizzare la casella di controllo Abilita FILESTREAM per l’accesso TransactSQL per abilitare o disabilitare il flusso di file per Transact-SQL. Selezionare la casella di controllo per consentire l’utilizzo del flusso di file, deselezionarla per impedirlo. Se si disabilità il flusso di file, fare clic su OK e non proseguire con la procedura. 4. Se si desidera abilitare l’accesso tramite il flusso di I/O dei file, selezionare Abilita FILESTREAM per l’accesso tramite il flusso di I/O dei file, quindi specificare il nome della condivisione Windows da cui devono confluire i file. Il nome della condivisione predefinita è MSSQLSERVER, che imposta la directory principale globale per il flusso di file \\?\GLOBALROOT\Device\RsFx0101\<localmachine>\MSSQLSERVER. Figura 3-4 Configurazione di FILESTREAM per un’istanza di Motore di database Book625891.book Page 67 Tuesday, March 24, 2009 1:46 PM Capitolo 3 Gestione della configurazione di rete, accesso e protezione della superficie di attacco 67 5. Se si abilita il flusso di file locale e si desidera abilitare l’accesso tramite il flusso di I/O dei file per i client remoti, selezionare Consenti ai client remoti l’accesso tramite flusso ai dati FILESTREAM. L’accesso del file system remoto ai dati FILESTREAM viene abilitato tramite il protocollo SMB (Server Message Block). Se il client è remoto, dal lato client non viene memorizzata nella cache alcuna operazione di scrittura, il che significa che le operazioni di scrittura verranno sempre inviate al server in cui possono essere memorizzate nella cache, se necessario. 6. Se sono state apportate delle modifiche e il servizio è in esecuzione, è necessario riavviarlo facendo clic su Riavvia nella scheda Accesso. In questo modo il servizio verrà arrestato e riavviato utilizzando le nuove impostazioni. 7. Fare clic su OK. Configurazione di directory dump del servizio, segnalazione errori e segnalazione commenti e suggerimenti utenti Le opzioni avanzate di configurazione del servizio possono essere utilizzare per configurare le funzionalità di segnalazione e registrazione degli errori. Quando si installa SQL Server viene richiesto se si desidera abilitare questi due tipi di segnalazioni: ■ Segnalazione errori ■ Segnalazione commenti e suggerimenti utenti Quando viene abilitata la segnalazione degli errori, vengono generati dei report inviati poi a Microsoft o a un server aziendale designato ogni volta che si verificano errori irreversibili che causano l’interruzione di un servizio. Questi report aiutano a stabilire la causa dell’errore irreversibile, così che possa essere corretto, inoltre contengono dettagli necessari a identificare cosa ha causato l’errore, inclusa la versione di SQL Server in uso, il sistema operativo e la configurazione hardware, oltre ai dati della memoria o i file di processo che hanno causato l’errore. Le informazioni sugli errori vengono registrate anche in una directory dump designata. La directory dump utilizzata dipende dal componente e dalla relativa istanza. Ad esempio, la directory dump dell’istanza SQL Server predefinita potrebbe trovarsi in %Programmi%\ Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\LOG, e la directory dump Reporting Services in %Programmi%\Microsoft SQL Server\ MSRS10.CUSTDATAWAREHOUS\Reporting Services\LogFiles. Segnalazione commenti e suggerimenti utenti genera dei report relativi all’utilizzo dei componenti che vengono inviati a Microsoft quando viene configurata la funzionalità. Questi report aiutano Microsoft a capire come vengono utilizzati componenti e funzionalità. La segnalazione e i dump degli errori possono essere gestiti individualmente per ogni servizio. Per farlo, completare la seguente procedura: 1. Avviare Gestione configurazione SQL Server, quindi selezionare il nodo Servizi di SQL Server. Book625891.book Page 68 Tuesday, March 24, 2009 1:46 PM 68 Parte I Nozioni principali sull’amministrazione di Microsoft SQL Server 2008 2. Nel riquadro a destra, fare clic con il pulsante destro del mouse sul servizio, quindi selezionare Proprietà. 3. Selezionare la scheda Avanzate della finestra di dialogo Proprietà. Utilizzando le caselle illustrate nella figura 3-5 è possibile eseguire quanto indicato di seguito: ❑ Utilizzare la casella Directory dump per visualizzare la directory dump attuale. Per modificarla, inserire semplicemente la nuova directory da utilizzare. Assicurarsi che l’account di accesso per il servizio selezionato abbia l’accesso di lettura e scrittura appropriato per questa directory. ❑ Utilizzare i menu a discesa Segnalazione errori e Segnalazione commenti e suggerimenti utenti per abilitare o disabilitare la segnalazione, in base alle necessità. Selezionare Sì per abilitare la segnalazione. Selezionare No per disabilitarla. 4. Se sono state apportate delle modifiche e il servizio è in esecuzione, è necessario riavviarlo facendo clic su Riavvia nella scheda Accesso. In questo modo il servizio viene arrestato e riavviato utilizzando le nuove impostazioni. 5. Fare clic su OK. Figura 3-5 Opzioni di impostazioni avanzate per il servizio selezionato Gestione della configurazione di rete e di SQL Native Client Le installazioni di SQL Server possono essere configurate in modo da consentire le connessioni locali e remote. SQL Server può utilizzare molti protocolli, inclusi Shared Memory, Named Pipes, TCP/IP e Virtual Interface Architecture (VIA). Questi protocolli hanno tutti configurazioni server e client separate. Book625891.book Page 69 Tuesday, March 24, 2009 1:46 PM Capitolo 3 Gestione della configurazione di rete, accesso e protezione della superficie di attacco 69 Come illustrato nella figura 3-6, la configurazione di rete è impostata separatamente per ogni istanza server attraverso Configurazione di rete SQL Server. La configurazione client è impostata su una base per client attraverso Configurazione SQL Native Client. Figura 3-6 Server Visualizzazione delle impostazioni di configurazione della rete per un’istanza SQL Quando più protocolli client sono disponibili e configurati per l’utilizzo, i client li utilizzano in un ordine di priorità specifico. Come illustrato nella figura 3-7, tale ordine predefinito è 1. Shared Memory 2. TCP/IP 3. Named Pipes 4. VIA Figura 3-7 I client tentano di utilizzare i protocolli di rete in un ordine specifico Nota Ogni sistema su cui è installato SQL Native Client è un client SQL Server. Possono essere inclusi sistemi che eseguono Windows XP Professional, Windows Vista, Windows Server 2003 e Windows Server 2008. Gestione della configurazione delle connessioni Le installazioni di SQL Server possono essere configurate in modo da consentire le connessioni locali, remote e dedicate. Le connessioni locali vengono utilizzate dalle applicazioni eseguite sul computer che esegue anche SQL Server. Le connessioni remote vengono utilizzate dai client che si connettono al server, dalle applicazioni eseguite su altri server e da altri server SQL. Le connessioni dedicate sono una funzionalità particolare utilizzata dagli amministratori per la manutenzione delle installazioni SQL Server (e gestite come funzionalità configurabile invece che come tipo di connessione consentiti). Book625891.book Page 70 Tuesday, March 24, 2009 1:46 PM 70 Parte I Nozioni principali sull’amministrazione di Microsoft SQL Server 2008 Nota La configurazione predefinita per le connessioni dipende dalla configurazione degli account di servizio, dai componenti installati e da altre opzioni di installazione, ad esempio se è stato eseguito un aggiornamento o una nuova installazione. In genere, una nuova installazione viene configurata solo per le connessioni locali. Tuttavia, se sono stati installati componenti aggiuntivi, ad esempio Reporting Services, la configurazione in genere consentirà le connessioni remote e locali. Benché una configurazione solo per connessioni locali fornisca ovvi vantaggi di protezione, non è sempre possibile eseguire SQL Server in questa configurazione. Spesso è necessario consentire le connessioni in entrata da client e server remoti, e in tal caso, i protocolli di connessione consentiti possono influire sulla quantità di risorse utilizzate e sulla relativa sicurezza del server. Per le connessioni remote, SQL Server 2008 può utilizzare TCP/IP, Named Pipes o entrambi. TCP/IP è un protocollo molto utilizzato composto da Transmission Control Protocol (TCP) e Internet Protocol (IP). SQL Server ascolta e comunica tramite tipi di porta dinamica, statica o entrambi, in base alla configurazione. SQL Server 2008 supporta sia la versione IPv4 che IPv6. Gli indirizzi IP utilizzati da SQL Server per le comunicazioni di rete dipendono dalla configurazione. TCP/IP include standard per l’inoltro del traffico che aiutano ad assicurare che i pacchetti di dati raggiungano la loro destinazione, oltre a standard per la protezione delle comunicazioni che aiutano a proteggere le informazioni sensibili. Tutto ciò rende TCP/IP ideale sia per le reti locali (LAN) che WAN. Named Pipes è un protocollo progettato per le LAN. Con Named Pipes, una parte della memoria viene utilizzata da un processo per passare le informazioni a un altro processo, così che l’output del primo processo diventi l’input dell’altro. Il secondo processo può essere locale, ossia sullo stesso computer del primo, oppure remoto, ossia su un computer diverso da quello del primo. Benché le named pipe locali vengano eseguite in modalità kernel e siano molto veloci, le named pipe remote non funzionano bene sulle reti lente. Questo perché le named pipe di solito generano molto traffico di messaggi sulla rete. Dal momento che TCP/IP e Named Pipes richiedono porte specifiche e diverse per l’apertura sul firewall, è possibile limitare il server a uno dei due protocolli per limitare la potenziale superficie di attacco. Prima di modificare i tipi di connessioni possibili, tuttavia, è necessario assicurarsi che tutti i client e le applicazioni siano configurati per utilizzare la libreria di rete appropriata. Con TCP/IP, SQL Server può comunicare utilizzando IP standard e TCP/IP Sockets Net-Library. La porta di ascolto predefinita per l’istanza predefinita è la porta TCP 1433. La porta di ascolto predefinita per le istanze denominate viene impostata in modo dinamico, a meno di un’assegnazione diversa. La porta TCP 1433 viene utilizzata per le connessioni client. Quando si utilizzano named pipes, SQL Server 2008 utilizza Named Pipes Net-Library per comunicare tramite un indirizzo di rete standard: \\.\pipe\sql\query per l’istanza predefinita e \\.\pipe\MSSQL$nomeistanza\sql\query per un’istanza denominata. Le named pipe richiedono l’apertura di un intervallo di porte per la comunicazione attraverso un firewall. Con le named pipe, il server ascolterà sulla porta TCP 445. Book625891.book Page 71 Tuesday, March 24, 2009 1:46 PM Capitolo 3 Gestione della configurazione di rete, accesso e protezione della superficie di attacco 71 SQL Server 2008 supporta inoltre il protocollo Shared Memory per le connessioni locali e il protocollo VIA sia per quelle locali che remote. NWLink IPX/SPX e AppleTalk non sono più supportati. Configurazione di rete con Shared Memory Il protocollo Shared Memory viene utilizzato solo per le connessioni locali. Se il protocollo è abilitato, ogni client locale è in grado di connettersi al server utilizzando il protocollo. Se si desidera che i client locali non utilizzino il protocollo Shared Memory, è possibile disabilitarlo. Per abilitare e disabilitare questo protocollo, completare la procedura seguente: 1. Avviare Gestione configurazione SQL Server. Espandere il nodo Configurazione di rete SQL Server, quindi selezionare Protocolli per per l’istanza di SQL Server che si desidera utilizzare. 2. Fare clic con il pulsante destro del mouse su Shared Memory e procedere come indicato di seguito: ❑ Selezionare Abilita per abilitare l’utilizzo del protocollo. ❑ Selezionare Disabilita per impedirne l’utilizzo. Configurazione di rete con Named Pipes Il protocollo Named Pipes viene utilizzato principalmente per le connessioni locali e remote dalle applicazioni scritte per le versioni precedenti di Windows. Quando si abilita Named Pipes, SQL Server 2008 utilizza Named Pipes Net-Library per comunicare tramite un indirizzo di rete standard: \\.\pipe\sql\query per l’istanza predefinita e \\.\pipe\MSSQL$nomeistanza\sql\query per un’istanza denominata. Oltre ad abilitare o disabilitare l’utilizzo di Named Pipes, è possibile configurarne le proprietà per modificare la named pipe da utilizzare. Per gestire la configurazione di rete con Named Pipes completare la procedura seguente: 1. Avviare Gestione configurazione SQL Server. Espandere il nodo Configurazione di rete SQL Server, quindi selezionare Protocolli per dell’istanza di SQL Server. 2. Fare clic con il pulsante destro del mouse su Named Pipes, quindi selezionare Proprietà. 3. Ora è possibile eseguire quanto segue: ❑ Utilizzare il menu a discesa Abilitato per abilitare o disabilitare il protocollo. Selezionare Sì per consentire l’utilizzo del protocollo, oppure No per impedirlo. ❑ Modificare il nome della pipe predefinita digitando un nuovo valore nel campo Nome pipe (non dimenticare di aggiornare la configurazione client). 4. Fare clic su OK. Book625891.book Page 72 Tuesday, March 24, 2009 1:46 PM 72 Parte I Nozioni principali sull’amministrazione di Microsoft SQL Server 2008 Configurazione di rete con TCP/IP Il protocollo TCP/IP è il protocollo preferito per le connessioni locali o remote a SQL Server. Quando si utilizza TCP/IP, SQL Server ascolta le richieste su una specifica porta TCP e un indirizzo IP. Per impostazione predefinita, SQL Server ascolta sulla porta TCP 1433 su tutti gli indirizzi IP configurati per le relative schede di rete. Per motivi di protezione si potrebbe voler fare in modo che SQL Server utilizzi una configurazione TCP/IP diversa; le opzioni a disposizione sono molte. Si può ■ Configurare SQL Server in modo che ascolti su tutti gli indirizzi IP configurati e utilizzi la stessa configurazione di porta TCP, indipendentemente dal numero di indirizzi IP inclusi. ■ Configurare SQL Server in modo che ascolti solo specifici indirizzi IP abilitati e configurare ogni porta TCP di ascolto in modo separato per ogni indirizzo IP. In entrambi i casi, è possibile configurare le porte TCP di ascolto in modo manuale o dinamico. Quando si assegna una porta TCP di ascolto manualmente, tale porta è statica e cambia solo se viene assegnato un nuovo valore. Quando si assegna una porta TCP di ascolto in modo dinamico, la relativa istanza SQL Server assegna in modo dinamico la porta TCP di ascolto ogni volta che viene avviato il relativo dispositivo. Dal momento che la porta TCP di ascolto viene assegnata in modo dinamico all’avvio, le applicazioni client hanno bisogno di un server di supporto per stabilire la porta di ascolto in entrata; è a questo punto che entra in gioco il servizio SQL Server Browser. Quando le istanze SQL Server utilizzano porte TCP assegnate in modo dinamico, il servizio SQL Server Browser verifica le connessioni in entrata e le indirizza alla porta attuale per la relativa istanza SQL Server. Nota Non utilizzare porte assegnate in modo dinamico quando i client si connettono tramite un firewall. In tal caso potrebbero verificarsi problemi di connessione ogni volta che cambia la porta assegnata in modo dinamico. Disabilitazione, abilitazione e configurazione di TCP/IP Per disabilitare o abilitare e configurare TCP/IP, completare la seguente procedura: 1. Avviare Gestione configurazione SQL Server. Espandere il nodo Configurazione di rete SQL Server, quindi selezionare Protocolli per dell’istanza di SQL Server. 2. Fare clic con il pulsante destro del mouse su TCP/IP, quindi selezionare Proprietà. Verrà visualizzata la finestra di dialogo Proprietà - TCP/IP. 3. Nella scheda Protocollo è ora possibile utilizzare il menu a discesa Abilitato per abilitare o disabilitare il protocollo. Selezionare Sì per consentire l’utilizzo del protocollo, oppure No per impedirlo. Se si disabilita TCP/IP, fare clic su OK e non proseguire con la procedura. 4. Nella scheda Protocollo è possibile configurare i parametri che controllano quando e come l’istanza SQL Server tenta di mantenere inattive le connessioni TCP/IP. Vengono utilizzati due parametri: Book625891.book Page 73 Tuesday, March 24, 2009 1:46 PM Capitolo 3 Gestione della configurazione di rete, accesso e protezione della superficie di attacco 73 ❑ Attesa su tutti Controlla se SQL Server resta in attesa su tutti gli indirizzi IP configurati per le relative schede di rete. Se questo valore viene impostato su Sì, le impostazioni della casella delle proprietà IPAll della scheda Indirizzi IP vengono applicate a tutti gli indirizzi IP attivi. Se il valore viene impostato su No, è necessario configurare ogni indirizzo IP separatamente utilizzando le relative caselle delle proprietà della scheda Indirizzi IP. ❑ Keep-alive Controlla quanto spesso SQL Server prova a verificare che il computer alla fine della connessione remota sia ancora disponibile. Per impostazione predefinita, SQL Server verifica una connessione remota dopo che è rimasta inattiva per 30 secondi. Nella maggior parte dei casi, è sufficiente un valore tra 30 e 60 secondi. In base a quanto è occupato il server e all’importanza dell’attività del client, si potrebbe voler verificare e mantenere inattive le connessioni più spesso, assicurando che tali connessioni non vengano terminate. Si può utilizzare un valore inferiore, ad esempio 15 o 20 secondi, per assicurare che le connessioni inattive vengano convalidate più velocemente. 5. Fare clic su OK. Utilizzo delle configurazioni di rete TCP/IP statiche Per fare in modo che un’istanza SQL Server utilizzi una configurazione di rete TCP/IP statica completare la seguente procedura: 1. Avviare Gestione configurazione SQL Server. Espandere il nodo Configurazione di rete SQL Server, quindi selezionare Protocolli per dell’istanza di SQL Server. 2. Fare clic con il pulsante destro del mouse su TCP/IP, quindi selezionare Proprietà. Nella scheda Indirizzi IP della finestra di dialogo Proprietà - TCP/IP dovrebbero essere visualizzate le voci che rappresentano gli indirizzi IPv4 e IPv6 configurati sul server. Le singole voci degli indirizzi IP, in ordine numerico (ad esempio IP1, IP2, IP3 e così via), servono per quando SQL Server è in attesa di specific indirizzi IP. La voce IPAll viene utilizzata quando SQL Server ascolta tutti gli indirizzi IP del server. Nota Gli indirizzi IP 127.0.0.1 e ::1 sono gli indirizzi di loopback locali per IPv4 e IPv6, rispettivamente. Questi indirizzi vengono utilizzati per ascoltare le connessioni dei client locali. 3. Se si desidera che SQL Server ascolti tutti gli indirizzi IP configurati sul server, completare quando segue: a. Nella scheda Protocollo, impostare Attesa su tutti su Sì. b. Nella scheda Indirizzi IP, impostare una specifica porta TCP di ascolto per IPAll. Quella predefinita è 1433. Per modificare la porta TCP di ascolto, digitare quella desiderata nel campo a disposizione. Book625891.book Page 74 Tuesday, March 24, 2009 1:46 PM 74 Parte I Nozioni principali sull’amministrazione di Microsoft SQL Server 2008 4. Se si desidera abilitare l’ascolto su specifici indirizzi IP e porte TCP, completare quanto segue: a. Nella scheda Protocollo, impostare Attesa su tutti su No. b. Nella scheda Indirizzi IP, specificare gli indirizzi IP che verranno ascoltati attivamente da SQL Server impostando le relative voci di indirizzo IP su Attivo Sì e Abilitato Sì. Digitare quindi la porta TCP di ascolto desiderata per ogni indirizzo IP nei campi a disposizione. c. Nella scheda Indirizzi IP, specificare gli indirizzi IP che non verranno ascoltati attivamente da SQL Server impostando le relative voci di indirizzo IP su Attivo No e Abilitato No. 5. Fare clic su OK. Suggerimento SQL Server può ascoltare su più porte TCP lo stesso indirizzo IP. Ascoltare semplicemente le porte desiderate separate da virgola, ad esempio 1433,1533,1534. Assicurarsi di non inserire uno spazio tra la virgola e il valore. Il campo Porta TCP è limitato a un totale di 2047 caratteri. Utilizzo delle configurazioni di rete TCP/IP dinamiche Per fare in modo che un’istanza SQL Server utilizzi una configurazione di rete TCP/IP dinamica, completare la seguente procedura: 1. Avviare Gestione configurazione SQL Server. Espandere il nodo Configurazione di rete SQL Server, quindi selezionare Protocolli per dell’istanza di SQL Server. 2. Fare clic con il pulsante destro del mouse su TCP/IP, quindi selezionare Proprietà. Nella scheda Indirizzi IP della finestra di dialogo Proprietà - TCP/IP dovrebbero essere visualizzate le voci che rappresentano gli indirizzi IPv4 e IPv6 configurati sul server. Le singole voci degli indirizzi IP, in ordine numerico (ad esempio IP1, IP2, IP3 e così via), servono per quando SQL Server è in attesa di specific indirizzi IP. La voce IPAll viene utilizzata quando SQL Server ascolta tutti gli indirizzi IP del server. Nota Gli indirizzi IP 127.0.0.1 e ::1 sono gli indirizzi di loopback locali per IPv4 e IPv6, rispettivamente. Questi indirizzi vengono utilizzati per ascoltare le connessioni dei client locali. 3. Se si desidera che SQL Server ascolti sulla stessa porta dinamica tutti gli indirizzi IP configurati sul server, completare quando segue: a. Nella scheda Protocollo, impostare Attesa su tutti su Sì. b. Nella scheda Indirizzi IP, digitare 0 (zero) nella casella Porte dinamiche TCP. Book625891.book Page 75 Tuesday, March 24, 2009 1:46 PM Capitolo 3 Gestione della configurazione di rete, accesso e protezione della superficie di attacco 75 4. Se si desidera abilitare l’ascolto su specifici indirizzi IP, completare quanto segue: a. Nella scheda Protocollo, impostare Attesa su tutti su No. b. Nella scheda Indirizzi IP, specificare gli indirizzi IP che verranno ascoltati attivamente da SQL Server impostando le relative voci di indirizzo IP su Attivo Sì e Abilitato Sì. Quindi, digitare 0 (zero) nel relativo campo Porte dinamiche TCP. c. Nella scheda Indirizzi IP, specificare gli indirizzi IP che non verranno ascoltati attivamente da SQL Server impostando le relative voci di indirizzo IP su Attivo No e Abilitato No. 5. Fare clic su OK. Impostazione della protezione per le configurazioni Native Client Per impostazione predefinita i client non utilizzano Secure Sockets Layer (SSL) oppure tentano di convalidare i certificati server. Per imporre la crittografia del protocollo, la convalida del certificato server o entrambi, completare la seguente procedura: 1. Avviare Gestione configurazione SQL Server. Espandere il nodo Configurazione di rete SQL Server, quindi Configurazione SQL Native Client. 2. Fare clic con il pulsante destro del mouse su Configurazione SQL Native Client, quindi selezionare Proprietà. 3. Per Forza crittografia protocollo, selezionare Sì per imporre ai client l’utilizzo di SSL, selezionare No per l’utilizzo di connessioni non crittografate. 4. Per Considera attendibile certificato, selezionare Sì per imporre ai client la convalida dei certificati server, selezionare No per non imporla. Configurazione dell’ordine dei protocolli Native Client Shared Memory è sempre il protocollo di connessione locale preferito. Per disabilitarlo al fine di precluderne l’utilizzo e modificare l’ordine degli altri protocolli, completare la seguente procedura: 1. Avviare Gestione configurazione SQL Server. Espandere il nodo Configurazione SQL Native Client, quindi fare clic su Protocolli client. 2. Fare clic con il pulsante destro del mouse sui protocolli elencati, quindi selezionare Ordina. Verrà visualizzata la finestra di dialogo Proprietà protocolli client. 3. In questa finestra di dialogo è possibile ❑ Modificare l’ordine di un protocollo abilitato. Prima fare clic sul nome del protocollo che si desidera spostare, quindi utilizzare i pulsanti con le frecce a destra dell’elenco Protocolli abilitati fino a quando il protocollo viene posizionato nel punto dell’elenco desiderato. Book625891.book Page 76 Tuesday, March 24, 2009 1:46 PM 76 Parte I Nozioni principali sull’amministrazione di Microsoft SQL Server 2008 ❑ Disabilitare o abilitare i protocolli. Per disabilitare un protocollo abilitato, selezionarlo, quindi fare clic sul pulsante di spostamento a sinistra per spostare il nome del protocollo nell’elenco Protocolli disabilitati. Per abilitare un protocollo disabilitato, selezionarlo, quindi fare clic sul pulsante di spostamento a destra per spostare il nome del protocollo nell’elenco Protocolli abilitati. ❑ Abilitare o disabilitare il protocollo Shared Memory. Per abilitare il protocollo Shared Memory per le connessioni client locali, selezionare Abilita protocollo Shared Memory. Per disabilitare il protocollo Shared Memory per le connessioni client locali, deselezionare Abilita protocollo Shared Memory. 4. Fare clic su OK. Impostazione della configurazione Native Client per Shared Memory Il protocollo Shared Memory viene utilizzato solo per le connessioni client locali. Per abilitare e disabilitare questo protocollo per i client, completare la procedura seguente: 1. Avviare Gestione configurazione SQL Server. Espandere il nodo Configurazione di rete SQL Server, Configurazione SQL Native Client, quindi fare clic su Protocolli client. 2. Fare clic con il pulsante destro del mouse su Shared Memory, quindi selezionare Proprietà. 3. Utilizzare il menu a discesa Abilitato per abilitare o disabilitare il protocollo. Selezionare Sì per consentirne l’utilizzo, oppure No per impedirlo. Impostazione della configurazione Native Client per Named Pipes Il protocollo Named Pipes viene utilizzato principalmente per le connessioni locali e remote dalle applicazioni scritte per le versioni precedenti di Windows. Le named pipe predefinite si trovano in \\.\pipe\sql\query per l’istanza predefinita e in \\.\pipe\MSSQL$nomeistanza\ sql\query per un’istanza denominata. La pipe predefinita per i client viene impostata utilizzando un alias. L’alias standard per i client è sql\query, che fa riferimento alla pipe predefinita, ad esempio \\.\pipe\sql\query o \\.\pipe\MSSQL$nomeistanza\sql\query. Se la pipe predefinita viene modificata nella configurazione di rete del server, sarà necessario modificarla nella configurazione client (e per tutti i client che si connetteranno a SQL Server in questo modo). Ad esempio, se SQL Server utilizza \\.\pipe\sqlserver\app1 come pipe predefinita, il client deve utilizzare \sqlserver\app1 come nome pipe. Per gestire la configurazione client con Named Pipes completare la procedura seguente: 1. Avviare Gestione configurazione SQL Server. Espandere il nodo Configurazione SQL Native Client, quindi fare clic su Protocolli client. 2. Fare clic con il pulsante destro del mouse su Named Pipes, quindi selezionare Proprietà. Si può ❑ Utilizzare il menu a discesa Abilitato per abilitare o disabilitare il protocollo. Selezionare Sì per consentirne l’utilizzo, oppure No per impedirlo. Book625891.book Page 77 Tuesday, March 24, 2009 1:46 PM Capitolo 3 ❑ Gestione della configurazione di rete, accesso e protezione della superficie di attacco 77 Impostare la pipe predefinita. Nella finestra di dialogo Proprietà - Named Pipes, inserire la pipe predefinita per il client nel campo a disposizione, quindi fare clic su OK. Impostazione della configurazione Native Client per TCP/IP Il protocollo TCP/IP è il protocollo preferito per le connessioni locali o remote a SQL Server. Quando ci si connette a un’istanza predefinita di Motore di database utilizzando TCP/IP, il client deve conoscere il valore della porta TCP. Quindi, se un’istanza predefinita è stata configurata per ascoltare su una porta diversa, è necessario modificare la configurazione TCP/IP del client in base a tale numero di porta. Quando ci si connette a un’istanza denominata di Motore di database, il client tenterà di ottenere il numero di porta dal servizio SQL Server Browser sul server a cui si sta connettendo. Se questo servizio non è in esecuzione, il numero di porta TCP deve essere fornito nella configurazione client o come parte della stringa di connessione. Per gestire la configurazione client con TCP/IP, completare la procedura seguente: 1. Avviare Gestione configurazione SQL Server. Espandere il nodo Configurazione SQL Native Client, quindi fare clic su Protocolli client. 2. Se si desidera abilitare o disabilitare TCP/IP, fare clic con il pulsante destro del mouse su TCP/IP, quindi selezionare Abilita o Disabilita in base alle necessità. 3. Per visualizzare le proprietà della connessione TCP/IP, fare clic con il pulsante destro del mouse su TCP/IP, quindi selezionare Proprietà. 4. Per impostare la porta predefinita, selezionare Proprietà. Nella finestra di dialogo Proprietà - TCP/IP, inserire la porta predefinita per il client nel campo a disposizione. 5. È inoltre possibile configurare i parametri che controllano quando e come i client provano a mantenere inattive le connessioni TCP/IP. Vengono utilizzati due parametri: ❑ Keep-alive Controlla quando un client tenta per la prima volta di verificare che una connessione inattiva sia ancora valida e tenta di mantenerla. Per impostazione predefinita, il client verifica una connessione dopo che è rimasta inattiva per 30 secondi. Nella maggior parte dei casi, è sufficiente un valore tra 30 e 60 secondi. In base a quanto è occupato il server e all’importanza dell’attività del client, si potrebbe voler verificare e mantenere inattive le connessioni più spesso, assicurando che tali connessioni non vengano terminate. Si può utilizzare un valore inferiore, ad esempio 15 o 20 secondi, per assicurare che le connessioni inattive vengano convalidate più velocemente. ❑ Intervallo keep-alive Controlla quanto spesso un client verifica una connessione inattiva quando non riceve una risposta iniziale alla trasmissione KEEPALIVE. Per impostazione predefinita, il client trasmette nuovamente la richiesta KEEPALIVE ogni secondo. Se molti client si stanno connettendo a un server occupato, si potrebbe voler aumentare l’intervallo keep-alive per ridurre il numero di ritrasmissioni KEEPALIVE. 6. Fare clic su OK.