Oracle HTTP Server 管理者ガイド
10g(10.1.3.1.0) B31847-01 |
|
この章では、オーサリングとバージョニングの概念と、mod_oradav
モジュールの構成および使用方法について説明します。mod_oradav
モジュールにより、OraDAVを使用してWebブラウザやWebDAVクライアントからOracle Databaseの内容にアクセスできます。
内容は、次のとおりです。
OraDAVという用語は、mod_oradav
モジュールを介して使用できる機能を指します。mod_oradav
モジュールは、WebDAV仕様の実装であるmod_dav
実装の拡張版です。この項では、次の概念について説明します。
WebDAVは、分散オーサリングおよびバージョニングをサポートするHTTP 1.1のプロトコル拡張機能です。WebDAVを使用すると、インターネットは透過的な読取りおよび書込み手段となり、その内容をチェックアウトおよび編集し、URLアドレスにチェックインできます。
WebDAVにより、Webサイト作成者間でのコラボレーションが可能になります。また、WebDAVは、任意の(Webサイトに限定されない)コンテンツ階層への汎用読取り/書込みアクセス・プロトコルとしても機能します。WebDAVを使用すると、コンテンツをインターネット・サービス・プロバイダ(ISP)から提供されたURLに保存できます。コンテンツには各種デバイスからアクセスでき、必要に応じて変更可能です。
WebDAVは、最初はInternet Engineering Task Force(IETF)規格とされていました。WebDAVの最初のフェーズはRFC 2518で指定され、情報階層の管理と、WebDAVドキュメントのロック、読取り、書込みおよびプロパティの問合せの基本形を提供します。WebDAVについては現在も作業が進行中であり、Web経由のコンテンツ管理に関連する問題の解決に重点が置かれています。これには、WebDAVの認証と認可(アクセス制御)、バージョニング、バインディング、順序付けられたコレクションおよび問合せ(DAV拡張検索およびロケーティング)が含まれます。
Microsoft Webフォルダは、Windows 2000以降のバージョン(Internet Explorer 5.0以上を使用)でのWebDAVクライアントです。Office 2000およびOffice XPアプリケーションとIISサーバーではWebDAVがサポートされています。つまり、Microsoft Officeアプリケーションを起動してURLを指定し、コンテンツを編集して元のURLに保存できるということです。また、WebDAVにはJavaクライアント(DAV Explorerなど)、オープン・ソース・ツール(CadaverやSitecopyなど)およびApple GUIツール(Goliath)などもあります。
mod_dav
は、WebDAV仕様のApache Software Foundation固有の実装です。
mod_oradav
は、mod_dav
の実装の拡張版であり、Oracle HTTP Serverと統合されているOracleモジュール(C言語で記述されたOCIアプリケーション)です。このモジュールでは、ローカル・ファイルおよびOracle Databaseに対する読取り/書込みアクティビティが実行されます。Oracle Databaseには、mod_oradav
がWebDAVアクティビティをデータベース・アクティビティにマップするためにコールするOraDAVドライバ(ストアド・プロシージャ・パッケージ)が必要です。基本的に、WebDAVクライアントはmod_oradav
を使用してOracle Databaseに接続し、内容の読取りと書込み、および各種スキーマ内のドキュメントの問合せとロックを実行できます。
Oracle HTTP Serverの標準ディレクティブを使用して、Oracle Databaseを使用するようにmod_oradav
を構成できます。mod_oradav
では、コンテンツ管理タスクを実行するために、他のモジュール・コード(mime_magicなど)をすぐに活用できます。ほとんどのWebDAV処理アクティビティでは、コンテンツ・プロバイダとの間でコンテンツをストリーム化する必要があり、mod_oradav
ではOracle HTTP Server内でOCIストリーム・ロジックを直接使用します。
OraDAVとは、Oracle Application Serverユーザーがmod_oradav
を介して使用できる機能セット全体を指します。OraDAVには次の固有の用語があります。
OraDAVは、Oracle HTTP Server内のmod_oradav
が、1つ以上のOracle Databaseの1つ以上のスキーマのコンテンツへのアクセスを提供するアーキテクチャに合せて使用されます。
図8-1は、単純なアーキテクチャを示しています。
図8-1は、Microsoft WebフォルダなどのWebDAVクライアントが、Oracle HTTP ServerにHTTPリクエストを渡すところを示しています。リクエストが(Oracle Databaseではなく)ファイル・システムに格納されているコンテンツに対するものである場合、mod_oradav
でアクセスが処理されます。リクエストがOracle Databaseに格納されているコンテンツに対するものである場合、OraDAV APIでアクセスが処理されます。
OraDAV APIには、ファイル・システムにおけるmod_oradav
の実行と同じ機能があります。OraDAV APIでは、次のHTTPメソッドがサポートされます。
OraDAV APIでは、共有ロックと排他ロック、基本的なDAVプロパティの取得、サーバー定義のライブ・プロパティまたはクライアント定義のデッド・プロパティの定義と取得がサポートされます。COPY
、MOVE
、DELETE
など、集合ベースの演算全体を、OraDAVドライバの単一コールで実行できます。
OraDAVを直接使用する主なユーザーは、Oracle HTTP Server管理者とOracle Databaseのデータベース管理者です。エンド・ユーザーは、WebブラウザまたはWebDAVクライアント・ツールを通じて、OraDAVと間接的に対話するのみです。
OraDAVの管理には、Web管理者およびデータベース管理者としてのタスクが含まれます。
OraDAVの使用には、次のアクティビティを任意に組み合せることができます。
PROPPATCH
ディレクティブを使用してドキュメントにプロパティを割り当て、PROPFIND
ディレクティブを使用してプロパティを取得します。
OraDAVは、主に、初期化中にOracle HTTP Serverインスタンスによって使用されるhttpd.conf
ファイル内のパラメータを使用して構成します。構成パラメータには、すべてのOraDAVドライバに必須のものと、ドライバ固有のものがあります。
Oracle Application Serverをインストールすると、OraDAVのすべての必須パラメータは、WebブラウザやWebDAVクライアントからOracle Databaseの内容にアクセスできるように設計された値に設定されます。デフォルト値が要件を満たしていない場合は、後で必須パラメータの値を変更し、オプションのパラメータの値を指定できます。httpd.conf
でOraDAV構成のサポートに使用されるパラメータは、DAV
とDAVParam
で始まります。これらのパラメータは<Location
>コンテナ・ディレクティブで指定され、次の機能を提供します。
DAV
パラメータは、URLの位置でDAVが使用可能であることを示します。DAV
キーワードの後に、次のいずれかの値を指定します。
On
: この値は、mod_oradav
がコンテンツにローカル・ファイル・システムを使用することを示します。
Oracle
: この値は、mod_oradav
がすべてのコンテンツにOraDAVを使用することを示します。
DAVParam
パラメータは、名前/値ペアの指定に使用します。必須のペアは、Oracle HTTP ServerからOracle Databaseに接続できるようにするペアです。これには、名前のOraService
、OraUser
およびOraPassword
またはOraAltPassword
が含まれます。
例8-1に、ローカル・システム上のファイルにアクセスするための構成を示します。この例では、Webサーバーのドキュメント・ディレクトリ(デフォルトではhtdocs
)のサブディレクトリmyfiles
と階層内のmyfiles
のすべてのサブディレクトリを、DAVが使用可能なディレクトリとして指定します。myfiles
または階層内のすべてのサブディレクトリには、シンボリック・リンクを定義しないように注意してください。
<Location /myfiles> DAV On </Location>
例8-2に、Oracle Application Server Portalを介してコンテンツにアクセスするための構成を示します。OracleAS PortalをOracle Application Serverにインストールした後で、OracleAS Portalスキーマを指す<Location
>コンテナ・ディレクティブをOracle HTTP Server構成ファイルに移入する必要があります。この例では、ロケーション/portal
がOraDAV対応になり、(適切な値が移入されると)OracleAS Portalスキーマに接続されるので、ユーザーはWebDAVクライアントを使用してOracleAS Portalデータにアクセスできます。
<Location /portal> DAV Oracle DAVParam ORACONNECT dbhost:dbport:dbsid DAVParam ORAUSER portal_schema DAVParam ORAPASSWORD portal_schema_password DAVParam ORAPACKAGENAME portal_schema.wwdav_api_driver </Location>
各OraDAVドライバでは、DAVParam
メカニズムを使用して、ドライバ固有の設定を作成できます。すべてのDAVParam
の名前/値ペアは、OraDAVドライバに渡されます。OraDAVパラメータのみでなく、DAVDepthInfinityなどの特定のDAVパラメータを指定するかどうかも考慮する必要があります。
表8-1に、各OraDAVパラメータ、そのパラメータが必須であるかどうか、およびそのデフォルト値を示します。ORAGetSourceはファイル・システムへのアクセスにのみ適用され、他のパラメータはOracleAS Portalドライバやその他のシステム(ファイル・システム以外)へのアクセスにのみ適用されます。
名前 | 必須/オプション | デフォルト値 |
---|---|---|
オプション |
|
|
ORAPasswordまたはORAAltPasswordのいずれか一方を指定します。両方は指定できません。 |
(なし) |
|
オプション |
(なし) |
|
オプション |
(なし) |
|
オプション |
25 |
|
オプション。ORACacheTotalSizeを使用する場合は、ORACacheDirectoryが必須です。それ以外の場合は、このパラメータを指定しないでください。 |
(なし) |
|
ORAService、ORAConnectまたはORAConnectSNを指定します。1つのみ指定できます。 |
(なし) |
|
ORAService、ORAConnectまたはORAConnectSNを指定します。1つのみ指定できます。 |
(なし) |
|
必須 |
(なし) |
|
オプション |
|
|
オプション |
(なし) |
|
オプション |
0(秒) |
|
オプション |
|
|
ORAPasswordまたはORAAltPasswordのいずれか一方を指定します。両方は指定できません。 |
(なし) |
|
オプション |
(なし) |
|
ORAService、ORAConnectまたはORAConnectSNを指定します。1つのみ指定できます。 |
(なし) |
|
オプション |
(なし) |
|
オプション |
0 |
|
必須 |
(なし) |
OraDAVを使用できないOracle HTTP Server環境では、mod_dav
自体はHTTPのGET
リクエストにレスポンスを返しません。かわりに、GET
リクエストには通常のOracle HTTP Serverのメカニズムを使用してレスポンスが返されます。ただし、すべてのコンテンツがOracle Databaseにある場合、GET
リクエストへのレスポンスには通常のOracle HTTP Serverメカニズムを使用できないため、OraDAVがGET
リクエストにレスポンスを返す必要があります。
ORAAllowIndexDetails
パラメータは、DAVコレクションに対するGET
リクエストが実行され、そのコレクション(ディレクトリ)内でindex.html
ファイルが見つからない場合に、OraDAVがレスポンスを返す方法を制御します。典型的なOracle HTTP Server環境では、別のモジュールが制御を引き継ぎ、そのコレクション内のリソース(ファイル)の索引を表すクライアントHTMLを自動的に生成してレスポンスを返します。
OraDAVが使用可能なOracle HTTP Serverでは、コレクションに対するGET
リクエストにレスポンスを返すときに、同様のアクションが実行されます。ORAAllowIndexDetails
がTRUE
に設定されている場合、生成される索引にはDescription列(各リソースの詳細情報へのリンク付き)が含まれています。
デフォルト値はFALSE
ですが、この場合、生成される索引にはDescription列は表示されません。また、URLに?details
が使用されている場合は無視され、URLのコンテンツが返されます。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
オプション |
値 |
|
デフォルト |
|
ORAUser
パラメータで指定したユーザーに関連するパスワードを指定しますが、このパスワードはbase-64エンコード文字列です。ORAAltPassword
パラメータでは、パスワードがエンコードされない平文としてパラメータに表示されることを希望しない場合に、代替パスワードを提供します。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
ORAPasswordを指定しない場合は必須 |
値 |
(文字列) |
デフォルト |
(なし) |
ORAPasswordパラメータを指定しないと、パスワードにはORAAltPassword
パラメータが使用されます。
ディスク・キャッシュ操作に使用するディレクトリを指定します。このパラメータを指定しないと、OraDAV操作のディスク・キャッシュは実行されません。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
オプション |
値 |
(文字列) |
デフォルト |
(なし) |
指定されたディレクトリが存在し、Oracle HTTP Serverによって読取り可能である必要があります。ただし、通常のGET
リクエストでは表示できないようにする必要があります。(このディレクトリが通常のGET
リクエストで表示できると、キャッシュ・ディレクトリにアクセスするユーザーがセキュリティ対策を迂回する可能性があります。)
ほとんどのUNIXロック・メカニズムでは警告が発せられるため、NFSマウント済ディレクトリは指定しないでください。このディレクトリは、最終アクセス時刻がサポートされているファイル・システム上に置く必要があります。Windowsシステムの場合、これはFATではなくNTFSでフォーマットされたパーティションを使用することを意味します。
キャッシュ・ディレクトリをキャッシュ以外の目的に使用しないでください。キャッシュ・ディレクトリ内のファイルは、削除されることがあります。
ORACacheDirectory
パラメータを使用する場合は、ORACacheTotalSizeパラメータも使用する必要があります。
ディスク・キャッシュ操作用のキャッシュ可能な最大リソース・サイズを指定します。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
オプション |
値 |
(整数、オプションの単位文字列) |
デフォルト |
(なし) |
例8-3に、ORACacheMaxResourceSizeの設定方法を示します。
DAVParam ORACacheMaxResourceSize 1024KB
例8-3の設定では、OraDAVは1MBを超えるリソースをキャッシュできません。これにより、Web管理者は大きなメディア・ファイルによってキャッシュが独占されるのを防ぐことができます。ただし、キャッシュするファイルが大きな場合のほうが、パフォーマンスは向上します。
整数の後にKB(キロバイト)またはMB(メガバイト)を指定できます。整数の後に単位を指定しない場合、デフォルトの単位はバイトです。
キャッシュがいっぱいになった時点で解放するディスク・キャッシュ使用率を指定します。ディスク・キャッシュがいっぱいになると、キャッシュのディスク使用率がORACachePrunePercent
の値に減少するまで、キャッシュ内の最も古いファイルから順に削除(プルーニング)されます。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
オプション |
値 |
整数(1〜100) |
デフォルト |
25 |
ディスク・キャッシュ操作に使用するキャッシュのサイズを指定します。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
ORACacheDirectoryを指定しない場合はオプション |
値 |
(整数、オプションの単位文字列GBまたはMB)最大値は4GBです。 |
デフォルト |
(なし) |
例8-4に示すように、整数の後にMB(メガバイト)またはGB(ギガバイト)を指定できます。整数の後に単位を指定しない場合、デフォルトの単位はバイトです。
DAVParam ORACacheTotalSize 1GB
ORACacheDirectoryパラメータを使用する場合は、ORACacheTotalSize
パラメータも使用する必要があります。
ORACacheTotalSize
値は、Webサイトの重要な部分、または最もアクセス頻度の高い全ファイルに25%以上の領域を追加したもののうち、どちらかを十分に保持できる大きさにする必要があります。値が小さすぎる場合、BLOBデータをファイル・システムに書き込み、新しいキャッシュ・リクエストを受信するためにファイルをただちに削除するという追加の処理が発生するため、全体のパフォーマンスが低下します。
実際にディスク・キャッシュに使用される領域は、ORACacheTotalSize
値を超えて最大ORACacheMaxResourceSize値に達する場合があります。また、ファイル・システムのブロック・サイズが原因となって、キャッシュが使用するディスク領域がORACacheTotalSize
値を超えることのないよう注意してください。
接続先のOracle Databaseを指定します。値は次の形式で指定する必要があります。
database-host:database-port:database-sid
例8-5に、ORAConnect
パラメータの使用方法を示します。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
ORAServiceまたはORAConnectSNを指定しない場合は必須 |
値 |
(文字列) |
デフォルト |
(なし) |
DAVParam ORAConnect my-pc.acme.com:1521:mysid
ORAConnect
パラメータを使用すると、tnsnames.ora
ファイルに含まれていないデータベースに接続できます。
ORAConnect
、ORAServiceまたはORAConnectSNのいずれかを指定します。1つのみ指定できます。
接続先のOracle Databaseを指定します。値は次の形式で指定する必要があります。
database-host:database-port:database-service-name
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
ORAServiceまたはORAConnectを指定しない場合は必須 |
値 |
(文字列) |
デフォルト |
(なし) |
ORAConnectSN
パラメータを使用すると、例8-6に示すように、tnsnames.ora
ファイルに含まれていないデータベースに接続できます。
DAVParam ORAConnectSN my-pc.acme.com:1521:myservice
ORAService、ORAConnectまたはORAConnectSN
のいずれかを指定します。1つのみ指定できます。
ORAUserパラメータで指定されたスキーマ内には、コンテナが存在する必要があります。ORAContainerName
パラメータでは、そのロケーションで使用するコンテナの名前を指定します。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
必須 |
値 |
(最大20文字の任意の有効な文字列) |
デフォルト |
(なし) |
PL/SQLパッケージで例外が発生した場合、Oracle HTTP Serverログ・ファイルerror_logにPS/SQLスタック・ダンプを書き込みます。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
オプション |
値 |
|
デフォルト |
|
ファイル・システムへのアクセスにのみ適用されます。このパラメータでは、1つ以上のファイル拡張子を指定して、実行するのではなく編集のために開くファイルのタイプを識別します。ファイル拡張子にはピリオド(.)を含めます。また、カンマを使用してファイル拡張子を区切ります。次に例を示します。
".htm, .html, .jsp1, .jsp2"
カテゴリ | 値 |
---|---|
適用対象 |
ファイル・システムへのアクセス |
必須/オプション |
オプション |
値 |
(二重引用符で囲まれた文字列) |
デフォルト |
(なし) |
ORAGetSource
パラメータを使用すると、通常はGET
操作の結果として実行されるファイルを編集のために開くことができます。
待機時間の長いネットワーク環境で、Microsoft Officeにおけるロックのリフレッシュを調整するために指定します。Microsoft Officeは、ロックが期限切れになる直前にDAVリソースのロックをリフレッシュしようとします。ただし、Microsoft OfficeクライアントとDAVサーバー間にネットワークの輻輳があると、リフレッシュ・リクエストの着信が遅れ、ロックが期限切れになった後に着信することがあります。
OraDAVは、期限切れになったリソースのロックを定期的に調べて削除します。ORALockExpirationPad
パラメータを使用すると、ロックが期限切れになってから削除されるまでの期間を追加(パッド)できます。たとえば、ORALockExpirationPad
を120に設定すると、期限切れ時刻から2分以上経過するまで、OraDAVではロックは削除されません。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
オプション |
値 |
(秒数) |
デフォルト |
0 |
OraDAVコマンドの発行時にコールするOraDAVドライバの実装を識別します。デフォルトはOraDAVドライバ、つまりORDSYS.DAV_API_DRIVER
パッケージです。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
必須 |
値 |
(文字列) |
デフォルト |
|
ORAUser
パラメータで指定したユーザーに関連するパスワードを指定します。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
ORAAltPasswordを指定しない場合は必須 |
値 |
(文字列) |
デフォルト |
(なし) |
ORAPassword
パラメータでパスワードをエンコードされていない文字列で指定しない場合は、ORAAltPasswordパラメータを使用して、BASE64エンコード文字列でパスワードを指定できます。
データベース・リポジトリ内のルートとして使用されるディレクトリを指定します。このパラメータを指定した場合、WebDAVクライアントはこのディレクトリをルートとして認識し、このディレクトリに至るリポジトリ・ディレクトリは認識できません。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
オプション |
値 |
(文字列) |
デフォルト |
(なし) |
例8-7では、データベース・リポジトリにディレクトリ/first/second/third/fourth
が含まれていて、ORARootPrefix
が次のように定義されているとします(値には後続のスラッシュを含めません)。
DAVParam ORARootPrefix /first/second
この場合、WebDAVクライアントは/third
ディレクトリを認識し、/third/fourth
ディレクトリにナビゲートできますが、/first
または/first/second
ディレクトリは認識もナビゲートもできません。
接続先のOracle Databaseを指定します。例8-8に示すように、tnsnames.ora
ファイル内のSID値と一致する値を指定する必要があります。
DAVParam ORAService mydbsid.mydomain.com
tnsnames.ora
ファイルに含まれていないデータベースに接続するには、ORAConnectパラメータを使用します。ORAService
、ORAConnectまたはORAConnectSNのいずれかを指定します。1つのみ指定できます。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
ORAConnectまたはORAConnectSNを指定しない場合は必須 |
値 |
( |
デフォルト |
(なし) |
デバッグ用にApacheエラー・ログに記録するイベントのタイプを指定します。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
オプション |
値 |
次の文字列の1つを使用します。 |
デフォルト |
(なし) |
Apacheエラー・ログに記録するデバッグのレベル(トレース文)を指定します。最低レベルは0(デフォルト)で、トレースを実行しません。最高レベルは4で、最大限のトレースを実行します。
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
オプション |
値 |
整数(0〜4) |
デフォルト |
0 |
大きい数値を設定すると、より多くの情報がエラー・ログ・ファイルに書き込まれます。
ORAService
パラメータで指定した、サービスへの接続時に使用するデータベース・ユーザー(スキーマ)を指定します。
このユーザーには、次の権限が必要です。
CONNECT
RESOURCE
CREATE TABLESPACE
DROP TABLESPACE
CREATE ANY TRIGGER
カテゴリ | 値 |
---|---|
適用対象 |
Portalドライバとその他のシステム(ファイル・システム以外)へのアクセス |
必須/オプション |
必須 |
値 |
(文字列) |
デフォルト |
(なし) |
この項では、httpd.conf
ファイル内で設定できる次のDAVのディレクティブについて説明します。
この項の一部の資料は、Greg Stein(gstein@lyra.org
)著の資料を引用または応用しています。この資料は次のURLで入手できます。
http://www.webdav.org/mod_dav/install.html
Depth:
Infinity
ヘッダー付きのPROPFIND
リクエストは、サーバーに大きな負荷をかける場合があります。このタイプのリクエストはリポジトリ全体を移動し、見つかった各リソースに関する情報を返します。mod_dav
はレスポンスをメモリー内で作成するため、このタイプのリクエストは大量のメモリーを使用する可能性があります。(メモリーはリクエストの終了時に解放されますが、ピーク時のメモリー使用量が高くなる可能性があります。)
このタイプのリクエストを防ぐために、DAVDepthInfinity
ディレクティブが用意されています。これは値がonまたはoffの単純なディレクティブであり、サーバー、ディレクトリまたはロケーションごとに使用できます。値がOff
に設定されている場合、このようなリクエストは許可されません。値がOn
の場合(つまり、Depth: Infinityヘッダー付きのリクエストを許可する場合)、DoS攻撃を受けやすくなります。ただし、sitecopy
など、一部のクライアントでは、DAVDepthInfinity
値をOn
にする必要があります。
DAVロック・データベースを作成します。DAVロック・データベースを作成するには、構成ファイルのトップレベル(つまり、<Directory>
または<Location>
コンテナ・ディレクティブの外側)にDAVLockDB
ディレクティブを追加します。DAVLockDB
ディレクティブでは、mod_dav
で作成するファイルの名前を指定する必要があります。ファイルの作成先として既存のディレクトリを指定し、Oracle HTTP Serverプロセスにそのディレクトリへの書込み権限を付与する必要があります。
例8-9では、DAVロック・データベースはORACLE_HOME
/Apache/var
ディレクトリに格納されます。このディレクトリはOracle HTTP Serverプロセスによる書込みが可能である必要があります。mod_dav
でファイルが作成される際に、DAVLock
と名前が付けられます。(実際には、mod_dav
では、このファイル名と拡張子を使用して1つ以上のファイルが作成されます。)
DAVLockDB ORACLE_HOME/Apache/var/DAVLock
DAVLockDB
ディレクティブは、任意のコンテナの外側または<VirtualHost>
指定の内側に指定できます。指定する必要があるのは1箇所のみです。ファイル拡張子は指定しないでください。
ロックの最小存続期間を秒単位で指定します。クライアントがリクエストするロックのタイムアウトがDAVMinTimeout
値より短い場合は、かわりにDAVMinTimeout
値が使用されて返されます。たとえば、MicrosoftのWebフォルダのロック・タイムアウトはデフォルトで2分(120秒)です。これを10分(600秒)に指定すると、ネットワーク通信量が減り、クライアントがネットワーク待機時間のためにロックを失う可能性が低くなります。
DAVMinTimeout
ディレクティブはオプションであり、サーバー、ディレクトリまたはロケーションごとに使用できます。DAVMinTimeout
ディレクティブは、単一の正の整数を取ります。この値は最小許容秒数を表すため、0(ゼロ)に設定するとこの機能が無効になります。DAVMinTimeout
のデフォルト値は0(ゼロ)です。
ローカル・ファイル・システムへのアクセスに対するグローバリゼーション・サポートを提供します。このディレクティブでは、ファイル・システム内のファイル名を、NLS_LANG
設定を使用して変換する必要があるかどうかを指定します。値Off
はデフォルト値で、変換不要であることを意味します。値On
は、ファイル・システム用のキャラクタ・セットが、クライアント・リクエストで使用される可能性のあるすべての文字に変換可能であることを意味します。
WebDAVクライアントがWebDAVを読取り専用モードで使用する必要があるかどうかを指定します。値Off
はデフォルト値で、WebDAVクライアントが通常動作することを意味します。値On
により、WebDAVクライアントはWebDAVの使用中に書込み操作を実行できなくなります。ただし、WebブラウザとWebDAVクライアントによる読取り専用アクティビティは許可されます。
DAVサーバーの操作に必要な構成変更は、DAV
およびDAVLockDB
ディレクティブの2つのみです。ただし、通常、サイトを保護するには、許可された特定ユーザーのみが書き込めるようにするのが最善の方法です。そのためには、<Limit
>ディレクティブを使用する必要があります。
例8-10の構成では、サイトを操作できるのは許可されたユーザーのみです。ただし、これらのユーザーには設定を超えた操作が許可されます。特に、.htaccess
ファイルをターゲット・ディレクトリに置き、サーバー構成を変更できます。サーバーは、すでに.htaccess
ファイルを読み取らないように構成されている場合がありますが、確認が必要です。また、DAVが使用可能なディレクトリ内で、CGI、シンボリック・リンク、サーバー・サイド・インクルードなど、他のオプションを禁止できます。
<Location /mypages> DAV On <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> Require user greg </Limit> </Location>
例8-11に、AllowOverride None
およびOptions None
の追加により制限を追加して変更された構成を示します。
<Location /mypages> DAV On AllowOverride None Options None <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> Require user greg </Limit> </Location> <Location /mypages> DAV On AllowOverride None Options None <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> Require user greg </Limit> </Location>
例8-12に示すように、<Limit
>ディレクティブを使用して、保護するHTTPメソッドの包括的なリストを指定するかわりに、<LimitExcept
>ディレクティブを使用することもできます。このディレクティブでは、指定したメソッドを除くすべてのメソッドにアクセス制限を適用します。
<Location /mypages> DAV On AllowOverride None Options None <LimitExcept GET HEAD OPTIONS> require user webadmin </LimitExcept> </Location>
必要に応じて適切な方法を選択してください。<Limit
>ディレクティブは厳密で明示的ですが、<LimitExcept
>ディレクティブでは将来追加されるメソッドが自動的に制限されます。
mod_dav
では、XML Request Bodyがメモリーに解析されます。DoS攻撃で使用されるテクニックの1つは、mod_dav
サーバー側で大規模なリクエスト本体を送信することです。Oracle HTTP Serverでは、すべてのメソッドのリクエスト本体を制限するディレクティブLimitRequestBody
が定義されます。しかし、大規模なPUT
操作が許可されるため、これはmod_dav
サーバーに対して有効なメカニズムではありません。
XMLリクエスト本体を持つメソッドのみを制限するために、mod_dav
ではLimitXMLRequestBody
ディレクティブを提供しています。この値のデフォルトはコンパイル時の定数で、標準では100万(1,000,000)バイトに設定されます。この値を0(ゼロ)に設定すると、サイズ制限は無効になります。
LimitXMLRequestBody
は、サーバー、ディレクトリまたは位置ごとに設定でき、負でない単一の整数引数を取ります。
WebDAVでは読取りおよび書込み機能が有効になるため、インターネット・ユーザーはWebサイトやOracle Databaseへの書込みを実行できます。この場合、ユーザーがWebサーバー・システム上で実行できる不適切なファイル(トロイの木馬)を置けないようにすることが重要です。WebDAV構成および認証が適切に設定されていない場合、ファイル・システムから不適切なファイルが実行される可能性があります。これらのコンテンツは中間層では実行できないため、この問題はOracle Databaseのコンテンツには当てはまりません。
HTTPプロトコルは、静的ファイルと実行可能ファイルを区別せずにGET
リクエストを発行します。Oracle HTTP Serverでは、ファイルはその場所または拡張子に基づいて実行されます。たとえば、シェル・スクリプト(通常はファイル拡張子なし)は、cgi-bin
ディレクトリにある場合は実行されますが、htdocs
ディレクトリにある場合は静的テキスト・ファイルとして取得されます。一方、.jsp
拡張子が付いたJavaServer Pages(JSP)は、通常は場所に関係なく実行されます。ただし、デフォルトでは、mod_oradav
は、WebDAVが使用可能なディレクトリでは、.jsp
または.sqljsp
ファイルを実行できないようにします。この2つの拡張子のどちらかが付いているファイルの場合、mod_oradav
はファイルを実行するOracle HTTP Serverのロジックをバイパスし、内容を直接読み取ります。これらの拡張子が付いているファイルは、text/plain
のMIMEタイプの編集可能ファイルとして取得されます。ORAGetSourceパラメータを使用すると、実行されず常にtext/plain
として取得されるファイル・タイプのリストに追加できます。
ファイルの実行を制限する方法の1つは、<Location
>コンテナ・ディレクティブにApacheのForceType
ディレクティブを使用することです。これにより、特定の位置にあるすべてのコンテンツがtext/plain
として取得されます。ただし、この単純で広範囲におよぶアプローチは要件を満たさない場合が多く、GIFファイルなど、実際に使用するMIMEタイプに関連した標準的な動作が必要になります。
ファイル・システム上のコンテンツに伴うこのようなセキュリティ上の問題の処理方法を決定するには、そのコンテンツにどのようなタイプのWebDAVユーザーがアクセスするかを判断する必要があります。通常、WebDAVユーザーは、2つのカテゴリに分類できます。一方のWeb作成者は、Webサイトでのコラボレーションと管理を行い、他方のエンド・ユーザーは、WebDAVをパブリックな記憶領域として使用します。エンド・ユーザーがファイルをアップロードしたり実行したりすることはないため、エンド・ユーザー用にORAGetSourceパラメータで多数のファイル拡張子を指定するか、ForceType
ディレクティブを使用する必要があります。
Oracle HTTP Serverでサポートされている、標準のBasicまたはDigest認証および認可メカニズムを適用してください。通常、これは、提供されるmoddav.confファイル内のデフォルトの場所(dav_public
など)に適用します。これにより、システムをリモート記憶域として使用できるユーザーが限定され、権限のないユーザーがディスクをいっぱいにするのを防止できます。Webサイトの作成者には、常にOracle HTTP Serverの認証および認可を適用する必要があります。
また、Web作成者が適切に認証および認可された後にJSPファイルまたは他の実行可能ファイルを編集し、実行方法を調べられるように、実行コンテキストと編集コンテキストも提供する必要があります。そのためには、実行コンテキストに関連付けられたディレクトリの別名を作成し、別名を作成した場所でDAVを使用できるようにします。たとえば、URLでcgi-bin
ディレクトリが指定されている場合(http://www.acme.com/cgi-bin/printenv
など)はスクリプトを実行でき、URLで別名edit-cgi-bin
が指定されている場合(http://www.acme.com/edit-cgi-bin/printenv
など)はスクリプトを編集できるようにするとします。例8-13では、構成ファイル・エントリによってこの目標を達成しています。ここでは、cgi-bin
ディレクトリの内容の編集コンテキストとしてedit-cgi-bin
が設定されています。
Alias /edit-cgi-bin /usr/local/apache/cgi-bin <Location /edit-cgi-bin> DAV On ForceType text/plain </Location>
この項では、各種操作のパフォーマンスの最適化に役立つ情報について説明します。内容は、次のとおりです。
Oracle Application Serverでは、Oracle Databaseから取得されるデータに、ローカル・ファイル・システムのディスク・キャッシュを使用できます。ディスク・キャッシュは、アクセス頻度の高いデータベース・データに対するHTTPのGET
操作のパフォーマンスを改善するために設計されています。データベースのデータがリクエストされると、そのデータが取得され、ローカル・ファイル・システムのディスク・キャッシュに格納されます。続いて同じデータに対するリクエストがあり、データがまだディスク・キャッシュに残っている場合、Oracle Application Serverでは、データベース内のデータに変更があったかどうかを(etag
値を検査することで)チェックします。データに変更がない場合はキャッシュから取得されます。これは、データベースから相当量のデータを取り出すよりも効率的です。
ディスク・キャッシュによるパフォーマンスの改善度は、中型から大型のファイル(約50KB以上)の場合に最大となります。ただし、ファイルが小さい場合、パフォーマンスの改善度は小さくなり、非常に小さいファイルの場合は、ディスク・キャッシュを使用するほうがディスク・キャッシュを使用しない場合よりもパフォーマンスが低下することがあります。たとえば、ファイル・サイズがわずか24バイトのmyfile.dat
ファイルがリクエストされた場合、そのファイルをデータベースからローカル・システムにコピーする所要時間は、データベースにアクセスしてファイルの変更の有無をチェックする場合に比べてはるかに短くなります。ディスク・キャッシュを使用しない場合、ファイルの変更の有無がデータベースでチェックされることはなく、常にファイルがデータベースからコピーされます。
次のOraDAVのパラメータを設定して、OraDAV操作用にディスク・キャッシュを制御できます。
ORACacheDirectory
を指定すると、OraDAV操作用のディスク・キャッシュが有効化になります。また、この場合は、ORACacheTotalSize
値も指定する必要があります。ORACacheMaxResourceSize
およびORACachePrunePercent
パラメータの値も指定できます。ORACacheDirectory
を指定しないと、OraDAV操作用のディスク・キャッシュは有効にならず、他のディスク・キャッシュ関連のパラメータは関係しません。
Oracle Application Server Web Cacheは、Webサーバー・システム上のデータに対するクライアントの読取り専用操作など、ほとんどのWebアクティビティのパフォーマンスを高めます。ただし、OracleAS Web CacheはOraDAV操作をキャッシュしません。読取りおよび書込み機能用に設計されています。したがって、WebDAVクライアントをOracle HTTP Serverに直接接続すればパフォーマンスを改善できます。
WebDAVクライアント用にOracleAS Web Cacheをバイパスする場合は、Oracle HTTP Serverの標準ポートであるポート7778を使用できます。この場合、WebDAVクライアントがWebサーバーに直接接続し、OracleAS Web Cacheを使用したときよりもパフォーマンスが改善されます。
この項では、mod_oradav
に関連する使用上の注意について説明します。一部の情報は、Greg Stein(gstein@lyra.org
)著の資料から引用または応用されています。この資料は次のURLで入手できます。
http://www.webdav.org/mod_dav/install.html
ルートの場所にあるコンテナのマッピング時の注意事項は、次のとおりです。
Location />
を指定しないでください。
<Location /project1>
と<Location /project1/project2>
というコンテナは指定しないでください。ただし、<Location /project1>
と<Location /project2>
は指定できます。
データベースのデータにアクセスする場合に、URLやファイル名などのクライアント・リクエストに使用するキャラクタ・セットには、データベースに使用するキャラクタ・セットとの互換性が必要です。特に、データベースのキャラクタ・セットがクライアント・リクエストのキャラクタ・セットとは異なる場合、データベースのキャラクタ・セットは、クライアント・リクエストに使用される可能性のあるすべての文字に変換できる必要があります(したがって、クライアント・リクエスト用キャラクタ・セットのスーパーセットである必要があります)。つまり、変換中にデータベースのキャラクタ・セットによって置換文字が発生しないようにする必要があります。
Oracle HTTP Serverの起動時に、NLS_LANG
環境変数にクライアント・リクエスト用のキャラクタ・セットを反映させる必要があります。たとえば、ファイル名とURLに漢字が含まれている場合は、NLS_LANG=JAPANESE_JAPAN.JA16SJIS
(ShiftJIS文字の場合)を指定できます。この場合、データベース用には、UTF8
など、SJIS
文字に対応するキャラクタ・セットを指定する必要があります。
データベースへのアクセス時と異なり、ローカル・ファイル・システムにアクセスする場合は、ファイル・システム用のキャラクタ・セットを、クライアント・リクエストに埋め込まれたURL用のキャラクタ・セットと同じにするか、あるいは互換性のあるキャラクタ・セットにする必要があります。ファイル・システム用のキャラクタ・セットは、クライアント・リクエストに使用される可能性のあるすべての文字に変換できる必要があります。NLS_LANG
パラメータ値は、クライアントとOraDAVサーバーのキャラクタ・セットを表す必要があります。また、パラメータDAVOraNLS
に値On
を指定する必要があります。
たとえば、図8-2に示すように、ファイルにShiftJIS文字が使用され、dav_public
にあるファイル・システムがオペレーティング・システムではJAPANESE_JAPAN.JA16SJIS
キャラクタ・セットで表されているシステム上で、Webフォルダを使用している場合を考えます。
この場合は、次の手順で操作する必要があります。
NLS_LANG
値をJAPANESE_JAPAN.JA16SJIS
に設定します。
httpd.conf
ファイルに次の行を追加します。
<Location /dav_public> DAV On DAVOraNLS On </Location>
これまでの項で示した<Limit
>および<LimitExcept
>ディレクティブの構成例では、PROPFIND
メソッドが読取り専用である場合も制限されました。これは、PROPFIND
メソッドを使用すると、DAVが使用可能なディレクトリ内のすべてのファイルをリストできるためです。セキュリティ上の理由で、ファイル・リストを一般の読取りアクセスから保護することをお薦めします。
PROPFIND
をユーザー・グループ、一連のドメインまたは一連のホストに制限し、内容を変更するメソッドをごく少数の作成者のみに制限する方法もあります。たとえば、会社の従業員にサーバー上のファイルの参照を許可し、ファイル変更は少数のユーザーにのみ許可するということが可能です。匿名(非認証)のユーザーは、参照も変更もできません。
最後に、Webサーバーを汎用の読取り専用ファイル・リポジトリにする場合は、単にPROPFIND
を制限から外します。これにより、すべてのユーザーがディレクトリを任意に参照し、ファイルをフェッチできます。
$ORACLE_HOME/Apache/oradav/conf/moddav.confがファイル記憶域を使用するように構成されている場合、ファイルはデフォルトで次の場所に置かれます。
$ORACLE_HOME/Apache/Apache/htdocs/dav_public
Oracle Application Server Recovery Managerでは、このデフォルトの場所をバックアップします。ファイルの格納場所を変更した場合、Recovery Managerでファイルをバックアップするには、config_misc_files.inp
ファイルに新しい場所を追加する必要があります。詳細は、『Oracle Application Server管理者ガイド』の「バックアップとリカバリの概要」を参照してください。
|
Copyright © 2006 Oracle Corporation. All Rights Reserved. |
|