Gewusst wie: Sichern von Verbindungszeichenfolgen bei der Verwendung von Datenquellensteuerelementen

Aktualisiert: November 2007

Bei der Verwendung von Datenquellen-Steuerelementen sollte der Speicherort der Verbindungszeichenfolgen zentralisiert werden, indem diese in der Datei Web.config der Anwendung abgelegt werden. Dies bringt zwei Vorteile mit sich: die Datenquellen-Steuerelemente können auf den Namen der Verbindungszeichenfolge aus der Konfigurationsdatei verweisen anstatt die Verbindungszeichenfolge als eine Steuerelementeigenschaft einzubinden. Außerdem kann die Website aufgrund der zentralisierten Verwaltung von Verbindungszeichenfolgen einfacher verwaltet werden, weil dadurch bei einer Änderung der Informationen zu den Verbindungszeichenfolgen kein erneutes Besuchen einzelner Seiten erforderlich ist.

In diesem Thema wird veranschaulicht, wie Verbindungszeichenfolgen mithilfe von Visual Studio und einem Datenquellen-Steuerelement in der Datei Web.config abgelegt werden und wie diese Verbindungszeichenfolgen mithilfe des Befehlszeilen-Dienstprogramms Aspnet_regiis.exe für eine hinzugefügte Sicherheitsebene verschlüsselt werden.

Hinzufügen einer Verbindungszeichenfolge zu Web.config mit einem Datenquellen-Steuerelement

  1. Öffnen Sie in Visual Studio in der Entwurfsansicht eine ASPX-Seite.

  2. Ziehen Sie aus der Toolbox aus dem Ordner Daten ein Datenquellen-Steuerelement auf die Entwurfsoberfläche, z. B. ein SqlDataSource-Steuerelement.

  3. Klicken Sie mit der rechten Maustaste auf das Steuerelement, und klicken Sie dann auf Smarttag anzeigen.

  4. Klicken Sie im Smarttagbereich auf Datenquelle konfigurieren.

  5. Klicken Sie im Bereich Wählen Sie eine Datenverbindung auf Neue Verbindung.

  6. Wählen Sie aus der Liste im Dialogfeld Datenquelle auswählen eine geeignete Datenquelle aus, und klicken Sie auf OK.

  7. Geben Sie im Dialogfeld Verbindung hinzufügen den richtigen Servernamen, Benutzernamen und das richtige Kennwort ein, und klicken Sie dann auf OK.

    Es wird wieder das Dialogfeld Datenquelle konfigurieren mit einer Zusammenfassung der Verbindungsdetails angezeigt.

  8. Klicken Sie auf Weiter, und klicken Sie dann auf Ja, um die Verbindungszeichenfolge in der Datei Web.config zu speichern.

    Die Verbindungszeichenfolge wird jetzt in der Datei Web.config gespeichert, und die Abfragedetails für das Steuerelement können konfiguriert werden.

