FPSE サイトを WebDAV に移行する方法

作成者 : Robert McMurray
発行日 : 2008 年 2 月 18 日 (作業者 : robmcm(英語))
更新日 : 2008 年 3 月 14 日 (作業者 : robmcm(英語))

はじめに

Microsoft は、Windows Server® 2008 のインターネット インフォメーション サービス 7.0 (IIS 7.0) 用に完全に書き換えられた、新しい WebDAV 拡張モジュールを作成しました。この新しい WebDAV 拡張モジュールには多くの新機能が組み込まれており、Web 作成者にはコンテンツの発行がしやすくなる環境を、Web 管理者にはより優れたセキュリティおよび構成オプションを提供します。

Expression Web Designer など、Microsoft の一部の新しい Web オーサリング ツールには、WebDAV 対応のサイトで作業するためのサポートが組み込まれていますが、その他の Web オーサリング ツールでは発行に FrontPage Server Extensions (FPSE) を使用します。また、Windows Vista および Windows Server 2008 には優れた WebDAV リダイレクターが追加され、WebDAV モジュールを使用するように構成された Web サイトにドライブ文字をマップすることが可能になりました。これにより、FrontPage 2003 や Visual Studio などの WebDAV サポートが組み込まれていない Web オーサリング ツールからでも、WebDAV 対応の Web サイトを利用することができます。

このドキュメントでは、IIS 7.0 上の Web サイトを FrontPage Server Extensions から WebDAV に移行し、WebDAV 以外の要求から FPSE メタデータを保護するように要求のフィルタリング設定を構成する方法について説明します。

このチュートリアルの内容

  • FPSE と WebDAV の簡単な説明
  • FPSE から WebDAV へのサイトの移行
  • まとめ

前提条件

この記事の手順を完了するには、次の項目を満たしている必要があります。

  • サーバーに IIS 7.0 がインストールされ、以下が構成されている必要があります。
    • IIS 7.0 のインストールで作成される既定の Web サイトがまだ存在する。
    • 要求のフィルタリングの役割サービスがインストールされている。
  • 新しい WebDAV 拡張モジュールがインストールされている必要があります。新しい WebDAV モジュールのインストールについては、次のドキュメントを参照してください。

: このドキュメントの手順は、完全な管理アクセス許可を使用して実行する必要があります。そのためには、次のいずれかの方法を使用することをお勧めします。

  • ローカルの "administrator" アカウントを使用してコンピューターにログインします。
  • ローカルの "administrator" アカウント以外の管理アクセス許可を持つアカウントを使用してログインする場合は、IIS マネージャーおよびすべてのコマンド プロンプト セッションを "管理者として実行" オプションを使用して開きます。

Windows Server 2008 では、ユーザー アカウント制御 (UAC) セキュリティ コンポーネントにより、IIS 7.0 の構成設定への管理者としてのアクセスが制限されるため、上記の条件が必要となります。UAC の詳細については、次のドキュメントを参照してください。

FPSE と WebDAV の簡単な説明

FrontPage Server Extensions が当初の概念から優れていた点の 1 つは、その "ビジョン" でした。FrontPage 開発チームが、異種サーバー間でクライアントに依存せずにコンテンツを発行する方法について最初に考えたとき、WebDAV のようなテクノロジはまだ知られていませんでした。FPSE をインストールし、FrontPage クライアントを使用することによって、Windows と UNIX の 2 つのシステムを同等な機能として扱うことができるようになり、Windows Web サーバーから UNIX Web サーバーに (またはその逆に) にシームレスにコンテンツを発行できるようになりました。最初、FPSE は CGI (Common Gateway Interface) を使用して実装されましたが、その後 ISAPI を使用して IIS に実装されました。

Ee175751.How to migrate fig1(ja-jp,TechNet.10).jpg

FrontPage および FPSE では、発行機能に加えて、"ボット" という愛称で呼ばれるものを通じてさまざまな追加機能が提供されました。これらのボットは、保存時のボットと参照時のボットの 2 つのカテゴリに分類されていました。保存時のボットは、作成時に Web ページに追加でき、挿入コンテンツ、目次などのコンテンツを自動生成する機能です。参照時のボットは、フォームの結果の処理など、一般的な CGI ベースの機能を置き換えるように設計されていました。これらは Web 開発者に多数の機能を提供する一方で、Microsoft 独自の技術であったため業界での採用は限られていました。

