Autenticazione in SQL Server (ADO.NET)

In SQL Server sono supportate due modalità di autenticazione: la modalità dell'autenticazione di Windows e la modalità mista.

  • L'autenticazione di Windows è l'impostazione predefinita e viene spesso definita sicurezza integrata perché questo modello di sicurezza di SQL Server è strettamente integrato con Windows. Determinati account utente e gruppi di Windows vengono considerati attendibili per l'accesso a SQL Server. Gli utenti di Windows che sono già stati autenticati non devono presentare credenziali aggiuntive.

  • La modalità mista supporta l'autenticazione di Windows e quella di SQL Server. Le coppie di nome utente e password vengono mantenute in SQL Server.

Nota sulla sicurezzaNota sulla sicurezza

Se possibile, si consiglia di utilizzare l'autenticazione di Windows.In questa modalità viene utilizzata una serie di messaggi crittografati per autenticare gli utenti in SQL Server.Quando vengono utilizzati gli account di accesso di SQL Server, i nomi e le password vengono passati attraverso la rete, riducendone la protezione.

Con l'autenticazione di Windows, gli utenti sono già connessi a Windows e non devono eseguire separatamente l'accesso a SQL Server. Nell'oggetto SqlConnection.ConnectionString seguente è specificata l'autenticazione di Windows senza la richiesta di immissione di nome utente o password.

"Server=MSSQL1;Database=AdventureWorks;Integrated Security=true;
NotaNota

Gli account di accesso sono distinti dagli utenti del database.È necessario mappare gli account di accesso o i gruppi di Windows agli utenti o ruoli del database in un'operazione separata.È quindi possibile concedere le autorizzazioni agli utenti o ai ruoli per l'accesso agli oggetti di database.

Scenari di autenticazione

L'autenticazione di Windows risulta in genere la soluzione ideale nelle seguenti situazioni:

  • È presente un controller di dominio.

  • L'applicazione e il database si trovano nello stesso computer.

  • Si utilizza un'istanza di SQL Server Express.

Gli account di accesso di SQL Server vengono in genere utilizzati nelle seguenti situazioni:

  • Si dispone di un gruppo di lavoro.

  • Gli utenti si connettono da domini diversi, non attendibili.

  • Si utilizzano applicazioni Internet, ad esempio ASP.NET.

NotaNota

Se si specifica l'autenticazione di Windows, gli account di accesso di SQL Server non vengono disabilitati.Utilizzare l'istruzione Transact-SQL ALTER LOGIN DISABLE per disabilitare gli account di accesso di SQL Server con privilegi elevati.

Tipi di account di accesso

In SQL Server 2000 sono supportati tre tipi di account di accesso:

  • Account utente di Windows locale o account di dominio attendibile. SQL Server si affida a Windows per l'autenticazione degli account utente di Windows.

  • Gruppo di Windows. L'accesso concesso a un gruppo di Windows viene assegnato a tutti gli account di accesso degli utenti di Windows che sono membri di tale gruppo.

  • Account di accesso di SQL Server. In SQL Server sia il nome utente che un hash della password vengono archiviati nel database master, utilizzando metodi di autenticazione interni per verificare i tentativi di accesso.

NotaNota

In SQL Server 2005 sono stati aggiunti gli account di accesso creati da certificati o chiavi asimmetriche, utilizzati solo per la firma del codice,che non possono essere utilizzati per la connessione a SQL Server.

Autenticazione in modalità mista

Se è necessario utilizzare l'autenticazione in modalità mista, occorre creare account di accesso di SQL Server, che vengono archiviati in SQL Server. È quindi necessario specificare il nome utente e la password di SQL Server in fase di esecuzione.

Nota sulla sicurezzaNota sulla sicurezza

SQL Server viene installato con un account di accesso denominato sa (abbreviazione di "system administrator").Assegnare una password complessa all'account di accesso sa e non utilizzare l'account di accesso sa nell'applicazione.L'account di accesso sa viene mappato al ruolo predefinito del server sysadmin, che dispone di credenziali amministrative irrevocabili nell'intero server.Non esistono limiti ai danni che potrebbero verificarsi se un utente non autorizzato ottiene accesso come amministratore di sistema.Per impostazione predefinita, tutti i membri del gruppo BUILTIN\Administrators di Windows (il gruppo di amministratori locali) sono membri del ruolo sysadmin, ma possono essere rimossi da tale ruolo.

In SQL Server 2005 sono stati introdotti i meccanismi dei criteri password di Windows per gli account di accesso di SQL Server, se eseguito in Windows Server 2003 o versioni successive. I criteri di complessità delle password sono progettati per fungere da deterrente agli attacchi a forza bruta aumentando il numero di password possibili. SQL Server 2005 può applicare gli stessi criteri di complessità e scadenza utilizzati in Windows Server 2003 alle password utilizzate all'interno di SQL Server.

Nota sulla sicurezzaNota sulla sicurezza

La concatenazione di stringhe di connessione dall'input dell'utente può lasciare il sistema vulnerabile a un attacco injection alle stringhe di connessione.Utilizzare SqlConnectionStringBuilder per creare stringhe di connessione sintatticamente valide in fase di esecuzione.Per ulteriori informazioni, vedere Compilatori di stringhe di connessione (ADO.NET).

Risorse esterne

Per ulteriori informazioni, vedere le seguenti risorse.

Risorsa

Descrizione

Entità nella documentazione online di SQL Server 2008 (informazioni in lingua inglese)

Vengono descritti gli account di accesso e altre entità di sicurezza disponibili in SQL Server 2008.

Entità nella documentazione online di SQL Server 2005

Vengono descritti gli account di accesso e altre entità di sicurezza disponibili in SQL Server 2005.

Account di accesso nella documentazione online di SQL Server 2000

Vengono descritti gli account di accesso e l'autenticazione in SQL Server 2000.

Vedere anche

Concetti

Scenari di sicurezza delle applicazioni in SQL Server (ADO.NET)

Altre risorse

Protezione di applicazioni ADO.NET

Connessione a un'origine dati (ADO.NET)

Stringhe di connessione (ADO.NET)