ウェブクロン

webcronとは、 Webサーバー上でホストされる時間ベースのジョブスケジューラを指す用語です。この名称は、「Webサーバー」という語とUnixデーモンの「cron」に由来しています。webcronソリューションは、シェルアカウントやその他のジョブスケジューリング手段を提供していないWebホスト上のWebサーバー環境内でジョブを実行するスケジュール機能を提供します。[ 1 ] [ 2 ]

概要

多くのウェブホストは、シェルアカウントや、 cronなどの組み込みジョブスケジューラを提供しており、ユーザーはこれらを利用してジョブを簡単にスケジュールできます。このようなホストは、ジョブをコマンドラインアプリケーションとして実行し、必要に応じてウェブサーバーと通信することもできます。しかし、Webcronソリューションは、ウェブホストのウェブサーバー環境内でのみ動作します。これにより、cronなどのジョブスケジューラやシェルアカウントを提供していないホストでもWebcronソリューションを動作させることができます。Webcronは、そのようなホストの代替手段として設計されています。[ 3 ] [ 2 ]

Webcronソリューションは2つの部分で構成されています。1つ目は、 URL経由でアクセス可能な場所にあるタスクを実行するスクリプトです。2つ目は、スクリプトのURLに定期的にアクセスするスケジュールプロバイダーを使用することです。

スケジューリングプロバイダーでスケジュールを設定する前に、ユーザーはウェブサーバー上で実行されるスクリプトを設定する必要があります。ウェブホストは、スクリプトの単一インスタンスの実行時間を制限できます。また、CPURAMのリソース使用量も制限できます。共有ホスティングプロバイダーでWebcronソリューションを使用する場合は、ウェブホストの制限を繰り返し超過しないように注意する必要があります。そうしないと、スクリプトが強制終了される可能性があります。長時間実行されるスクリプトは、ウェブサーバーのプロセスによっていつでも終了される可能性があることを考慮する必要があります。

スケジューリングプロバイダー

第三者

ウェブ上には複数のサードパーティ製Webcronスケジューリングプロバイダが存在します。[ 4 ] [ 5 ]これらのサービスは、URLと頻度スケジュールを受け付け、指定されたURLを取得またはpingします。ほとんどのプロバイダは、サーバーの過負荷を防ぎ、ユーザーにプレミアムアカウントへの登録を促すために、システムに制限を設けています。[ 6 ]

一部のWebCronサービスプロバイダは、 WebインターフェースでCRON式を受け入れ、ジョブの実行時間をスケジュールします。[ 7 ] [ 8 ]

訪問者ベース

Webcronソリューションは、訪問者がサーバー上のWebcronスケジューラスクリプトを起動できるようにすることで、Webホスト上に完全に収容できます。例えば、ウェブサイトのヘッダーまたはフッターに「img」HTML要素を配置したり、スクリプト内のAjax呼び出しやiFrameを使用したりすることで実現できます。訪問者がウェブサイトを閲覧すると、画像が読み込まれ、Webcronスケジューラが起動します。Webcronスケジューラは必要なタスクを実行し、画像を出力します。これにより、訪問者のウェブブラウザにはページ上に壊れた画像が表示されません。[ 3 ]また、 HTTPレスポンスが遅延しないように、タスクを非同期的に開始することもできます。

訪問者ベースの Webcron スケジュールを使用している Web サイトへの訪問者が不十分な場合、スケジュールされたタスクは時間どおりに実行されません。

訪問者ベースのWebcronスケジューリングは、自己完結型のWebcronソリューションを実現するため、ウェブサイトやWebベースのソフトウェア製品の移植性を向上させます。定期的に実行する必要があるタスクを持つ一部のWebベースのオープンソースソフトウェアは、訪問者ベースのWebcronソリューションを使用してそれらのタスクを実行します。

リモートアクセス

リモートアクセス対応のWebcronソリューションは、通常、クライアントコンポーネントとサーバーコンポーネントのペアで構成されています。クライアントは、ユーザーのパソコンなど、別のコンピュータ上で実行されます。ジョブスケジュールは、クライアントコンポーネントが配置されているコンピュータ上で設定されます。ジョブが実行されると、クライアントコンポーネントはサーバーコンポーネントと通信します。[ 1 ]

リモートアクセスは通常、他のスケジューリングプロバイダでは不可能な機能を提供します。クライアントとサーバーコンポーネント間のデータは、HTTP経由であっても通常暗号化されます。これにより、クライアントコンポーネントのプラグインまたはモジュールは、サーバーコンポーネントと通信して、通常は制限されている情報を安全に要求できます。[ 1 ] 送受信データの圧縮により、全体的な帯域幅の削減に役立ちます。[ 9 ]

リモートアクセスプラグインまたはモジュールの典型的な実装は、ウェブサーバーからクライアントへのファイルとデータベースの増分バックアップです。一部の増分バックアップ実装では、基本的なホストベースの侵入検知システム機能も提供される場合があります。[ 9 ]

ローカルアクセス

既にcronが利用可能なホストでは、webcronソリューションを使用できます。これは、必要な機能がWebサーバー経由でしか利用できない場合に便利です。cronデーモンはスケジューリングプロバイダーであり、Wgetなどの別のツールを使用してスクリプトに定期的にアクセスします。

リモート アクセス可能な webcron ソリューションの場合、cron はクライアント コンポーネントを実行してスクリプトを実行できます。

セキュリティ上の懸念

WebcronソリューションはURL経由で利用可能であるため、ユーザーはいくつかのセキュリティ上の懸念事項に対処する必要があります。Webcronソリューションは、信頼性の問題、サービス拒否攻撃、ネットワークまたはパケットのスニッフィング、リプレイ攻撃の実行、情報漏洩の可能性といった問題を引き起こします。Webcronソリューションは、犯罪的なコンピュータハッカーにとって理想的な侵入口となります。[ 1 ]

サードパーティのスケジュール管理プロバイダーを利用する場合、ユーザーはサードパーティがURLを不正に利用しないことを信頼することになります。また、サードパーティのサーバーとウェブサーバー間の接続がハッカーから安全であると想定する必要があります。

訪問者ベースのスケジューリングプロバイダを使用する場合、ユーザーが意図せずサービス拒否攻撃の標的となってしまう可能性があります。また、スクリプトが不適切に記述されている場合、意図せずサーバー情報を漏洩してしまう可能性があります。

リモートアクセススケジューリングプロバイダーを使用する場合、ユーザーは通常、Webサーバーとの通信方法を細かく制御できます。HTTPを使用する場合、URLは暗号化されずに送信されますが、リクエスト内のデータは通常暗号化されます。これにより、サービス拒否攻撃やリプレイ攻撃を受ける可能性が高まります。

参考文献