この数年間で Microsoft の Web 作成ツールはボットから離れ、保存時のボットは多くが他の機能に、参照時のボットはほとんどが ASP.NET や PHP アプリケーションなどの他の動的な機能に、それぞれ置き換えられています。これにより、FPSE が提供する機能で残されたものはコンテンツの発行となります。しかし、2006 年の 7 月に Microsoft Office XP のメインストリーム サポートが終了し (Office 2000 は既にメインストリーム サポートが終了)、FPSE は個別ダウンロードとしては提供されなくなりました。FPSE は Windows Server® 2003 のプレインストールされた Windows コンポーネントとして引き続きサポートされており使用可能です。また、Microsoft と Ready-to-Run Software (英語) は最近、Windows Server 2008 および Windows Vista 用の FPSE (英語) のバージョンをリリースしました。ただし、Microsoft の Web オーサリング ツールは、発行プロトコルとして FPSE を選択しないようになっており、ここで WebDAV が登場します。

WebDAV は Web Distributed Authoring and Versioning (Web 分散オーサリングとバージョン管理) の短縮形です。これは HTTP に対するオープンスタンダードの拡張機能で、FPSE などの CGI ベースまたは ISAPI ベースのプロトコル拡張を使用せずにインターネットベースの Web 発行を行うための機能を追加します。WebDAV が使用されるようになって 10 年たち、業界での採用は着実に拡大しています。Windows では、ユーザーがドライブを WebDAV 対応の Web サイトにマップできる、優れた組み込みの WebDAV リダイレクターが提供されるようになりました。これにより、インターネットをローカル ネットワークの延長に変え、異種サーバー間でのコンテンツのシームレスな発行を実現できます。

FPSE から WebDAV へのサイトの移行

FPSE Web サイトを WebDAV に移行する際には、通常の HTTP アクセスからセキュリティで保護する必要があるフォルダーがいくつかあります。FPSE ベースの Web サイトにあるすべてのファイルおよびフォルダーの詳細については、Microsoft の IIS.NET Web サイトの「Upgrade issues with FrontPage Server Extensions」を参照してください。ここでは、後で要求のフィルタリング規則を作成するために、いくつかの関連する FPSE フォルダーについて説明します。

フォルダー 説明
_fpclass 一般的に利用可能な FrontPage コードが含まれています。セキュリティで保護する必要があります。
_private FrontPage Server Extensions では、このフォルダーに機密データのファイルが保持されることが多いため、参照されないようにセキュリティで保護する必要があります。
_vti_bin これは FrontPage Server Extensions の実行可能ファイルの仮想ディレクトリです。このパスは実行可能ファイルが機能できるように構成されており、サイトを WebDAV に移行する場合は、参照されないようにセキュリティで保護する必要があります。
_vti_cnf FrontPage Server Extensions では、このフォルダーに機密性の高いメタデータのファイルが保持されるため、削除するか、または参照されないようにセキュリティで保護する必要があります。
_vti_log FrontPage Server Extensions では、このフォルダーに作成者のログが保持されるため、削除するか、または参照されないようにセキュリティで保護する必要があります。
_vti_pvt このフォルダーには、Web サイトのさまざまなメタデータを含む複数のファイルが保持されるため、セキュリティで保護する必要があります。
_vti_txt このフォルダーには、古い FrontPage WAIS 検索のテキスト インデックスおよびカタログが含まれます。より新しいバージョンの FrondPage ではインデックス サーバーのみが使用されていたため、このフォルダーは削除しても安全ですが、少なくとも参照されないようにセキュリティで保護する必要があります。
fpdb FrontPage では、このフォルダーにデータベースが保持されるため、参照されないようにセキュリティで保護する必要があります。

手順 1 : Web サイトからの FPSE の削除

