ASP.NET ユーティリティを使用して資格情報およびセッション状態の接続文字列を暗号化する方法

文書翻訳 文書翻訳
文書番号: 329290 - 対象製品
重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。バックアップ、復元、および編集方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
256986 Microsoft Windows レジストリの説明
すべて展開する | すべて折りたたむ

目次

概要

この資料では、Aspnet_setreg.exe ユーティリティを使用して、資格情報およびセッション状態の接続文字列を暗号化する方法について手順を追って説明します。Microsoft ASP.NET 1.0 では、以下の操作を行う場合、資格情報をプレーン テキストで構成ファイルに保存する必要があります。
  • ASP.NET ワーカー プロセス ID の変更
  • 偽装 ID の指定
  • セッション状態の接続文字列の指定
「サポート技術情報」 (Microsoft Knowledge Base) の文書番号 329250 の資料に記載されている修正プログラムを適用すると (「関連情報」を参照してください)、以下の構成セクションでプレーン テキストを使用する代わりに、暗号化したデータをレジストリに格納して使用することができます。
  • <identity userName= password= />
  • <processModel userName= password= />
  • <sessionState stateConnectionString= sqlConnectionString= />

はじめに

上記の属性値を暗号化してセキュリティで保護されたレジストリ キーに保存するには、Aspnet_setreg.exe ユーティリティを使用します。資格情報の暗号化には、CRYPTPROTECT_LOCAL_MACHINE フラグを指定した CryptProtectData 関数を使用します。コンピュータにアクセスできるすべてのユーザーが CryptUnprotectData 関数を呼び出せるため、暗号化されたデータは、複雑な随意アクセス制御リスト (DACL) を使用してセキュリティで保護されたレジストリ キーに格納されます。ASP.NET は、構成ファイルの解析時にセキュリティで保護されたレジストリ キーを読み取り、CryptUnprotectData を使用してデータの暗号化を解除します。

Inetinfo.exe は System アカウントで実行され、<processModel /> セクションを読み取ります。ASP.NET ワーカー プロセスのユーザー名とパスワードを格納するレジストリ キーを読み取るには、これらのキーへの読み取りアクセス許可が System アカウントに必要です。

ASP.NET ワーカー プロセス (Aspnet_wp.exe) は <identity /> セクションおよび <sessionState /> セクションを読み取ります。ワーカー プロセスがこれらのレジストリ キーを読み取るには、これらのキーへの読み取りアクセス許可が必要です。コンテンツが UNC (汎用名前付け規則) 共有に格納されている場合、その UNC 共有へのアクセスに使用するアカウントにはこれらのキーへの読み取りアクセス許可が必要です。

Aspnet_setreg.exe によって作成されるレジストリ キーでは、デフォルトで System、Administrator、および Creator Owner アカウントに対してフル コントロールのアクセス許可が付与されます。このレジストリ キーの DACL は、Regedt32.exe を使用して変更できます。このレジストリ キーの読み取りを一般のユーザーに許可しないでください。

IIS の再起動

