Share via


Protezione dei dati e dei file di log

SQL Server imposta le autorizzazioni di accesso ai file per i dati e i file di log fisici di ogni database su account specifici. Le autorizzazioni consentono di evitare che vengano accidentalmente alterati i file contenuti in una directory con autorizzazioni aperte. Ad esempio, se le autorizzazioni non sono impostate e le autorizzazioni del sistema operativo sulla directory di database sono impostate su Controllo completo per il gruppo Everyone, qualsiasi account con accesso alla directory può eliminare o modificare i file di database anche se privi delle autorizzazioni di SQL Server per la modifica del database.

Le autorizzazioni di accesso ai file vengono impostate durante le operazioni di database seguenti: creazione, collegamento, scollegamento, modifica per aggiungere un nuovo file, backup oppure ripristino.

Considerazioni di tipo amministrativo

  • Le autorizzazioni sono impostate solo quando il file system supporta il controllo di accesso Win32, ad esempio file system NTFS. In Motore di database non è possibile impostare le autorizzazioni sui file archiviati su partizioni non formattate del sistema operativo oppure in file system FAT e FAT32.

  • Se l'amministratore del sistema operativo modifica manualmente le autorizzazioni dei file, Motore di database non tenterà di applicare le autorizzazioni originali.

  • Se l'account di servizio SQL Server (MSSQLSERVER) viene modificato utilizzando SQL Server Management Studio, Management Studio tenta di aggiungere l'account e le autorizzazioni corrette per tutti i file di database esistenti. L'operazione potrebbe non riuscire per database non utilizzabili al momento della modifica dell'account di servizio.

  • Se l'account di servizio MSSQLSERVER viene modificato utilizzando Microsoft Windows Services, l'amministratore del sistema operativo deve concedere al nuovo account di servizio autorizzazioni di Controllo completo per tutti i database e i file di log.

Creazione di un database o aggiunta di un nuovo file

Quando un database viene creato oppure modificato con l'aggiunta di un nuovo file, all'account di servizio MSSQLSERVER e ai membri del gruppo Administrators locale viene concesso Controllo completo ai dati e ai file di log. L'accesso ai file viene rimosso per tutti gli altri account.

Backup e ripristino di un database

Le autorizzazioni di Controllo completo sul file creato per eseguire il ripristino o il backup vengono concesse all'account di servizio MSSQLSERVER e ai membri del gruppo Administrators locale.

Se il file esiste già e l'account di servizio MSSQLSERVER dispone già delle autorizzazioni sul file, l'operazione di backup o di ripristino continua. In caso contrario, Motore di database rappresenta l'account di Windows della connessione che sta eseguendo l'operazione e tenta di aprire il file. Dopo l'apertura del file, le autorizzazioni vengono concesse all'account di servizio MSSQLSERVER e ai membri del gruppo Administrators locale.

I file standby (file di rollback) vengono gestiti nello stesso modo.

Collegamento e scollegamento di un database

Quando si scollega o collega un database, il Motore di database tenta di rappresentare l'account di Windows della connessione che sta eseguendo l'operazione per garantire che l'account disponga dell'autorizzazione ad accedere al database e ai file di log. Per gli account con protezione mista che utilizzano account di accesso di SQL Server, la rappresentazione può avere esito negativo.

Nota sulla sicurezzaNota sulla sicurezza

È consigliabile evitare di collegare database da origini sconosciute o non attendibili. Tali database possono contenere codice dannoso in grado di eseguire codice Transact-SQL indesiderato o di causare errori modificando lo schema o la struttura fisica del database. Prima di utilizzare un database da un'origine sconosciuta o non attendibile, eseguire DBCC CHECKDB sul database in un server non di produzione ed esaminare il codice, ad esempio le stored procedure o altro codice definito dall'utente, nel database.

Nella tabella seguente viene illustrato il set di autorizzazioni sul database e sui file di log dopo che viene completata un'operazione di collegamento o scollegamento, e se l'account che esegue la connessione può essere rappresentato da Motore di database.

Operazione

L'account di connessione può essere rappresentato

Le autorizzazioni ai file vengono concesse

Detach

Solo all'account che esegue l'operazione. Un amministratore del sistema operativo può aggiungere account ulteriori se necessari dopo lo scollegamento del database.

Detach

No

L'account di servizio SQL Server (MSSQLSERVER) e i membri del gruppo Administrators locale di Windows.

Attach

L'account di servizio SQL Server (MSSQLSERVER) e i membri del gruppo Administrators locale di Windows.

Attach

No

L'account di servizio SQL Server (MSSQLSERVER).

Scenario

Nello scenario seguente vengono illustrate le autorizzazioni impostate alla creazione di un database, che vengono modificate quando il database viene scollegato e allegato.

User1, un membro del ruolo predefinito del server dbcreator, crea il database Sales che include i file e:\Data\Sales.mdf e f:\Log\Sales.ldf. Al momento della creazione del database, l'account di servizio MSSQLSERVER è SQLServiceAccount2, un account locale. Le autorizzazioni Controllo completo sul database e sui file di log vengono concesse a SQLServiceAccount2 e ai membri del gruppo Administrators di Windows.

Viene deciso di spostare il database Sales su un'altra istanza di SQL Server sullo stesso server. Admin3, un membro del ruolo predefinito del server sysadmin, scollega il database. Motore di database imposta le autorizzazioni sui file Sales.mdf e Sales.ldf in modo che solo l'account Admin3 disponga delle autorizzazioni per accedere ai file.

Admin3 si connette all'altra istanza di SQL Server, SalesServer. L'account di servizio MSSQLSERVER per l'istanza di SalesServer è SQLSalesServiceAccount. Admin3, amministratore di SQL Server su questa istanza, collega il database Sales . Le autorizzazioni Controllo completo vengono concesse a SQLSalesServiceAccount e ai membri del gruppo Administrators di Windows.