Unterschied zwischen einem Benutzer und einem Login in SQL Server

177

Ich bin kürzlich auf viele verschiedene Bereiche von SQL Server gestoßen, mit denen ich normalerweise nicht zu tun habe. Einer von ihnen, der mich verwirrt hat, ist der Bereich Anmeldungen und Benutzer. Scheint, als sollte es ein ziemlich einfaches Thema sein ...

Es scheint, dass jeder Login nur 1 Benutzer haben kann und jeder Benutzer nur 1 Login haben kann.

Ein Login kann mehreren Tabellen zugeordnet werden, wodurch dieser Benutzer vielen Tabellen zugeordnet wird.

Meine Frage ist also, warum ich überhaupt ein Login und einen Benutzer habe. sie scheinen so ziemlich eins zu sein. Was sind die Unterschiede oder was scheint mir zu fehlen?

Corymathews
quelle

Antworten:

202

Ein "Login" gewährt den Haupteintrag in den SERVER.

Ein "Benutzer" gewährt einen Login-Eintrag in eine einzelne DATENBANK.

Ein "Login" kann vielen Benutzern zugeordnet werden (einer pro Datenbank).

Jedem der oben genannten Objekte können Berechtigungen auf seiner eigenen Ebene erteilt werden. In den folgenden Artikeln finden Sie jeweils eine Erläuterung

Scott Ivey
quelle
7
Kein Wunder, dass ich keinen Unterschied feststellen konnte. Ich habe einfach mit 1 Datenbank gearbeitet. Vielen Dank.
Corymathews
3
Diese Antwort ist grundsätzlich richtig, aber meines Wissens kann einem bestimmten Benutzer tatsächlich Zugriff auf mehr als eine Datenbank gewährt werden, die auf diesem bestimmten Server verfügbar ist. Login-to-User ist also eine 1-zu-1-Zuordnung, User-to-Database ist jedoch eine 1-zu-Many-Zuordnung.
Andrew Pate
1
@coreymathews: Weniger Zeit in "Boy Meets World" und mehr Zeit in den Büchern! ;).
MSIS
Jetzt empfiehlt MSDN jedoch einen Benutzertyp "Benutzer, die sich bei der Datenbank authentifizieren" (empfohlen, um Ihre Datenbank portabler zu machen). Link: docs.microsoft.com/en-us/sql/t-sql/statements/… Ist dies besser als der herkömmliche Benutzertyp?
Sheen
32

Ein Grund für beides ist, dass die Authentifizierung vom Datenbankserver durchgeführt werden kann, die Autorisierung jedoch auf die Datenbank beschränkt werden kann. Auf diese Weise können Sie beim Verschieben Ihrer Datenbank auf einen anderen Server die Benutzeranmeldebeziehung auf dem Datenbankserver jederzeit neu zuordnen, Ihre Datenbank muss sich jedoch nicht ändern.

Tom Resing
quelle
Können Sie bitte näher darauf eingehen? Was ist der Vorteil der Änderung auf dem Datenbankserver und nicht auf der Datenbank?
HeyJude
Angenommen, Sie möchten eine Datenbank sichern und wiederherstellen. Die Wiederherstellung wird häufig auf einem neuen Server durchgeführt. Möglicherweise möchten Sie bei einer Wiederherstellung keine Änderungen an einer Datenbank vornehmen müssen.
Tom Resing
Warum nicht einfach die Änderung vornehmen, nachdem die Datenbank wiederhergestellt wurde?
HeyJude
1
Es gibt ein gutes 60-Sekunden-Video zum Thema bei SQLAuthority für weitere Informationen blog.sqlauthority.com/2014/07/16/…
Tom Resing
1
@HeyJude Dies bedeutet, dass der Server sich mit der Authentifizierung befasst, was die Datenbank tun müsste, wenn die Anmeldung und die Benutzer nicht getrennt wären.
Zaid Khan
24

Ich denke, es gibt einen wirklich guten MSDN-Blogbeitrag zu diesem Thema von Laurentiu Cristofor:

Das erste wichtige, was über die SQL Server-Sicherheit verstanden werden muss, ist, dass zwei Sicherheitsbereiche betroffen sind - der Server und die Datenbank. Der Serverbereich umfasst mehrere Datenbankbereiche. Alle Arbeiten werden im Kontext einer Datenbank ausgeführt, aber um die Arbeit ausführen zu können, muss man zuerst Zugriff auf den Server und dann Zugriff auf die Datenbank haben.