変更を適用するには、Microsoft インターネット インフォメーション サービス (IIS) を再起動する必要があります。IIS を再起動すると、新しい ASP.NET ワーカー プロセスが起動します。これを行うには、[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。次に [名前] ボックスに iisreset と入力し、[OK] をクリックします。

: 再構成したサーバーがドメイン コントローラである場合、サーバーを再起動する必要があります。

詳細

Aspnet_setreg.exe のダウンロードと実行

下記のファイルは、「Microsoft ダウンロード センター」からダウンロードできます。

元に戻す画像を拡大する
ダウンロード
Aspnet_setreq.exe パッケージ
リリース日 : 2003 年 4 月 11 日

マイクロソフトのサポート ファイルのダウンロード方法を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
119591 オンライン サービスからマイクロソフトのサポート ファイルを入手する方法
マイクロソフトでは、アップロード時点の最新のウイルス検査プログラムを使用して、配布ファイルのウイルス チェックを行っています。配布ファイルはセキュリティで保護されたサーバー上に置かれており、権限のない第三者が無断でファイルを変更できないようになっています。

使用できるコマンド ライン スイッチとその使用方法を表示するには、コマンド ライン スイッチを指定せずにコマンド プロンプトからこのツールを実行します。このツールを C:\Tools\ に展開して保存した場合、コマンド プロンプトから次のコマンドを実行して、使用可能なすべてのスイッチと、そのスイッチに関するヘルプを表示できます。
C:\Tools>aspnet_setreg.exe

暗号化された属性を構成ファイルで使用する

警告 : レジストリ エディタまたは別の方法を使用してレジストリを誤って変更すると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリの変更により発生した問題に関しては、一切責任を負わないものとします。レジストリの変更は、自己の責任において行ってください。

: このツールによって、HKEY_LOCAL_MACHINE のサブツリーにレジストリ キーが作成されます。デフォルトでは、管理者のみがこのサブツリーの下にレジストリ キーを作成できます。レジストリ キーの作成を正常に行うために、管理者としてログオンしてください。
  1. <identity> セクションで使用する userName 属性および password 属性を暗号化します (暗号化は、この資料で説明した他のセクションに関しても実行できます)。これを行うには、コマンド ラインで次のコマンドを入力します。
    c:\Tools>aspnet_setreg.exe -k:SOFTWARE\MY_SECURE_APP\identity -u:"yourdomainname\username" -p:"password"
    このコマンドによって、userName 属性および password 属性が暗号化され、指定した場所にレジストリ キーが作成され、それらのレジストリ キーに属性が格納されます。同時に、Web.config ファイルまたは Machine.config ファイルの編集方法が表示されます。表示に従って構成ファイルを編集すると、ASP.NET がこれらのキーを使用してレジストリの情報を読み取るようになります。

    このコマンドを実行すると、以下のようなメッセージが表示されます (実際のメッセージは英語で表示されます)。
    構成ファイルを編集して、以下の内容を含めてください。

    userName="registry:HKLM\SOFTWARE\MY_SECURE_APP\identity\ASPNET_SETREG,userName"
    password="registry:HKLM\SOFTWARE\MY_SECURE_APP\identity\ASPNET_SETREG,password"

    レジストリ キーの DACL では、System、Administrators および Creator Owner にフル コントロールのアクセス許可が付与されます。

    <identity/> 構成セクションの資格情報、または <sessionState/> 構成セクションの接続文字列を暗号化した場合、プロセス ID にレジストリ キーへの読み取りアクセス許可があることを確認してください。 さらに、UNC 共有のコンテンツにアクセスするように IIS を構成した場合、その共有へのアクセスに使用するアカウントには、レジストリ キーへの読み取りアクセス許可が必要です。 レジストリ キーのアクセス許可の表示や変更には、Regedt32.exe を使用できます。

    レジストリ キーの検出を防止するために、レジストリ サブキーとレジストリ値の名前を変更できます。
  2. 該当する構成ファイルを変更して、これらのレジストリ キーを指定します。これらの値を <identity> で使用する必要がある場合、<identity> セクションを以下のように変更します。
    <identity impersonate="true"
    userName="registry:HKLM\SOFTWARE\MY_SECURE_APP\identity\ASPNET_SETREG,userName"
    password="registry:HKLM\SOFTWARE\MY_SECURE_APP\identity\ASPNET_SETREG,password" />
    					
  3. Aspnet_wp.exe プロセスのアカウントに読み取りアクセス許可を与えます。レジストリ キーへのアクセス許可の変更方法の詳細については、「Regedt32.exe を使用して ASP.NET アカウントにレジストリ キーへのアクセス許可を与える」を参照してください。

Regedt32.exe を使用して ASP.NET アカウントにレジストリ キーへのアクセス許可を与える

警告 : レジストリ エディタまたは別の方法を使用してレジストリを誤って変更すると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリの変更により発生した問題に関しては、一切責任を負わないものとします。レジストリの変更は、自己の責任において行ってください。
  1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。[名前] ボックスに regedt32 と入力し、[OK] をクリックします。
  2. HKEY_LOCAL_MACHINE\SOFTWARE\MY_SECURE_APP\
    サブキーをクリックします。
  3. [セキュリティ] メニューの [アクセス許可] をクリックして [MY_SECURITY_APP のアクセス許可] ダイアログ ボックスを開きます。

    Microsoft Windows XP または Windows Server 2003 の場合は、レジストリ キーを右クリックし、[アクセス許可] をクリックします。
  4. [追加] をクリックします。表示されたダイアログ ボックスで、yourservername\ASPNET (Windows Server 2003 (IIS 6.0) を使用している場合は yourservername\network service) と入力し、[OK] をクリックします。
  5. 追加したアカウントに読み取りアクセス許可を与えます。
  6. レジストリ エディタを閉じます。

関連情報

この資料に記載されている機能を使用するための修正プログラムの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
329250 [FIX] processModel、identity および sessionState の資格情報のセキュリティ保護
Microsoft Windows レジストリの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
256986 Microsoft Windows レジストリの説明
ASP.NET の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
315158 [FIX] ドメイン コントローラでデフォルトの ASPNET アカウントを使用すると ASP.NET が動作しない
317012 ASP.NET のプロセス ID と要求 ID

プロパティ

文書番号: 329290 - 最終更新日: 2007年10月29日 - リビジョン: 8.4
この資料は以下の製品について記述したものです。
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
キーワード:?
kbproductlink kbdownload kbconfig kbfix kbhowtomaster kbsecurity kbstate KB329290
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com