Differenza tra un utente e un accesso in SQL Server


178

Recentemente mi sono imbattuto in molte diverse aree di SQL Server che normalmente non mi scherzo. Uno di quelli che mi ha confuso è l'area degli accessi e degli utenti. Sembra che dovrebbe essere un argomento piuttosto semplice ...

Sembra che ogni accesso può avere solo 1 utente e ogni utente può avere solo 1 accesso.

Un login può essere associato a più tabelle associando così l'utente a molte tabelle.

Quindi la mia domanda è: perché anche avere un login e un utente? sembrano essere praticamente la stessa cosa. Quali sono le differenze o cosa mi sembra che manchi?

Risposte:


202

Un "Login" garantisce la voce principale nel SERVER.

Un "Utente" concede una voce di accesso in un singolo DATABASE.

Un "Login" può essere associato a molti utenti (uno per database).

Ognuno degli oggetti sopra può avere le autorizzazioni concesse ad esso al proprio livello. Vedere i seguenti articoli per una spiegazione di ciascuno


7
Ah, non c'è da stupirsi che non riuscissi a trovare la differenza. Stavo semplicemente lavorando con 1 database. Grazie.
corymathews,

3
Questa risposta è fondamentalmente corretta, ma a quanto ho capito, a un determinato utente può effettivamente essere concesso l'accesso a più di un database disponibile su quel particolare server. Quindi login-to-user è una mappatura da 1 a 1, ma user-to-database è una mappatura da 1 a molti.
Andrew Pate,

1
@coreymathews: Meno tempo in "Boy Meets World" e più tempo sui libri! ;).
MSIS

Ma ora MSDN consiglia un tipo di utente "Utenti che eseguono l'autenticazione nel database" (consigliato per rendere il database più portatile). Link: docs.microsoft.com/en-us/sql/t-sql/statements/… È meglio del tipo di utente tradizionale?
Sheen,

32

Uno dei motivi per avere entrambi è che l'autenticazione può essere eseguita dal server di database, ma l'autorizzazione può essere portata nell'ambito del database. In questo modo, se si sposta il database su un altro server, è sempre possibile rimappare la relazione di accesso utente sul server del database, ma il database non deve cambiare.


Puoi per favore elaborare? Qual è il vantaggio della modifica apportata sul server di database anziché sul database?
HeyJude,

Supponi di voler eseguire il backup e il ripristino di un database. Il ripristino viene spesso eseguito su un nuovo server. Potrebbe non essere necessario apportare modifiche a un database in un ripristino.
Tom Resing,

Perché non apportare la modifica solo dopo il ripristino del database?
HeyJude,

1
C'è un buon video di 60 secondi sull'argomento su SQLAuthority per maggiori informazioni blog.sqlauthority.com/2014/07/16/…
Tom Resing,

1
@HeyJude Significa che il server si occupa dell'autenticazione, qualcosa che il database dovrebbe fare se non fosse per il login e la separazione dell'utente.
Zaid Khan,

25

Penso che ci sia un ottimo post sul blog MSDN su questo argomento di Laurentiu Cristofor:

La prima cosa importante da capire sulla sicurezza di SQL Server è che sono coinvolti due ambiti di sicurezza: il server e il database. Il realm del server comprende più realm del database. Tutto il lavoro viene svolto nel contesto di alcuni database, ma per riuscire a farlo, è necessario prima avere accesso al server e quindi avere accesso al database.

L'accesso al server è garantito tramite accessi. Esistono due categorie principali di accessi: accessi autenticati di SQL Server e accessi autenticati di Windows. Di solito mi riferirò a questi usando i nomi più brevi degli accessi SQL e degli accessi Windows. Gli accessi autenticati di Windows possono essere accessi associati a utenti Windows o accessi associati a gruppi di Windows. Quindi, per essere in grado di connettersi al server, è necessario avere accesso tramite uno di questi tipi o accessi: gli accessi forniscono l'accesso al regno del server.

Ma gli accessi non sono sufficienti, perché di solito il lavoro viene svolto in un database e i database sono regni separati. L'accesso ai database è garantito dagli utenti.

Gli utenti vengono mappati agli accessi e la mappatura è espressa dalla proprietà SID degli accessi e degli utenti. Un accesso è mappato a un utente in un database se i loro valori SID sono identici. A seconda del tipo di accesso, possiamo quindi disporre di una categorizzazione di utenti che imita la suddetta classificazione per gli accessi; quindi, abbiamo utenti SQL e utenti Windows e quest'ultima categoria è costituita da utenti mappati agli accessi utente di Windows e da utenti mappati agli accessi di gruppo di Windows.

Facciamo un passo indietro per una rapida panoramica: un accesso fornisce l'accesso al server e per ottenere ulteriormente l'accesso a un database, nel database deve esistere un utente mappato all'accesso.

questo è il link al post completo.


Questo post sul blog è stato rimosso :(
Steven Schlansker,

23

In breve,

Account di accesso avranno l'accesso del server.

e

Gli utenti avranno accesso al database.


6

Penso che questa sia una domanda molto utile con una buona risposta. Solo per aggiungere i miei due centesimi dal MSDN Creare una pagina di accesso :

Un accesso è un'entità di sicurezza o un'entità che può essere autenticata da un sistema sicuro. Gli utenti hanno bisogno di un login per connettersi a SQL Server. È possibile creare un accesso basato su un'entità Windows (come un utente di dominio o un gruppo di dominio Windows) oppure è possibile creare un accesso non basato su un'entità Windows (come un accesso SQL Server).

Nota:
per utilizzare l'autenticazione di SQL Server, il Motore di database deve utilizzare l'autenticazione in modalità mista. Per ulteriori informazioni, consultare Scegliere una modalità di autenticazione.

Come entità di sicurezza, le autorizzazioni possono essere concesse agli accessi. Lo scopo di un accesso è l'intero Motore di database. Per connettersi a un database specifico sull'istanza di SQL Server, è necessario associare un account di accesso a un utente del database. Le autorizzazioni all'interno del database vengono concesse e negate all'utente del database, non al login. Le autorizzazioni che hanno l'ambito dell'intera istanza di SQL Server (ad esempio l'autorizzazione CREATE ENDPOINT) possono essere concesse a un accesso.


3
È un po 'più chiaro se inserisci un punto >all'inizio di ogni paragrafo nella citazione, quindi è formattato come una citazione.
Sam,

2
Questo è stato così utile. Anche se avevo configurato correttamente gli utenti e gli accessi, il sistema non era configurato per consentire l'autenticazione dell'accesso a SQL Server. Perché potrei creare accessi a SQL Server quando il server non consente loro di accedere è al di là di me!
Segna l'Irlanda il

Anche questo mi ha lasciato perplesso. se il server non è attualmente in modalità mista, mi sarei aspettato che il server generasse un errore durante il tentativo di creare un account di accesso di SQL Auth, che fornirebbe all'utente un indizio che indichi che dovrebbero prima attivare l'autenticazione in modalità mista.
Arunsun,

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.