Questo post discute e propone le metodologie da
utilizzare quando s'intende utilizzare Microsoft SQL Server come Database e
Windows Authentication come metodo di autentificazione.
Windows Authentication
Windows authentication è decisamente la più sicura metodologia da applicare
quando ci si connette a Microsoft SQL Server per i seguenti motivi:
1) Al programmatore non è riservata alcuna operazione di
managing relative alle credenziali e sopratutto queste
non sono trasmesse in rete.
2) Le credenziali (username e password) non sono inglobate
nelle connection strings.
3) Avvalendosi di sistemi di password expiration periods, lunghezza minima ed
account lock successivo a multiple richieste invalide, Logon
Security fornisce un buon punto di partenza.
E' consigliato utilizzare la Windows Authentication nei seguenti scenari:
x) E' stato deciso di utilizzare il modello trusted
subsystem, le connessioni a Microsoft SQL Server vengono effettuate utilizzando
una single fixed identity. Se ci si connette tramite ASP.NET, questo significa
che la Web Application non è direttamente configurata per Impersonation.
In questo caso qui, è necessario utilizzare ASP.NET Process Identity od un
Serviced Component Identity.
x) E' stato deciso intenzionalmente di delegare l'originale
caller security context per utilizzare delegation. (NB: Prendere una decisione
del genere significa essere a conoscenza del fatto che s'intende sacrificare la
scalabilità dell'applicazione).
Windows Authentication -
Considerazioni
x) Utilizzare un account ASP.NET di tipo leasted
privilege (account con privilegi minimi per eseguire le operazioni
necessarie), evitando così di dare il temutissimo privilegio "Act as a part of
the operating system".
x) Determinare i frammenti di codice che richiedono
privilegi addizionali, e, utilizzarli con un serviced component che esegue una
applicazione out-of-process Enterprise Services.
Windows Authentication - Opzioni di
connessione
Ci sono diverse opzioni da scegliere quando si decide di utilizzare la
Windows Authentication quando ci si connette a Microsoft SQL Server da una
applicazione ASP.NET (o WebService, o Remote Component).
x) Utilizzare ASP.NET Process
Identity
x) Utilizzare le fixed identity con
ASP.NET
x) Utilizzare i Serviced
Components
x) Utilizzare l'API LogonUser per impersonificare
una specifica identity.
x) Utilizzare la caller
identity
x) Utilizzare l'account Internet anonimo
Windows Authentication -
Raccomandazioni
La raccomandazione è quella di configurare un account utente locale ASP.NET
cambiando la password in un valore conosciuto nel web server e creare un account
mirror nel server database con le stesse credenziali.
Questa tecnica, naturalmente, può essere utilizza se si possiede il controllo
del database target. Con questa opzione si possono utilizzare degli account
ASP.NET di tipo leasted. Il vantaggio principale derivato da questo metodo
è la possibilità di lavorare su diversi non-trusting networks e bypassare i
firewalls. Dico questo perchè spesso alcuni firewall bloccano le
porte necessarie alla Windows Authentication per
funzionare.