移行プロセスの最初の手順は、コンテンツから FPSE を削除することです。後で追加する要求のフィルタリング規則により FPSE フォルダーへのアクセスは制限されますが、安全のために FPSE を削除しておく必要があります。Web サイトから FPSE を削除するには、2 つの方法があります。

  • アンインストール : _vti_bin 仮想ディレクトリは削除されますが、すべての FPSE メタデータは保持されます (残りの _vti_* フォルダーは保持されます)。
  • 完全アンインストール : _vti_bin 仮想ディレクトリとすべての FPSE メタデータが削除されます (残りの _vti_* フォルダーも削除されます)。

FPSE メタデータを保持するかどうかの選択はユーザー次第です。FrontPage 2003 または Microsoft Expression Web Designer を使用しており、WebDAV リダイレクターを使用してドライブをマップする場合は、メタデータを保持することをお勧めします。Microsoft Expression Web Designer に組み込まれている WebDAV サポートを使用して Web サイトを開く場合は、メタデータは無視されます。

FPSE を削除するには、FPSE の HTML 管理ページを使用する方法とコマンド ラインを使用する方法の 2 つがあります。

HTML 管理ページを使用した FPSE のアンインストール

FPSE の HTML 管理ページを使用して FrontPage 2002 Server Extensions をアンインストールするには、次の手順を実行します。

  1. Windows のコントロール パネルを開きます。
  2. [管理ツール] をダブルクリックします。
  3. [Microsoft SharePoint Administrator] をダブルクリックします。
  4. 仮想サーバーの一覧で、アンインストールする仮想サーバーの横にある [Administration] をクリックします。
  5. [Administration] の下の [Uninstall FrontPage 2002 Server Extensions] をクリックします。
  6. FrontPage 2002 Server Extensions を完全にアンインストール (Web サイトに関するメタデータも含む) する場合は、[Full Uninstall] の横にある [Yes] をクリックします。それ以外の場合は [No] をクリックします。
  7. [Uninstall] をクリックします。

コマンド ラインを使用した FPSE のアンインストール

コマンド ラインを使用して FrontPage 2002 Server Extensions をアンインストールするには、次の手順を実行します。

  1. コマンド プロンプトを開きます。

  2. 次のコマンドを入力します。

    cd "%CommonProgramFiles%\Microsoft Shared\Web Server Extensions\50\bin"
    
  3. 次のいずれかのコマンドを入力します。

    • FPSE を削除してメタデータを保持する場合 :

      owsadm.exe -o uninstall -p lm/w3svc/nnn
      
    • FPSE とメタデータを削除する場合 :

      owsadm.exe -o fulluninstall -p lm/w3svc/nnn
      

: "lm/w3svc/nnn" パスの "nnn" は、IIS マネージャーの [サイト] ノードの下にあるサイト ID です。たとえば、既定の Web サイトは常にサイト 1 となり、以降のサイトは ID の数値が増加していきます。よって、既定の Web サイトから FPSE を削除する場合、**「m/w3svc/1」**と入力します。

FPSE のインストールまたは Web サイトからの削除に関する詳細については、「IIS 7.0 への FrontPage Server Extensions のインストール」を参照してください。

手順 2 : 要求のフィルタリング規則の追加

IIS 7.0 の 2 つの優れた新機能として、UrlScan が組み込みになったような要求のフィルタリングと、IIS 設定の構成に使用するコマンド ライン ツールの AppCmd が挙げられます。IIS のこれらの機能、および WebDAV でそれらを使用する方法の詳細については、次のトピックを参照してください。

これらの情報に留意して、WebDAV アクセス用の要求のフィルタリングを構成します。

FPSE フォルダーに関する拒否 URL シーケンスおよび非表示セグメントの作成

