保護された構成の概要
更新 : 2007 年 11 月
Web.config ファイルなどの Web アプリケーションの構成ファイルで保護された構成を使用して、ユーザー名、パスワード、データベース接続文字列、暗号キーなどの機密情報を暗号化できます。構成情報を暗号化すると、攻撃者が構成ファイルへのアクセスに成功した場合にも機密情報へのアクセスが困難になるため、アプリケーションのセキュリティが強化されます。
たとえば、暗号化されていない構成ファイルには、次の例のようにデータベースに接続するための接続文字列を指定するセクションが含まれている可能性があります。
<configuration>
<connectionStrings>
<add name="SampleSqlServer" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" />
</connectionStrings>
</configuration>
保護された構成を使用して接続文字列値を暗号化する構成ファイルは、クリア テキストで接続文字列を表示せずに、次の例のように暗号化された形式で保存します。
<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>
ページが要求されると、.NET Framework は接続文字列情報を復号化して、アプリケーションで使用できる形式にします。
メモ : |
---|
保護された構成を使用して、構成ファイルの configProtectedData セクションを暗号化することはできません。保護された構成を使用して、セクション ハンドラを使用しない構成セクションまたはマネージ暗号化構成の一部になっているセクションを暗号化することはできません。保護された構成を使用して暗号化できない構成セクションは、processModel、runtime、mscorlib、startup、system.runtime.remoting、configProtectedData、satelliteassemblies、cryptographySettings、cryptoNameMapping、および cryptoClasses です。これらの構成セクションの機密情報を保護するには、ASP.NET レジストリ設定コンソール アプリケーション (Aspnet_setreg.exe) ツールなどの他の手段を使用して機密情報を暗号化することをお勧めします。ASP.NET レジストリ設定コンソール アプリケーション (Aspnet_setreg.exe) については、Microsoft サポート Web サイトの Microsoft Knowledge Base 文書の「How to use the ASP.NET utility to encrypt credentials and session state connection strings」を参照してください。 |
セキュリティに関するメモ : |
---|
暗号化された構成情報は、アプリケーションが使用するメモリに読み込まれるときに復号化されます。アプリケーションのメモリが侵害された場合は、保護された構成セクションの機密情報も侵害される可能性があります。 |
保護された構成の操作
保護された構成は、System.Configuration 名前空間で ASP.NET IIS 登録ツール (Aspnet_regiis.exe) または保護された構成のクラスを使用して管理します。
%SystemRoot%\Microsoft.NET\Framework\versionNumber フォルダにある Aspnet_regiis.exe ツールには、Web.config ファイルのセクションの暗号化と復号化、キー コンテナの作成と削除、キー コンテナ情報のエクスポートとインポート、キー コンテナへのアクセスの管理のためのオプションが含まれます。
Web.config ファイルの内容の暗号化と復号化は、ProtectedConfigurationProvider クラスを使用して実行します。.NET Framework に含まれる保護された構成プロバイダの一覧を次に示します。
DpapiProtectedConfigurationProvider。Windows データ保護 API (DPAPI: Data Protection API) を使用してデータを暗号化および復号化します。
RsaProtectedConfigurationProvider。RSA 暗号化アルゴリズムを使用してデータを暗号化および復号化します。
両方のプロバイダは強力なデータ暗号化機能を提供しますが、Web ファームなどの複数のサーバーで同じ暗号化された構成ファイルを使用する場合、データを暗号化するために使用した暗号キーをエクスポートして別のサーバーにインポートできるのは RsaProtectedConfigurationProvider だけです。
使用する ProtectedConfigurationProvider は、アプリケーションの Web.config ファイルで構成するか、または Machine.config ファイルで構成されている ProtectedConfigurationProvider インスタンスの 1 つを使用して指定します。詳細については、「保護された構成プロバイダの指定」を参照してください。
使用するプロバイダを指定したら、アプリケーションの Web.config ファイルの内容を暗号化または復号化できます。詳細については、「構成セクションの暗号化と複合化」を参照してください。
メモ : |
---|
Web アプリケーションを保護するための推奨方法として、Microsoft Windows や Microsoft Internet Information Services (IIS) の最新のセキュリティ更新プログラムと共に Microsoft SQL Server やその他のメンバシップ データ ソースの更新プログラムを使用して、アプリケーション サーバーを常に最新の状態に維持することが大切です。安全なコードの記述とアプリケーションのセキュリティ保護のための推奨方法の詳細については、Michael Howard と David LeBlanc 共著『Writing Secure Code』、および「Microsoft Patterns and Practices」のガイダンスを参照してください。 |
参照
処理手順
チュートリアル : 保護された構成を使用した構成情報の暗号化