Übersicht über die geschützte Konfiguration

Aktualisiert: November 2007

Sie können zum Schutz von vertraulichen Informationen, z. B. Benutzernamen, Kennwörtern, Datenbankverbindungszeichenfolgen und Verschlüsselungsschlüsseln, die geschützte Konfiguration in der Konfigurationsdatei einer Webanwendung (z. B. in der Datei Web.config) verwenden. Das Verschlüsseln von Konfigurationsinformationen kann die Sicherheit einer Anwendung verbessern, da ein Angreifer selbst dann noch Probleme beim Zugriff auf vertrauliche Informationen hat, wenn er sich bereits Zugriff zur Konfigurationsdatei verschafft hat.

Eine nicht verschlüsselte Konfigurationsdatei kann z. B. einen Abschnitt mit Verbindungszeichenfolgen enthalten, über die eine Verbindung zu einer Datenbank hergestellt wird:

<configuration>
  <connectionStrings>
    <add name="SampleSqlServer" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" />
   </connectionStrings>
</configuration>

In einer verschlüsselten Konfigurationsdatei werden die Verbindungszeichenfolgenwerte, die die geschützte Konfiguration verwenden, nicht als Klartext angezeigt, sondern verschlüsselt gespeichert:

<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>RXO/zmmy3sR0iOJoF4ooxkFxwelVYpT0riwP2mYpR3FU+r6BPfvsqb384pohivkyNY7Dm4lPgR2bE9F7k6TblLVJFvnQu7p7d/yjnhzgHwWKMqb0M0t0Y8DOwogkDDXFxs1UxIhtknc+2a7UGtGh6Di3N572qxdfmGfQc7ZbwNE=
            </CipherValue>
          </CipherData>
        </EncryptedKey>
      </KeyInfo>
      <CipherData>
        <CipherValue>KMNKBuV9nOid8pUvdNLY5I8R7BaEGncjkwYgshW8ClKjrXSM7zeIRmAy/cTaniu8Rfk92KVkEK83+UlQd+GQ6pycO3eM8DTM5kCyLcEiJa5XUAQv4KITBNBN6fBXsWrGuEyUDWZYm6Eijl8DqRDb11i+StkBLlHPyyhbnCAsXdz5CaqVuG0obEy2xmnGQ6G3Mzr74j4ifxnyvRq7levA2sBR4lhE5M80Cd5yKEJktcPWZYM99TmyO3KYjtmRW/Ws/XO3z9z1b1KohE5Ok/YX1YV0+Uk4/yuZo0Bjk+rErG505YMfRVtxSJ4ee418ZMfp4vOaqzKrSkHPie3zIR7SuVUeYPFZbcV65BKCUlT4EtPLgi8CHu8bMBQkdWxOnQEIBeY+TerAee/SiBCrA8M/n9bpLlRJkUb+URiGLoaj+XHym//fmCclAcveKlba6vKrcbqhEjsnY2F522yaTHcc1+wXUWqif7rSIPhc0+MT1hB1SZjd8dmPgtZUyzcL51DoChy+hZ4vLzE=
        </CipherValue>
      </CipherData>
    </EncryptedData>
  </connectionStrings>

Beim Anfordern einer Seite entschlüsselt .NET Framework die Verbindungszeichenfolgeinformationen und stellt sie der Anwendung zur Verfügung.

Hinweis:

Sie können die geschützte Konfiguration nicht verwenden, um den configProtectedData-Abschnitt einer Konfigurationsdatei zu verschlüsseln. Sie können die geschützte Konfiguration auch nicht verwenden, um Konfigurationsabschnitte ohne Abschnittshandler oder Abschnitte zu verschlüsseln, die Teil der verwalteten Kryptografiekonfiguration sind. In der folgenden Liste werden alle Konfigurationsabschnitte aufgeführt, die nicht mit der geschützten Konfiguration verschlüsselt werden können: processModel, runtime, mscorlib, startup, system.runtime.remoting, configProtectedData, satelliteassemblies, cryptographySettings, cryptoNameMapping und cryptoClasses. Es wird empfohlen, dass Sie die vertraulichen Informationen in diesen Konfigurationsabschnitten aus Sicherheitsgründen mit anderen Mitteln verschlüsseln, z. B. mit der ASP.NET-Konsolenanwendung Set Registry (Aspnet_setreg.exe). Weitere Informationen über die ASP.NET-Konsolenanwendung Set Registry (Aspnet_setreg.exe) finden Sie in der Microsoft Knowledge Base der Microsoft Support-Website.

