2009-04-11 13 views
2

Was ist die bevorzugte Methode (Best Practice) zum Verbinden einer ASP.Net-Website mit einer Datenbank? Ich bezweifle, dass es so einfach ist, Trusted-Connection zu verwenden und den NT-Authority-Accounts Zugriff zu gewähren.Bevorzugte DB-Verbindung für ASP.Net

Was machen Sie? Nehmen Sie eine Neuinstallation von SQL Server (2008) vor. Was tun Sie, um den Zugriff auf die Datenbank für eine Website zu konfigurieren?

Antwort

1

Normalerweise verwende ich den ASP.NET App-Pool als separates Konto (nicht NT AUTHORITY\NETWORK SERVICE) und verwende die Windows-Authentifizierung für den Zugriff auf den SQL Server. Diese Methode hat den Vorteil, dass das Passwort nicht in Konfigurationsdateien gespeichert wird.

Schritte:

  1. ein Benutzerkonto erstellen ASP.NET-Anwendung laufen.
  2. Erstellen Sie einen Anwendungspool in IIS, und führen Sie ihn auf dem erstellten Konto aus.
  3. Weisen Sie NTFS-Berechtigungen zu, die Ihre Anwendung für das Konto benötigt.
  4. Berechtigung zum Anmelden bei SQL Server erteilen.
  5. Ordnen Sie der erstellten Anmeldung die entsprechenden Datenbankrollen zu.

Dies funktioniert für viele Anwendungen. Für komplexere Sicherheitsumgebungen benötigen Sie möglicherweise komplexere Strategien.

+0

Das macht Sinn. Können Sie einen Link oder eine Anleitung zur Implementierung bereitstellen? – jcelgin

+0

Bedenken Sie auch, dass Sie Ihre eigenen Rollen für eine Datenbank definieren können. Wenn Sie Best Practices versuchen, möchten Sie einschränken, was eine Anwendung (der zugeordnete Benutzer) über die inhärenten Einschränkungen in den Standardrollen hinaus tun kann oder nicht . – Murph

0

Früher verwendete ich vertrauenswürdige Verbindungen, aber ich hatte das Gefühl, dass ich manchmal dem Dienstkonto, das für den Verbindungs-/App-Pool verwendet wurde, zu viele Privilegien gewähren musste. Jetzt verwende ich SQL Server-Konten und richte die Anwendung so ein, dass die Verbindungszeichenfolgen während Application_Start verschlüsselt werden, wenn sie nicht bereits verschlüsselt sind. Tatsächlich verschlüssle ich jeden Abschnitt, der Benutzeranmeldeinformationen enthalten kann. Ich verwende eine appSetting, um festzustellen, ob der Verschlüsselungscode ausgeführt wird, damit ich meine Einstellungen in der Entwicklungsumgebung nicht verschlüsseln.

+0

Für große Apps, die möglicherweise andere Berechtigungen haben, stimme ich vollkommen zu. (SQL Server-Anwendungsrolle ist eine andere Möglichkeit, die geringsten Berechtigungen zu erreichen). Aber viele Web-Apps sind klein genug, dass es nicht sinnvoll ist, viele verschiedene Konten zu haben. Kennwörter verursachen Wartungsprobleme ... –

0

Ich benutze auch SQL Server-Konten, finde es einfach zu tun und zu beheben.

Verwandte Themen