要求のフィルタリイングでは、"App_Code" などの特定のファイル パスに対する Web アクセスが既定でブロックされます。ここでは、非表示パスの一覧に FPSE フォルダーのエントリを追加します。また、この一覧が WebDAV 要求に適用されるかどうかも制御できます。ここでは、すべての非表示パスへの WebDAV アクセスを許可するように要求のフィルタリングを構成します。

  1. 完全な管理者特権でコマンド プロンプトを開き、ディレクトリを Inetsrv フォルダーに変更します。

    cd "%WinDir%\System32\Inetsrv"
    
  2. 次の構文を使用して、denyUrlSequences コレクションにエントリを追加し、FPSE の実行ファイルへのアクセスをブロックします。

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+denyUrlSequences.[sequence='_vti_bin'] /commit:apphost
    
  3. 次の構文を使用して、hiddenSegments コレクションにエントリを追加し、残りの FPSE セグメントへのアクセスをブロックします。

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='_fpclass'] /commit:apphost
    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='_private'] /commit:apphost
    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='_vti_cnf'] /commit:apphost
    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='_vti_log'] /commit:apphost
    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='_vti_pvt'] /commit:apphost
    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='_vti_txt'] /commit:apphost
    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='fpdb'] /commit:apphost
    
  4. 次の構文を使用して、hiddenSegments コレクションの applyToWebDAV 属性を false に設定し、すべての非表示ファイル セグメントに対して WebDAV によってアクセスできるようにします。

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /hiddenSegments.applyToWebDAV:false /commit:apphost
    

上記の手順を完了すると、applicationHost.config ファイルの requestFiltering セクションのコードは、次の例のようになります。

<requestFiltering>
   <hiddenSegments applyToWebDAV="false">
      <add segment="_fpclass" />
      <add segment="_private" />
      <add segment="_vti_cnf" />
      <add segment="_vti_log" />
      <add segment="_vti_pvt" />
      <add segment="_vti_txt" />
      <add segment="fpdb" />
   </hiddenSegments>
   <denyUrlSequences>
      <add sequence="_vti_bin" />
   </denyUrlSequences>
</requestFiltering>

ブロック対象の HTTP 動詞へのアクセスの許可

要求のフィルタリングでは、Web アクセスで許可または拒否される HTTP 動詞の一覧をカスタマイズできます。WebDAV を使用する場合は、すべての HTTP 動詞を許可することが望ましいため、次の手順に従って verbs コレクションの applyToWebDAV 属性を false に設定し、WebDAV がすべてのブロック対象の動詞にアクセスできるようにする必要があります。

  1. 完全な管理者特権でコマンド プロンプトを開き、ディレクトリを InetSrv フォルダーに変更します。

    cd "%WinDir%\System32\InetSrv"
    
  2. 次の構文を使用して、verbs コレクションの applyToWebDAV 属性を false に設定し、WebDAV がすべての HTTP 動詞にアクセスできるようにします。

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.applyToWebDAV:false /commit:appHost
    

上記の手順を完了すると、applicationHost.config ファイルの verbs セクションのコードは、次の例のようになります。

<requestFiltering>
   <verbs applyToWebDAV="false" />
</requestFiltering>

ブロック対象のファイル拡張子へのアクセスの許可

要求のフィルタリングでは、".config"、".asax" などの特定のファイル拡張子の Web アクセスが既定でブロックされます。また、この一覧が WebDAV 要求に適用されるかどうかを制御できます。通常は、Web オーサリング ツールでこれらのファイルを変更できるようにする必要があるため、次の手順に従って fileExtensions コレクションの applyToWebDAV 属性を false に設定し、すべてのブロック対象のファイルの種類に対して WebDAV によってアクセスできるようにする必要があります。

  1. 完全な管理者特権でコマンド プロンプトを開き、ディレクトリを InetSrv フォルダーに変更します。

    cd "%WinDir%\System32\InetSrv"
    
  2. 次の構文を使用して、fileExtensions コレクションの applyToWebDAV 属性を false に設定し、ブロック対象のすべてのファイルの種類に対して WebDAV によってアクセスできるようにします。

    AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.applyToWebDAV:false /commit:apphost
    

上記の手順を完了すると、applicationHost.config ファイルの fileExtensions セクションのコードは、次の例のようになります。

<requestFiltering>
   <fileExtensions applyToWebDAV="false" />
</requestFiltering>

手順 3 : FPSE 設定のクリーンアップ

以降の手順は省略可能です。ここでは、FPSE 管理ツールによって FPSE 関連のフォルダーに対して作成された構成設定を削除します。これらの設定が削除されていないと、FrontPage 2003、Visual Studio などのツールがマップされたドライブを使用して WebDAV リダイレクター経由で Web サイトのメタデータにアクセスを試みた場合に、アクセスできない可能性があります。