Sicherheitshinweis:

Verschlüsselte Konfigurationsinformationen werden entschlüsselt, wenn Sie in den Arbeitsspeicher der Anwendung geladen werden. Wenn der für die Anwendung bereitgestellte Speicher gefährdet ist, können auch die vertraulichen Informationen aus den Abschnitten mit geschützter Konfiguration unter Umständen gefährdet sein.

Arbeiten mit der geschützten Konfiguration

Die geschützte Konfiguration wird mit dem ASP.NET-IIS-Registrierungstool (Aspnet_regiis.exe) oder mit den Klassen für die geschützte Konfiguration im System.Configuration-Namespace verwaltet.

Das Aspnet_regiis.exe-Tool (im Ordner %SystemRoot%\Microsoft.NET\Framework\Versionsnummer) bietet Optionen zum Verschlüsseln und Entschlüsseln von Abschnitten der Datei Web.config, zum Erstellen und Löschen von Schlüsselcontainern, zum Exportieren und Importieren von Schlüsselcontainerinformationen und zum Verwalten des Zugriffs auf Schlüsselcontainer.

Das Verschlüsseln und Entschlüsseln des Inhalts der Datei Web.config wird mit mithilfe der ProtectedConfigurationProvider-Klasse durchgeführt. Die folgende Liste beschreibt die geschützten Konfigurationsanbieter in .NET Framework:

Beide Anbieter bieten eine starke Verschlüsselung von Daten. Wenn Sie die gleiche verschlüsselte Konfigurationsdatei auf mehreren Servern verwenden möchten, z. B. in einer Webfarm, dann können Sie nur mit dem RsaProtectedConfigurationProvider die Verschlüsselungsschlüssel zum Verschlüsseln der Daten exportieren und auf einem anderen Server importieren.

In der Datei Web.config der Anwendung können Sie angeben, welchen ProtectedConfigurationProvider Sie verwenden möchten. Sie können aber auch eine der ProtectedConfigurationProvider-Instanzen verwenden, die in der Datei Machine.config konfiguriert sind. Weitere Informationen finden Sie unter Angeben eines geschützten Konfigurationsanbieters.

Nachdem Sie einen Anbieter angegeben haben, können Sie den Inhalt der Datei Web.config für die Anwendung verschlüsseln oder entschlüsseln. Weitere Informationen finden Sie unter Verschlüsseln und Entschlüsseln von Konfigurationsabschnitten.

Hinweis:

Um die maximale Sicherheit einer Anwendung zu gewährleisten, ist es wichtig, dass Sie den Anwendungsserver immer mit den neuesten Sicherheitspatches für Microsoft Windows und für Internetinformationsdienste (IIS) auf dem aktuellsten Stand halten. Gleiches gilt für Patches für Microsoft SQL Server und andere Mitgliedschafts-Datenquellen. Ausführlichere Informationen über bewährte Vorgehensweisen beim Schreiben von sicherem Code und bei der Sicherung von Anwendungen finden Sie in dem Buch "Writing Secure Code" von Michael Howard und David LeBlanc. Auch die Website Microsoft Patterns and Practices stellt auf diesem Gebiet eine vorzügliche Informationsquelle dar.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Verschlüsseln von Konfigurationsinformationen mithilfe der geschützten Konfiguration

Weitere Ressourcen

Verschlüsseln von Konfigurationsinformationen mithilfe der geschützten Konfiguration