Freigeben über


Authentifizierung in SQL Server (ADO.NET)

Aktualisiert: November 2007

SQL Server unterstützt zwei Authentifizierungsmodi: den Windows-Authentifizierungsmodus und den gemischten Modus.

  • Die Windows-Authentifizierung ist der Standard. Sie wird häufig auch als "integrierte Sicherheit" bezeichnet, weil dieses SQL Server-Sicherheitsmodell eng in Windows integriert ist. Dabei gelten bestimmte Windows-Benutzer- und -Gruppenkonten als so vertrauenswürdig, dass sie sich bei SQL Server anmelden dürfen. Windows-Benutzer, die bereits authentifiziert wurden, müssen keine zusätzlichen Anmeldeinformationen zur Verfügung stellen.

  • Der gemischte Modus unterstützt die Authentifizierung durch Windows und durch SQL Server. Die Paare aus Benutzername und Kennwort werden innerhalb von SQL Server beibehalten.

Sicherheitshinweis:

Es wird empfohlen, möglichst immer die Windows-Authentifizierung zu verwenden. Die Windows-Authentifizierung verwendet zum Authentifizieren der Benutzer in SQL Server eine Reihe verschlüsselter Meldungen. Bei der Verwendung von SQL Server-Anmeldungen werden die SQL Server-Anmeldenamen und -Kennwörter über das Netzwerk übertragen und damit angreifbar.

Bei der Windows-Authentifizierung sind die Benutzer bereits bei Windows angemeldet und müssen sich nicht noch einmal bei SQL Server anmelden. Die folgende SqlConnection.ConnectionString gibt die Windows-Authentifizierung an, bei der Benutzername und Kennwort nicht erforderlich sind.

"Server=MSSQL1;Database=AdventureWorks;Integrated Security=true;
Hinweis:

Anmeldungen und Datenbankbenutzer sind nicht dasselbe. Sie müssen Anmeldungen oder Windows-Gruppen in einem separaten Vorgang Datenbankbenutzern oder Rollen zuordnen. Anschließend gewähren Sie den Benutzern oder Rollen Berechtigungen, damit diese auf die Datenbankobjekte zugreifen können.

Authentifizierungsszenarios

In den folgenden Situationen ist die Windows-Authentifizierung in der Regel die beste Wahl:

  • Es gibt einen Domänencontroller.

  • Die Anwendung und die Datenbank befinden sich auf demselben Computer.

  • Sie verwenden eine Instanz von SQL Server Express.

SQL Server-Anmeldungen werden im Allgemeinen in den folgenden Situationen verwendet:

  • Wenn Sie über eine Arbeitsgruppe verfügen.

  • Die Benutzer stellen die Verbindung von unterschiedlichen, nicht vertrauenswürdigen Domänen aus her.

  • Internetanwendungen, z. B. ASP.NET.

Hinweis:

Das Angeben der Windows-Authentifizierung führt nicht zu einer Deaktivierung von SQL Server-Anmeldungen. Wenn Sie die SQL Server-Anmeldungen mit den weit reichenden Berechtigungen deaktivieren möchten, verwenden Sie die Transact-SQL-ALTER LOGIN DISABLE-Anweisung.

Anmeldungstypen

SQL Server 2000 unterstützt die folgenden drei Anmeldungstypen:

  • Lokales Windows-Benutzerkonto oder vertrauenswürdiges Domänenkonto: SQL Server verlässt sich bei der Authentifizierung der Windows-Benutzerkonten auf Windows.

  • Windows-Gruppe: Wenn einer Windows-Gruppe Zugriff gewährt wird, gelten diese Zugriffsrechte für alle Windows-Benutzeranmeldungen, die dieser Gruppe angehören.

  • SQL Server-Anmeldung: SQL Server speichert in der Masterdatenbank den Benutzernamen und einen Hash des Kennworts. Für die Überprüfung der Anmeldungsversuche werden interne Authentifizierungsmethoden verwendet.

Hinweis:

In SQL Server 2005 kommen Anmeldungen hinzu, die aus Zertifikaten oder asymmetrischen Schlüsseln erstellt wurden und ausschließlich für die Codesignierung verwendet werden. Zum Herstellen einer Verbindung mit SQL Server können sie nicht verwendet werden.

Authentifizierung im gemischten Modus

Wenn die Authentifizierung im gemischten Modus verwendet werden soll, müssen Sie SQL Server-Anmeldungen erstellen, die in SQL Server gespeichert werden. Zur Laufzeit müssen dann der SQL Server-Benutzername und das Kennwort angegeben werden.

Sicherheitshinweis:

SQL Server wird mit einer SQL Server-Anmeldung mit dem Namen sa (kurz für "Systemadministrator") installiert. Weisen Sie der sa-Anmeldung ein starkes Kennwort zu, und verwenden Sie die sa-Anmeldung nicht in Ihrer Anwendung. Die sa-Anmeldung wird der festen Serverrolle sysadmin zugeordnet, die nicht widerrufbare administrative Anmeldeinformationen für den gesamten Server besitzt. Wenn es einem Angreifer gelingt, sich als Systemadministrator Zugriff zu verschaffen, stehen ihm Tür und Tor offen. Alle Member der Windows-Gruppe BUILTIN\Administrators (der lokalen Administratorgruppe) gehören standardmäßig der Rolle sysadmin an, können aber aus dieser Rolle entfernt werden.

Seit SQL Server 2005 können Sie in Windows Kennwortrichtlinien für SQL Server-Anmeldungen erstellen, sofern die Ausführung unter Windows Server 2003 oder höher erfolgt. Mithilfe von Richtlinien zur Kennwortkomplexität sollen Brute-Force-Angriffe vereitelt werden, indem die Anzahl der möglichen Kennwörter erhöht wird. SQL Server 2005 kann die gleichen Komplexitäts- und Ablaufrichtlinien anwenden, die in Windows Server 2003 für die in SQL Server verwendeten Kennwörter gelten.

Sicherheitshinweis:

Das Verketten von Verbindungszeichenfolgen aus Benutzereingaben kann zu einer Anfälligkeit für Angriffe durch Einschleusung von Verbindungszeichenfolgen führen. Verwenden Sie zum Erstellen syntaktisch gültiger Verbindungszeichenfolgen zur Laufzeit den SqlConnectionStringBuilder. Weitere Informationen dazu finden Sie unter Verbindungszeichenfolgen-Generatoren (ADO.NET).

Externe Ressourcen

Weitere Informationen finden Sie in den folgenden Ressourcen:

Ressource

Beschreibung

Prinzipale in der SQL Server 2008-Onlinedokumentation

Beschreibt Anmeldungen und andere Sicherheitsprinzipale in SQL Server 2008.

Prinzipale in der SQL Server 2005-Onlinedokumentation

Beschreibt Anmeldungen und andere Sicherheitsprinzipale in SQL Server 2005.

Benutzernamen in der SQL Server 2000-Onlinedokumentation

Enthält Informationen zu Benutzernamen und zur Authentifizierung in SQL Server 2000.

Siehe auch

Konzepte

Anwendungssicherheitsszenarien in SQL Server (ADO.NET)

Weitere Ressourcen

Sichern von ADO.NET-Anwendungen

Herstellen einer Verbindung mit einer Datenquelle (ADO.NET)

Verbindungszeichenfolgen (ADO.NET)