L'autenticazione è una componente fondamentale di qualsiasi strategia di sicurezza. Oggi parleremo dell'autenticazione di SQL Server, di come sia essenziale per proteggere l'ambiente di SQL Server e del ruolo svolto dall'autenticazione di Windows.
Stabilire una connessione
Tutto inizia con una connessione. Per stabilire una corretta connessione al database, il client o l'applicazione richiede le seguenti informazioni:
- Nome di dominio completo di SQL Server
- Nome istanza
- Numero di porta
- Credenziali (nome utente e password) per l'autenticazione
Ad esempio, supponiamo di utilizzare l'online banking. Per accedere al proprio account è necessario inserire le credenziali ai fini dell'autenticazione. La banca ti identifica quando fornisci credenziali valide e consente l'accesso ai suoi servizi previa verifica.
Allo stesso modo, quando accedono a SQL Server, gli utenti devono specificare credenziali valide in modo che SQL Server possa autenticare la propria identità e concedere l'accesso appropriato.
SQL Server offre due modalità di autenticazione del server:
- Autenticazione Windows
- Modalità di autenticazione di SQL Server e Windows (modalità mista)
È possibile definire questi metodi di autenticazione durante l'installazione di SQL Server o modificarli in un secondo momento tramite un riavvio. È fondamentale per gli amministratori di database comprendere le differenze tra questi metodi di autenticazione e implementarli in base ai requisiti specifici della propria organizzazione.
Analizziamo ulteriormente i vantaggi e gli svantaggi dell'autenticazione di SQL Server e Windows.
Una panoramica dell'autenticazione di SQL Server
Gli amministratori di database creano accessi SQL e forniscono le autorizzazioni appropriate per consentire agli utenti di autenticarsi in SQL Server. Gli utenti devono specificare il login e la password durante la connessione a SQL Server come mostrato di seguito.
Le credenziali dell'utente vengono convalidate attraverso le informazioni memorizzate nel database master. È possibile applicare i criteri seguenti per gli accessi a SQL Server.
- Applica le norme sulle password :gli amministratori possono selezionare questa opzione per implementare il criterio password di Windows per gli accessi a SQL Server. Include la specifica della lunghezza e della complessità della password.
- Applica la scadenza della password :puoi imporre l'età massima di una password. La password sarà scaduta e dovrà essere modificata come definito dai criteri di età.
- L'utente deve cambiare la password al prossimo accesso :L'amministratore assegna una password durante la creazione dell'accesso SQL. Una volta che l'utente accede con le proprie credenziali, deve specificare una nuova password e gli amministratori non saranno a conoscenza di questa nuova password.
Nota:tutte queste configurazioni sono a livello di accesso SQL individuale. Pertanto, se è necessario creare più accessi SQL, è necessario configurare ciascun account con il criterio richiesto.
Non possiamo abilitare solo l'autenticazione SQL. Per abilitarlo, usa l'opzione di autenticazione mista che include sia l'autenticazione Windows che SQL.
Svantaggi dell'autenticazione di SQL Server
Esistono alcune limitazioni e svantaggi nell'utilizzo dell'autenticazione di SQL Server da sola.
- Gli utenti devono ricordare le credenziali di accesso SQL e fornirle nella stringa di connessione ogni volta che si connettono a SQL Server. Se disponi di più SQL Server, potrebbe essere difficile per l'utente tenere traccia delle password per ogni istanza.
- SQL Server archivia la password nel database master in forma crittografata (hash). Gli hacker possono rubare le informazioni accedendo al database. Poiché queste credenziali crittografate devono essere trasmesse in rete, ciò può aumentare le possibilità che le credenziali dell'utente vengano rubate.
- Non è possibile implementare criteri account aggiuntivi (personalizzati) con gli accessi di autenticazione di SQL Server.
- Aumenta il compito di gestione degli accessi per gli amministratori di database. Gli amministratori di database non dispongono di una console di gestione centrale per la gestione degli accessi in tutte le istanze.
Supponiamo che tu abbia più di 500 istanze SQL e che un utente richieda l'accesso a tutte queste istanze. In questo caso, sarebbe un compito noioso per l'amministratore del database connettersi a ciascuna istanza e creare accessi utente. Allo stesso modo, se una persona ha lasciato l'organizzazione, l'amministratore del database deve scoprire gli accessi SQL di quella persona e rimuoverli da tutte queste istanze. Questo può essere un processo che richiede molto tempo.
- Potresti riscontrare problemi con gli utenti orfani quando sposti un database in istanze diverse e ciò potrebbe verificarsi a causa di una mancata corrispondenza SID nel database master e utente nella nuova istanza.
- È necessario gestire le politiche di sicurezza per ogni accesso SQL. Non puoi definire una policy universale per tutti gli account della tua organizzazione. Per un'ampia impronta del database, è un compito arduo definire la politica per ogni singolo accesso.
Migliori casi d'uso per l'autenticazione di SQL Server
- Può aiutare le applicazioni meno recenti e il software di terze parti a connettere i database se non supportano l'autenticazione di Windows (AD).
- Potrebbe essere necessario che gli utenti di domini non attendibili si connettano a SQL Server. In questo caso, l'applicazione può specificare gli accessi SQL nelle stringhe di connessione e connettersi al database.
- Per connettere istanze SQL autonome che non fanno parte di gruppi di Active Directory (AD).
- Può aiutare SQL Server a supportare le applicazioni Web in cui gli utenti creano le proprie identità.
- Gli amministratori condividono in alcuni casi un ID comune per la connessione a SQL Server utilizzando l'autenticazione di Active Directory. Questo pool di connessioni non è una buona pratica. In questo caso, puoi creare accessi separati per ogni utente e collegarti al database utilizzando le sue credenziali.
- Per impostazione predefinita, se implementi il database SQL nel cloud, ad esempio il database SQL di Azure o AWS RDS, ti vengono fornite le credenziali di accesso per l'autenticazione di SQL Server. Successivamente, se necessario, puoi configurare l'autenticazione basata su AD.
- Puoi usarlo per connetterti da sistemi operativi incrociati come Linux e macOS.
Una panoramica dell'autenticazione di Windows
Nell'autenticazione di Windows, l'utente deve prima autenticarsi in Active Directory. SQL Server autentica gli utenti tramite il token principale di Windows nel sistema operativo. Con ciò, SQL Server non richiede una password per la convalida dell'identità. Pertanto, Windows conferma le identità degli utenti per l'autenticazione. SQL Server non archivia le credenziali nell'autenticazione di Windows. La connessione che utilizza l'autenticazione di Windows è denominata connessione affidabile o integrata.
Nota:l'autenticazione di Windows è il metodo di autenticazione predefinito quando si installa SQL Server.
Vantaggi dell'autenticazione di Windows
- L'autenticazione di Windows è un modo sicuro per connettersi a SQL Server e utilizza i token e gli SPN per scopi di autenticazione tramite il protocollo di autenticazione Kerberos. Pertanto, non invia password attraverso la rete e protegge dal furto di password attraverso la rete.
- SQL Server non memorizza le credenziali dell'utente.
- Utilizza il protocollo di sicurezza Kerberos e puoi implementare criteri per le password come password complesse, blocchi degli account e scadenza delle password. Questa politica della password può essere implementata a livello di organizzazione su tutti i server. Pertanto, puoi controllare i criteri di sicurezza degli utenti a livello di organizzazione anziché a livello di accesso individuale come con l'autenticazione di SQL Server.
- L'autenticazione di Windows consente la separazione dei compiti. Il team di Active Directory (AD) gestisce gli utenti di AD. Considerando che il DBA aggiunge utenti AD nelle istanze SQL e fornisce le autorizzazioni appropriate.
- Active Directory aiuta a creare gruppi di Windows. Il team AD può aggiungere più persone che richiedono uguale accesso in un gruppo AD. Successivamente, puoi aggiungere il gruppo nell'istanza SQL e fornire autorizzazioni a livello di gruppo. Pertanto, se una nuova persona si unisce, una volta che fa parte del gruppo AD, l'accesso al database viene automaticamente concesso sul server in cui esiste questo gruppo AD. Allo stesso modo, una volta che un utente si sposta dall'organizzazione e il suo ID viene rimosso da questi gruppi AD, non può più accedere al database.
Svantaggi dell'autenticazione di Windows
- Se utilizzi solo l'autenticazione di Windows per SQL Server, tutti gli utenti dovrebbero far parte di Active Directory.
- I DBA non hanno il controllo sugli accessi e i gruppi di AD.
- L'appartenenza al gruppo AD non è nota al DBA. Non ricevi una notifica se un utente viene aggiunto o rimosso dai gruppi AD.
Riepilogo
Questo post del blog illustra i componenti chiave dell'autenticazione di SQL Server e dell'autenticazione di Windows. Spero che ti aiuti a capire le differenze tra questi metodi di autenticazione per decidere quale funziona meglio per la tua attività e le circostanze.
L'autenticazione di SQL Server può essere utilizzata sulla stessa macchina di SQL Server o su una connessione remota. Se si lavora in un ambiente Active Directory, si consiglia di utilizzare l'autenticazione di Windows. Se lavori in un ambiente non Active Directory, puoi utilizzare l'autenticazione di SQL Server per le connessioni al database.
L'autenticazione di Windows offre maggiore sicurezza e flessibilità per la gestione degli accessi in SQL Server. Pertanto, dovresti usarlo quando possibile.