Quando si concede a un utente l'accesso a un database, ci sono alcune considerazioni da fare con vantaggi e svantaggi in termini di usabilità e sicurezza. Qui abbiamo due opzioni per l'autenticazione e la concessione dell'autorizzazione agli utenti. Il primo è dare a tutti l'accesso all'account di sa (amministratore di sistema) e quindi limitare manualmente le autorizzazioni mantenendo un elenco degli utenti in cui è possibile concedere o negare le autorizzazioni in base alle esigenze. Questo è anche noto come metodo di autenticazione SQL. Ci sono grossi difetti di sicurezza in questo metodo, come elencato di seguito. La seconda e migliore opzione consiste nel disporre di Active Directory (AD) per gestire tutte le autorizzazioni e le autorizzazioni necessarie, note anche come autenticazione di Windows. Una volta che l'utente si collega al proprio computer, l'applicazione si connetterà al database utilizzando quelle credenziali di accesso di Windows sul sistema operativo.
Il principale problema di sicurezza con l'utilizzo dell'opzione SQL è che viola il principio di privilegio minimo (POLP) che è quello di fornire all'utente le autorizzazioni assolutamente necessarie di cui hanno bisogno e non di più. Usando l'account sa si presentano seri problemi di sicurezza. Il POLP viene violato perché quando l'applicazione utilizza l'account sa ha accesso all'intero server del database. L'autenticazione di Windows d'altra parte segue il POLP semplicemente concedendo l'accesso a un database sul server.
Il secondo problema è che non è necessario che ogni istanza dell'applicazione abbia la password di amministratore. Ciò significa che qualsiasi applicazione è un potenziale punto di attacco per l'intero server. Windows utilizza solo le credenziali di Windows per accedere a SQL Server. Le password di Windows sono archiviate in un repository rispetto all'istanza del database SQL stesso e l'autenticazione avviene internamente a Windows senza dover memorizzare le password sull'applicazione.
Un terzo problema di sicurezza si presenta utilizzando il metodo SQL che coinvolge le password. Come presentato sul sito Web di Microsoft e su vari forum di sicurezza, il metodo SQL non "applica la modifica della password o la crittografia, ma viene inviato come testo in chiaro sulla rete. E il metodo SQL non si blocca dopo i tentativi falliti, consentendo in tal modo un prolungato tentativo di intromissione. Tuttavia, Active Directory utilizza il protocollo Kerberos per crittografare le password mentre impiega anche un sistema di modifica della password e blocco dopo tentativi falliti.
Vi sono anche svantaggi di efficienza. Dal momento che dovrai richiedere all'utente di inserire le credenziali ogni volta che vogliono accedere al database, gli utenti potrebbero dimenticare le loro credenziali.
Se un utente viene rimosso dovresti rimuovere le sue credenziali da ogni istanza dell'applicazione. Se è necessario aggiornare la password di amministratore sa, è necessario aggiornare ogni istanza del server SQL. Ciò è dispendioso in termini di tempo e pericoloso, lascia aperta la possibilità che un utente licenziato conservi l'accesso a SQL Server. Con il metodo Windows nessuno di questi problemi sorge. Tutto è centralizzato e gestito dall'AD.
Gli unici vantaggi dell'utilizzo del metodo SQL risiedono nella sua flessibilità. Puoi accedervi da qualsiasi sistema operativo e rete, anche da remoto. Alcuni vecchi sistemi legacy e alcune applicazioni basate sul web possono supportare solo un accesso sa.
Il metodo AD offre anche strumenti per risparmiare tempo come i gruppi per facilitare l'aggiunta e la rimozione degli utenti e la capacità di tracciamento degli utenti.
Anche se riesci a correggere questi difetti di sicurezza nel metodo SQL, dovresti reinventare la ruota. Quando si considerano i vantaggi di sicurezza forniti dall'autenticazione di Windows, comprese le politiche di password e seguendo il POLP, è una scelta molto migliore rispetto all'autenticazione SQL. Pertanto si consiglia vivamente di utilizzare l'opzione di autenticazione di Windows.