So verschlüsseln Sie in der Datei Web.config gespeicherte Verbindungszeichenfolge-Informationen

  1. Führen Sie in der Windows-Befehlszeile das ASP.NET-IIS-Registrierungstool (Aspnet_regiis.exe) mit den folgenden Optionen aus:

    • -pe-Option: übergibt die Zeichenfolge "connectionStrings" zur Verschlüsselung des connectionStrings-Elements.

    • -app-Option: übergibt den Namen der Anwendung.

    Das Aspnet_regiis.exe-Tool befindet sich im Ordner %systemroot%\Microsoft.NET\Framework\versionNumber.

    Im folgenden Codebeispiel wird veranschaulicht, wie der connectionStrings-Abschnitt der Datei Web.config für die Anwendung SampleApplication verschlüsselt wird.

    aspnet_regiis -pe "connectionStrings" -app "/SampleApplication"
    

    Wenn der Befehl abgeschlossen ist, können Sie sich den Inhalt der Datei Web.config anzeigen lassen. Der connectionStrings-Konfigurationsabschnitt enthält verschlüsselte Informationen anstelle von Verbindungszeichenfolgen in Klartext, wie im folgenden Codebeispiel dargestellt.

    <configuration>
       <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
          <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
             xmlns="http://www.w3.org/2001/04/xmlenc#">
             <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
             <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
                   <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
                   <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                      <KeyName>RSA Key
                      </KeyName>
                   </KeyInfo>
                   <CipherData>
                      <CipherValue>WcFEbDX8VyLfAsVK8g6hZVAG1674ZFc1kWH0BoazgOwdBfinhcAmQmnIn0oHtZ5tO2EXGl+dyh10giEmO9NemH4YZk+iMIln+ItcEay9CGWMXSen9UQLpcQHQqMJErZiPK4qPZaRWwqckLqriCl9X8x9OE7jKIsO2Ibapwj+1Jo=
                      </CipherValue>
                   </CipherData>
                </EncryptedKey>
             </KeyInfo>
             <CipherData>
                <CipherValue>OpWQgQbq2wBZEGYAeV8WF82yz6q5WNFIj3rcuQ8gT0MP97aO9SHIZWwNggSEi2Ywi4oMaHX9p0NaJXG76aoMR9L/WasAxEwzQz3fexFgFSrGPful/5txSPTAGcqUb1PEBVlB9CA71UXIGVCPTiwF7zYDu8sSHhWa0fNXqVHHdLQYy1DfhXS3cO61vW5e/KYmKOGA4mjqT0VZaXgb9tVeGBDhjPh5ZlrLMNfYSozeJ+m2Lsm7hnF6VvFm3fFMXa6+h0JTHeCXBdmzg/vQb0u3oejSGzB4ly+V9O0T4Yxkwn9KVDW58PHOeRT2//3iZfJfWV2NZ4e6vj4Byjf81o3JVNgRjmm9hr9blVbbT3Q8/j5zJ+TElCn6zPHvnuB70iG2KPJXqAj2GBzBk6cHq+WNebOQNWIb7dTPumuZK0yW1XDZ5gkfBuqgn8hmosTE7mCvieP9rgATf6qgLgdA6zYyVV6WDjo1qbCV807lczxa3bF5KzKaVUSq5FS1SpdZKAE6/kkr0Ps++CE=
                </CipherValue>
             </CipherData>
          </EncryptedData>
       </connectionStrings>
    </configuration>
    

    Lassen Sie die Eingabeaufforderung für spätere Schritte geöffnet.

  2. Bestimmen Sie das Benutzerkonto oder die Identität, unter der ASP.NET ausgeführt wird, indem Sie den aktuellen WindowsIdentity-Namen abrufen.

    Im folgenden Codebeispiel wird eine Möglichkeit zum Bestimmen des WindowsIdentity-Namens veranschaulicht.

    <%@ Page Language="VB" %>
    <%
    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name)
    %>
    
    <%@ Page Language="C#" %>
    <%
    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
    %>
    
    Hinweis:

    Wenn unter Windows Server 2003 der Identitätswechsel für eine ASP.NET-Anwendung in der Datei Web.config deaktiviert ist, dann ist die Standardidentität, unter der die Anwendung ausgeführt wird, das NETZWERKDIENST-Konto. In anderen Windows-Versionen wird ASP.NET unter dem lokalen ASPNET-Konto ausgeführt.

    Das Benutzerkonto bzw. die Benutzeridentität, unter der ASP.NET ausgeführt wird, muss über Lesezugriff auf den Verschlüsselungsschlüssel verfügen, mit dem die Abschnitte der Datei Web.config verschlüsselt und entschlüsselt werden. Diese Vorgehensweise setzt voraus, das die Website mit dem in der Datei Machine.config angegebenen Standard-RsaProtectedConfigurationProvider "RsaProtectedConfigurationProvider" konfiguriert ist. Der RSA-Schlüsselcontainer, der vom Standard-RsaProtectedConfigurationProvider verwendet wird, trägt die Bezeichnung "NetFrameworkConfigurationKey".

  3. Führen Sie an der Eingabeaufforderung das Tool Aspnet_regiis.exe mit den folgenden Optionen aus:

    • -pa-Option: übergibt den Namen des RSA-Schlüsselcontainers für den Standard-RsaProtectedConfigurationProvider.

    • Die Identität der ASP.NET-Anwendung, wie im vorherigen Schritt bestimmt.

    Im folgenden Codebeispiel wird veranschaulicht, wie dem NETZWERKDIENST-Konto Zugriff auf den RSA-Schlüsselcontainer "NetFrameworkConfigurationKey" auf Computerebene gewährt wird.

    aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
    
  4. Um den verschlüsselten Inhalt der Datei Web.config zu entschlüsseln, führen Sie das Tool aspnet_regiis.exe mit der -pd-Option aus. Die Syntax ist die gleiche wie beim Verschlüsseln von Inhalten der Datei Web.config mit der -pe-Option, außer dass Sie keinen Anbieter für geschützte Konfiguration angeben. Der entsprechende Anbieter wird über das configProtectionProvider-Attribut für den geschützten Abschnitt identifiziert.

    Im folgenden Codebeispiel wird veranschaulicht, wie das connectionStrings-Element der ASP.NET-Anwendung SampleApplication entschlüsselt wird.

    aspnet_regiis -pd "connectionStrings" -app "/SampleApplication"
    

Siehe auch

Weitere Ressourcen

Verschlüsseln von Konfigurationsinformationen mithilfe der geschützten Konfiguration