In che modo SQL Server gestisce gli accessi in caso di ambiguità, ad esempio, esistono accessi sia per l'account utente Windows sia per un gruppo AD che contiene questo utente?Autorizzazioni a livello di database per un utente Windows con accesso creato sia per l'utente che contenente il gruppo di annunci?
Abbiamo riscontrato un piccolo problema con le autorizzazioni in SQL Server 2008 con utenti Windows dalla nostra Active Directory e gruppi da tale annuncio. Proverò a spiegare con un esempio.
Immaginare un utente di dominio Windows DOMAIN\myUser
appartenente a un gruppo di annunci DOMAIN\SomeGroup
.
In SQL Server, ho 2 database SomeAppDb
e PublicDb
.
L'obiettivo è che tutti gli utenti che sono membri di DOMAIN\SomeGroup
dovrebbero essere in grado di accedere PublicDb
, ma solo DOMAIN\myUser
dovrebbero essere in grado di accedere a SomeAppDb
.
Inizialmente, in SQL Server un account di accesso di Windows DOMAIN\SomeGroup
(associato al gruppo dC) è stato creato per l'istanza, e un utente è stato creato nel database PublicDb
con una corretta appartenenza a un ruolo, e che ha funzionato bene, gli utenti dal gruppo SomeGroup
poteva accedere ai dati di cui avevano bisogno in PublicDb
.
Per le esigenze di una nuova applicazione, abbiamo voluto fornire un accesso esplicito per db SomeAppDb all'utente DOMAIN\myUser
, consentendo comunque l'accesso a PublicDb
. Abbiamo quindi creato in SQL Server un account di accesso di Windows per DOMAIN\myUser
, e un utente è stato creato nel database SomeAppDb
, con una mappatura tra il 2.
Da quel momento, myUser potrebbe accedere SomeAppDb
come previsto, ma potrebbe non accedere più PublicDb
, e abbiamo avuto un errore come:
Cannot open database "PublicDb" requested by the login. The login failed.
Login failed for user 'DOMAIN\myUser'
mio intuito mi dice che quando l'utente accede l'istanza di SQL Server, SQL Server vede un account di accesso alle partite l'utente di Windows e ignora il login esistente per un gruppo che l'utente appartiene a.
Un approccio è quello di aggiungere esplicitamente l'accesso al db PublicDb per utente myUser, ma preferirei evitare quella soluzione in quanto obbliga ad aggiornare PublicDb ogni volta che vogliamo dare accesso a nuovi utenti che è esattamente quello che stavamo cercando di evitare inizialmente ... (lo abbiamo fatto come una soluzione temporanea, sperando di trovare un'opzione migliore).
Qualcun altro ha riscontrato questo problema? c'è un approccio migliore?
grazie in anticipo
la mia domanda potrebbe essere spostata su http://dba.stackexchange.com? – tsimbalar
Sei curioso di sapere se hai avuto la possibilità di testare qualcuno dei test suggeriti e verificare cose come l'appartenenza al gruppo, ecc.? –
questa settimana sono impazzito, ma spero di immergermi un po 'più a fondo prima della fine della settimana. grazie – tsimbalar