Mappatura di accessi su più server a un utente del database


11

Questa sembra essere una domanda stupida, ma nonostante alcune ricerche non sono stato in grado di trovare alcuna informazione al riguardo (probabilmente a causa dell'uso di una terminologia errata).

È possibile accedere a più accessi al server (autenticazione sql server) a un singolo utente del database (a cui sono assegnate le autorizzazioni essendo membri di un ruolo del database)?

Ho dozzine di accessi sql (autenticazione del server sql) che devono leggere un'impostazione da un database centrale e preferirei mappare tutti questi accessi a un singolo utente DB nel database di destinazione piuttosto che creare un proprio utente DB per ogni accesso.

Se sì, quale sarebbe la sintassi T-SQL corretta?


Quando dici "accessi al server" intendi account Windows o account server SQL?
Phil Sumner,

Sto parlando degli account del server SQL. Modifica la domanda per chiarire
leepfrog,

Che ne dici di creare un ROLEe quindi aggiungere utenti al ruolo. In questo modo concedi solo le autorizzazioni al ruolo. Questo ti aiuterà a gestire la sicurezza in modo migliore. Inoltre, qual è la versione del server sql - 2008R2, 2012?
Kin Shah,

Risposte:


19

Prima di tutto assicurarsi della terminologia. Un accesso è un'entità di sicurezza a livello di istanza ( sys.server_principals) e un utente è un'entità di sicurezza a livello di database ( sys.database_principals). Sono uniti da un SID (identificatore di sicurezza). Se guardi nelle viste di sistema sopra puoi vedere come sono uniti in un formato 1: 1 dal SID. Questo è 1 Accedi a 1 utente in un database. Un accesso può avere più utenti ma devono trovarsi in database diversi.

Quindi dovrai creare un Utente nel tuo database per ogni Login a cui vuoi avere accesso. È un comando abbastanza semplice.

CREATE USER [UserName] FROM LOGIN [LoginName]

Da lì puoi mettere tutti i tuoi utenti in un ruolo singolo (o multiplo). Un ruolo è un contenitore che dispone di autorizzazioni e condivide tali autorizzazioni con ciascun Utente (per ruoli di database) o Accesso (per ruoli di istanza). Esiste un ruolo di database integrato chiamato db_datareaderche consente l'accesso in lettura a ogni tabella e vista nel database. Puoi aggiungere tutti i tuoi utenti a quel ruolo. Tuttavia, un'idea migliore sarebbe quella di creare un nuovo ruolo e aggiungerlo al db_datareaderruolo. Quindi aggiungi tutti i tuoi utenti al nuovo ruolo. Il vantaggio qui è che se si desidera aggiungere ulteriori autorizzazioni al gruppo, è possibile modificare semplicemente le autorizzazioni sul ruolo.

Crea il ruolo di:

CREATE ROLE RoleName

Aggiungi un utente a un ruolo (o un ruolo a un altro)

EXEC sp_addrolemember 'RoleName','UserName'

o se sei nel 2012 o superiore

ALTER ROLE [RoleName] ADD MEMBER [UserName]

Grazie per la spiegazione dettagliata e per aver fornito informazioni di base su Kenneth, ciò di cui non ero chiaro era That's 1 Login to 1 User in a database.
leepfrog,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.