: 以下のスクリプトは、FPSE に関連する各フォルダーのすべての設定を削除します。カスタマイズした設定がある場合でも、それらは削除されます。また、このスクリプトを実行する前に、このドキュメントの要求のフィルタリング セクションにある手順を完了していない場合、メタデータ ファイルがインターネット経由で参照可能になってしまいます。

このスクリプトを実行するには、次の手順に従います。

  1. 以下に示す VBscript をコピーし、Windows のメモ帳などのテキスト エディターに貼り付けます。

    : 既定の Web サイト以外のサイトを使用している場合は、strSiteName 変数を変更する必要があります。

  2. ファイルに "CleanFpseSettings.vbs" という名前を付けてデスクトップに保存し、テキスト エディターを閉じます。

  3. Windows の [アクセサリ] メニューにある [コマンド プロンプト] を右クリックし、[管理者として実行] を選択して、管理者としてコマンド プロンプトを開きます。

  4. 次のコマンドを入力して、ディレクトリをデスクトップに変更します。

    cd /d "%USERPROFILE%\Desktop"
    
  5. 次のコマンドを使用して、コードを実行します。

    cscript.exe CleanFpseSettings.vbs
    
  6. コマンド プロンプトを閉じます。

' Declare the name of the site to clean.
Const strSiteName = "Default Web Site"

' Declare the configuration path for the applicationHost.config (AppHost) file.
Const strConfigPath = "MACHINE/WEBROOT/APPHOST"

' Create the Admin Manager object.
Set objAdminManager = WScript.CreateObject( "Microsoft.ApplicationHost.WritableAdminManager" )

' Set the configuration path to AppHost.
objAdminManager.CommitPath = strConfigPath

' Get a configuration object for the AppHost file.
Set objConfigFile = objAdminManager.ConfigManager.GetConfigFile( strConfigPath )

' Get the collection of location elements.
Set objLocations = objConfigFile.Locations

' Loop through the location collection.
For intLocationIndex = 0 To CInt(objLocations.Count)-1
   ' Get an object for an individual location element.
   Set objLocation = objLocations.Item( intLocationIndex )
   ' Make sure that it's for the correct site.
   If LCase(Left(objLocation.Path,Len(strSiteName))) = LCase(strSiteName) Then
      ' Make sure that it's for FPSE location paths.
      If (Right(objLocation.Path,5) = "/fpdb") Or _
         (Right(objLocation.Path,9) = "/_private") Or _
         (Right(objLocation.Path,9) = "/_vti_bin") Or _
         (Right(objLocation.Path,9) = "/_vti_cnf") Or _
         (Right(objLocation.Path,9) = "/_vti_log") Or _
         (Right(objLocation.Path,9) = "/_vti_pvt") Or _
         (Right(objLocation.Path,9) = "/_vti_txt") Or _
         (Right(objLocation.Path,12) = "/_vti_script") Then
             ' Loop through the collection of child elements.
             For intChildLocationIndex = 0 To CInt(objLocation.Count)-1
                 ' Get an object for an individual child element.
                 Set objChildLocation = objLocation.Item(intChildLocationIndex)
                 ' Clear the configuration settings.
                 objChildLocation.Clear
             Next
     End If
   End If
Next

' Commit the changes to the AppHost file.
objAdminManager.CommitChanges

まとめ

このドキュメントでは、以下の手順に従ってサイトを FPSE から WebDAV に移行する方法について説明しました。

  • 手順 1 : Web サイトからの FPSE の削除
    • HTML 管理ページを使用した FPSE のアンインストール
    • コマンド ラインを使用した FPSE のアンインストール
  • 手順 2 : 要求のフィルタリング規則の追加
    • FPSE フォルダーに関する非表示セグメントの作成
    • ブロック対象の HTTP 動詞へのアクセスの許可
    • ブロック対象のファイル拡張子へのアクセスの許可
  • 手順 3 : FPSE 設定のクリーンアップ

詳細情報

WebDAV の使用の詳細については、次の記事を参照してください。

関連コンテンツ

記事