SQL Server 2008 con autenticazione di Windows: l'accesso di Windows viene mappato a più utenti DB contemporaneamente?

StackOverflow https://stackoverflow.com/questions/4909518

Domanda

Ho configurato due utenti all'interno di un database Express SQL Server 2008: red e round.

  • red mappe a un gruppo di Windows locale MACHINE\Red.
    red è un membro dei ruoli di database predefiniti db_datawriter.

  • round mappe a un gruppo di Windows locale chiamato MACHINE\Round.
    round è un membro dei ruoli di database predefiniti db_denydatawriter.

Entrambi i gruppi Windows locali contengono un utente di Windows locale MACHINE\tomato.

Dalla mia applicazione .NET, ora sto provando a INSERT dati in qualche tabella di database durante l'accesso come MACHINE\tomato (e collegandosi al database utilizzando l'autenticazione di Windows). Questo non funziona, presumibilmente a causa dell'appartenenza all'utente SQL round nel db_denydatawriter ruolo.

Così, Come può essere l'accesso a Windows mappato a due utenti SQL Server contemporaneamente?

--                      MACHINE\Red ---------- red ------- db_datawriter
--                    /
--     MACHINE\tomato
--                    \
--                      MACHINE\Round ------- round ------ db_denydatawriter

E come mai quando recupero l'accesso corrente tramite

SELECT CURRENT_USER   -- I could also use SYSTEM_USER or ORIGINAL_LOGIN()
                      -- with exactly the same result, it seems

torno MYMACHINE\tomato, e non red o round?

È stato utile?

Soluzione

Tutto funziona esattamente come dovrebbe. Inizierò dal fondo. Quando si accede a una cartella che fornisce autorizzazioni al gruppo "Domain Programmers", sei ancora in modo univoco come "Domain User". Quindi, sebbene ci vuole tutti i tuoi ruoli, mappano gli utenti ecc. someone-from-"Domain\Programmers". SQL Server sta solo segnalando esattamente chi sei.

Per quanto riguarda gli accessi mappati, poiché è possibile mappato su più gruppi di Windows, SQL Server tiene conto di ognuno. Deve, altrimenti 2 ruoli SQL mappati su "Domain Programmers" e "Domain Sysadmin", ognuno con accesso a diversi database. Ti aspetteresti di avere accesso a tutti i database dalla combinazione dei due gruppi Windows. A seguito di ciò, l'intera matrice di accesso è costruita da tutti i

  • autorizzazioni specifiche per l'utente di Windows
  • autorizzazioni specifiche per utenti Windows diretto (per ruolo)
  • autorizzazioni specifiche del gruppo di Windows
  • autorizzazioni specifiche per il ruolo di Windows-Group (per ruolo)

In linea con il "Negare Trumps permettete" Meccanismo comune sia a Windows che a SQL Server, un singolo negazione bloccerà tutto l'accesso, altrimenti un unico consumo da qualsiasi ramo consentirà l'accesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top