Web ファームの認証のベスト プラクティス

ここでは、Web ファーム全体でのサーバー キーの同期および暗号化キー値の共有の重要性という Web ファームに特有な 2 つの認証に関する問題について説明します。さらに、複数の Web ファームにわたるローカル ユーザーとグループの構成に関するベスト プラクティスについても説明します。

サーバー キーを同期させる

暗号化キーを共有する

複数の Web ファイルにわたるローカル ユーザーとグループの構成に関するベスト プラクティス

サーバー キーを同期させる

Microsoft® Content Management Server (MCMS) は、サイトを参照するユーザーの認証チケットを作成する場合に、暗号化キーとしてサーバー キーを使用します。認証クッキーが継続的に機能するためには、クラスタ内のすべての Web サーバーのサーバー キーは同一である必要があります。サーバー キーが異なっていると、1 つのサーバーに送られたユーザー セッションが別のサーバーにルーティングされるたびに再認証されます。

Managekey アプリケーションを使用すると、クラスタ内の 1 つのコンピュータからサーバー暗号化キーをエクスポートし、クラスタ内の別のサーバーにインポートすることができます。

以下の手順は、ローカル管理者またはシステム管理者が行う必要があります。

Managekey アプリケーションを使用してサーバー キーを同期させるには

  1. MCMS がインストールされているコンピュータで、<インストール ドライブ>:\Program Files\Microsoft Content Management Server\Server\bin に移動し、managekey.exe ファイルをダブルクリックします。
  2. [MCMS Managekey] ダイアログ ボックスで、[キーをエクスポート] をクリックします。
  3. [キーのエクスポート先にするファイルの名前を入力してください] ダイアログ ボックスで、ファイル名を入力するかボックスの一覧から選択し、ファイルの種類をボックスの一覧から選択します。次に、[保存] をクリックします。
  4. クラスタ内の各サーバー上で managekey.exe ファイルを実行し、[キーをインポート] をクリックして、サーバー キーと設定を同期させます。

重要 サーバー キーには機密情報が格納されているため、このファイルをセキュリティで保護する場合は、セキュリティのベスト プラクティスを使用してください。セキュリティのベスト プラクティスの詳細については、https://go.microsoft.com/fwlink/?LinkId=9531 を参照してください。

暗号化キーを共有する

ASP.NET では、データを作成したサーバーからのみデータにアクセスできるように、キーを使用してデータの暗号化やハッシュを行います。要求が Web サーバーのファームに対して送信される複数サーバー環境では、ファーム内の各サーバーが同じコンピュータ キーを使用している必要があります。この構成では、サーバー A とサーバー B が同じ値を暗号化、復号化、またはハッシュできるので、サーバー A 上で作成したデータをサーバー B上で認識して使用すること、およびその逆の処理を行うことができます。Machine Key は、ASP.NET コンピュータ レベルの構成ファイルでデータの暗号化または復号化を行うために使用される設定です。この設定には、 validationKeyvalidation、および decryptionKey という 3 つの XML エントリの属性があります。

validationKey 属性

validation 属性

decryptionKey 属性

validationKey 属性

validationKey 属性は、フォーム ベースの認証クッキーのハッシュ処理スキームなどのデータ評価に使用します。適切な validationKey を持つ ASP.NET ベースのアプリケーションのみがハッシュ データを再計算できるように、この検証キーをハッシュ処理スキームの一部として使用します。既定の設定は自動生成ですが、手動で設定を構成することもできます。有効な値は、40 ~ 128 の 16 進数文字です。

validation 属性

validation 属性は、計算するハッシュ処理スキームの種類を決定するために使用します。有効な値は、MD5、SHA1、または 3DES です。ハッシュは、フォーム ベースの認証クッキーなどと共にクライアントに送信することができます。サーバーは、validationKey 属性、および validation 属性によって決定される適切なアルゴリズムを使用して値を再びハッシュすることで、クッキー内のデータを検証できます。

値が一致する場合、データは有効と見なされます。値が一致しない場合、ハッシュによって表される値は無効と見なされます。validationKey 属性は、データが有効であることを保証します。decryptionKey 属性は、信頼されていない第三者がメッセージのテキストを読み取れないことを保証します。

decryptionKey 属性

decryptionKey 属性は、フォーム ベースの認証クッキーに格納されているデータを暗号化するために使用します。ASP.NET では、この属性の既定値は自動的に生成されますが、この値はサーバー クラスタには適していないため、独自の値を設定する必要があります。有効な値は、16 ~ 48 の 16 進数文字です。Web ファーム内の各サーバーは、このキーに対して同じ値を使用する必要があります。

ASP.NET machine.config ファイルの操作の詳細については、https://go.microsoft.com/fwlink/?LinkId=9599 を参照してください。

複数の Web ファイルにわたるローカル ユーザーとグループの構成に関するベスト プラクティス

複数の Web ファームにわたるローカル ユーザー アカウントを構成する場合は、以下の点に注意する必要があります。

  • ローカル ユーザーとグループは、クラスタ内のすべてのコンピュータに適用されます。"コンピュータ A" に Bob というローカル ユーザーが存在し、Bob が サブスクライバ グループに割り当てられているときに、"コンピュータ B" 上にも Bob というローカル ユーザーが設定されている場合、パスワードが異なっていても Bob は "コンピュータ B" にログオンできます。

  • フォーム ベースで 認証 を行う場合、ASP および MCMS の クッキー はクラスタ間で機能します。しかも、そのユーザーが相手方のクラスタ上に存在しなくてもかまいません。この理由は、認証トークンにユーザーのアクセス 権限 とユーザー ID の両方が含まれているためです。

    クラスタ全体にわたるゲスト ユーザーを構成する状況においてドメイン コントローラを使用しない場合は、<"localcomputer\BOB"> となるようにゲスト ユーザーを設定し、すべてのサーバー上に <BOB> が存在するようにします。

関連項目

推奨される認証の構成

https://msdn.microsoft.com/ja-jp/library/cc419853(v=msdn.10)