Der Zugriff auf den Server wird über Logins gewährt. Es gibt zwei Hauptkategorien von Anmeldungen: SQL Server-authentifizierte Anmeldungen und Windows-authentifizierte Anmeldungen. Ich werde normalerweise auf diese mit den kürzeren Namen von SQL-Anmeldungen und Windows-Anmeldungen verweisen. Windows-authentifizierte Anmeldungen können entweder Anmeldungen sein, die Windows-Benutzern zugeordnet sind, oder Anmeldungen, die Windows-Gruppen zugeordnet sind. Um eine Verbindung zum Server herstellen zu können, muss der Zugriff über einen dieser Typen oder Anmeldungen erfolgen. Anmeldungen ermöglichen den Zugriff auf den Serverbereich.

Anmeldungen reichen jedoch nicht aus, da die Arbeit normalerweise in einer Datenbank ausgeführt wird und Datenbanken separate Bereiche sind. Der Zugriff auf Datenbanken wird über Benutzer gewährt.

Benutzer werden Anmeldungen zugeordnet, und die Zuordnung wird durch die SID-Eigenschaft von Anmeldungen und Benutzern ausgedrückt. Ein Login wird einem Benutzer in einer Datenbank zugeordnet, wenn seine SID-Werte identisch sind. Abhängig von der Art der Anmeldung können wir daher eine Kategorisierung von Benutzern vornehmen, die die obige Kategorisierung für Anmeldungen nachahmt. Wir haben also SQL-Benutzer und Windows-Benutzer, und die letztere Kategorie besteht aus Benutzern, die Windows-Benutzeranmeldungen zugeordnet sind, und Benutzern, die Windows-Gruppenanmeldungen zugeordnet sind.

Machen wir einen Schritt zurück, um einen schnellen Überblick zu erhalten: Ein Login bietet Zugriff auf den Server. Um weiter auf eine Datenbank zugreifen zu können, muss in der Datenbank ein Benutzer vorhanden sein , der dem Login zugeordnet ist.

Das ist der Link zum vollständigen Beitrag.

David Leitner
quelle
Dieser Blog-Beitrag wurde entfernt :(
Steven Schlansker
23

Zusamenfassend,

Anmeldungen haben Zugriff auf den Server.

und

Benutzer haben Zugriff auf die Datenbank.

Vikrant Kedari
quelle
6

Ich denke, dies ist eine sehr nützliche Frage mit guter Antwort. Nur um meine zwei Cent von der MSDN Add a Login- Seite hinzuzufügen :

Ein Login ist ein Sicherheitsprinzipal oder eine Entität, die von einem sicheren System authentifiziert werden kann. Benutzer benötigen eine Anmeldung, um eine Verbindung zu SQL Server herzustellen. Sie können eine Anmeldung basierend auf einem Windows-Prinzipal (z. B. einem Domänenbenutzer oder einer Windows-Domänengruppe) erstellen oder eine Anmeldung erstellen, die nicht auf einem Windows-Prinzipal basiert (z. B. eine SQL Server-Anmeldung).

Hinweis:
Um die SQL Server-Authentifizierung verwenden zu können, muss das Datenbankmodul die Authentifizierung im gemischten Modus verwenden. Weitere Informationen finden Sie unter Auswählen eines Authentifizierungsmodus.

Als Sicherheitsprinzipal können Berechtigungen für Anmeldungen erteilt werden. Der Umfang einer Anmeldung ist das gesamte Datenbankmodul. Um eine Verbindung zu einer bestimmten Datenbank auf der Instanz von SQL Server herzustellen, muss eine Anmeldung einem Datenbankbenutzer zugeordnet werden. Berechtigungen innerhalb der Datenbank werden dem Datenbankbenutzer erteilt und verweigert, nicht der Anmeldung. Berechtigungen, die den Umfang der gesamten Instanz von SQL Server haben (z. B. die Berechtigung CREATE ENDPOINT), können einem Login erteilt werden.

ilmatte
quelle
3
Es ist etwas klarer, wenn Sie >am Anfang jedes Absatzes ein Anführungszeichen setzen, damit es als Anführungszeichen formatiert wird.
Sam
2
Das war so nützlich. Obwohl ich die Benutzer und Anmeldungen korrekt eingerichtet hatte, war das System nicht so eingerichtet, dass eine SQL Server-Anmeldeauthentifizierung möglich war. Warum ich SQL Server-Anmeldungen erstellen könnte, wenn der Server nicht zulässt, dass sie sich anmelden, ist mir ein Rätsel!
Mark Ireland
Das hat mich auch verblüfft. Wenn sich der Server derzeit nicht im gemischten Modus befindet, hätte ich erwartet, dass der Server beim Erstellen einer SQL-Authentifizierungsanmeldung nur einen Fehler auslöst, der dem Benutzer zumindest einen Hinweis gibt, der angibt, dass er zuerst die Authentifizierung im gemischten Modus aktivieren soll.
Arunsun
1

Diagramm über Anmeldungen / Benutzer aus MS SQL-Dokumenten

Geben Sie hier die Bildbeschreibung ein

frmbelz
quelle