概要 : ウイルス スキャン エンジン API の実装

最終更新日: 2015年3月9日

適用対象: SharePoint Foundation 2010

注意

Microsoft SharePoint Foundation では、ウイルス スキャン エンジン API の使用は廃止されました。この API は、下位互換性の目的で SharePoint Foundation に存続しています。

ウイルス対策をサポートするため、Windows SharePoint Services 3.0 は SP VS API 1.4 (Microsoft Office SharePoint ウイルス スキャン エンジン (VSE) API) という名前の API を使用します。これは、Microsoft Exchange Server VS API 2.0 が基になっています。SP VS API 1.4 は元の設計の多くを組み込んでいますが、Microsoft SQL Server 環境での速度に対して最適化されています。そのために、Windows SharePoint Services 3.0 の File/Save パスおよび File/Open パスに直接統合する下位レベルの API が作成され、MAPI (メッセージング アプリケーション プログラミング インターフェイス) に対する VS API 2.0 の依存性も除去されています。

Windows SharePoint Services 3.0 は、メール ストアではなく SQL ドキュメント ストアなので、ドキュメントは保存されたり (アップロード) 開かれたり (ダウンロード) するときにリアルタイムでスキャンされ、その結果がすぐにユーザーに示されます。既定では、Windows SharePoint Services 3.0 は手動スキャンをサポートしません。このようなスキャンは、一般に "バックグラウンド スキャン" または "スケジュール スキャン" と呼ばれます。

SP VS API 1.4 のアーキテクチャ

Windows SharePoint Services 3.0 は、SP VS API 1.0 をウイルス対策ベンダー コンポーネント (VSE) 用の COM レイヤーとして公開するアーキテクチャを使用して、Windows SharePoint Services 3.0 によって管理される Antivirus Manager (AVM) と通信します。

AVM がファイルを処理するために使用するロジックは、以下のように設計されています。

  • アップロード (保存) とダウンロード (オープン) の 2 種類の要求をサポートします。

  • Windows SharePoint Services 3.0 データベースから、スキャン済みの状態を示すファイル プロパティを取得します。

  • プロパティを使用してファイルをスキャンする必要があるかどうかを判定し、ファイルの処理方法を判断します。

  • 適切なコンテキストと環境 (Web ページまたはアプリケーション ダイアログ ボックス) に対する適切な UI を発行するか、または目的のアクション (オープンまたは保存) を実行します。

  • スキャン済みの状態を示すファイル プロパティを、Windows SharePoint Services 3.0 データベースに戻して格納します。

AVM のロジック設計では、VSE がデータベースを実際に読み取ったり、データベースに直接書き込んだりする必要はありません。これは、この機能が内部の AVM プロセスによって管理されるためです。また、この設計では、ファイルのスキャンとクリーニングの後で VSE によって返されるステータス コードに基づいて、AVM は各ファイルに対して実行するアクションを決定できます。

VSE のセットアップと Live Update

VSE は、Web サーバーのプロセス空間で実行するモジュールでなければならず、受信および送信するコンテンツのウイルス感染をスキャンします。VSE は、ベンダーから提供されるウイルス スキャナー オブジェクトをインスタンス化し、スキャナーを呼び出してコンテンツのスキャンを実行するスレッドのプールを管理します。VSE は、ベンダーから提供されるウイルス スキャナー オブジェクトをインスタンス化し、スキャナーを呼び出してコンテンツのスキャンを実行するスレッドのプールを管理します。前のインスタンスを使用している要求がすべて終了すると、スキャン VSE はそのインスタンスを解放します。つまり、すべてのインスタンスが古いスキャナー バージョンを完了している間、新しいインスタンスは最新のスキャナー バージョンを使用します。この手順により、アップデートの間に要求が失われたり終了されなかったりすることがないことが保証されます。ただし、これは、まだ残っているインスタンスは現在のインスタンスを完了せず、バージョンは古いものであることが示されるので、次にファイルが要求されると再スキャンが行われることを意味します。

STSADM.EXE を使用したスキャナーの更新

Windows SharePoint Services 3.0 ではセキュリティが強化されたため、レジストリ キーの更新が変更されました。タイマー ジョブ (Virus Scanner Update) が各フロントエンド Web サーバーのウイルス対策ステータスを調べて、必要なときにはサーバーを更新します。Windows SharePoint Services 3.0 の他のタイマー ジョブと同様に、このタイマー ジョブも指定した間隔で実行するように構成できます。既定では、5 分ごとに実行します。

下位互換性のため更新キーは Windows SharePoint Services 2.0 のときと同じように機能しますが、タイマー ジョブの実行を可能にする Windows SharePoint Services 3.0 Administration Service が動作している必要があります。設定されると、キーは avvendorid と avvendorupdatecount の値を 1 ずつインクリメントします。Windows SharePoint Services 3.0 の "シングルクリック" インストールでは、Administration Service は既定で無効になるので、動作していない可能性があります。

Windows SharePoint Services 3.0 および Microsoft Office SharePoint Server 2007 でのタイマー ジョブの実行に関して混乱と不確実さがないように、更新の実行には STSADM.EXE を使用することをお勧めします。この方法は、Administration Service が実行しているかどうかに関係なく動作します。

STSADM.EXE を使用することで、インストールされているベンダー情報の現在の値を取得して、これらの値を更新できます。STSADM.EXE を使用する方法の詳細については、Introducing the Administration Tools for Windows SharePoint Services (英語) を参照してください。

次の表では、スキャナーの更新に関係する新しいコマンドを示します。

コマンド

説明

avvendorid

currentValue または previousValue + 1 と等しくない数値。

現在のスキャナーのベンダー ID。

avvendorupdatecount

currentValue または previousValue + 1 と等しくない数値。

現在のスキャナーまたはシグネチャを強制的に更新します。

avvendorid コマンドがシステムによって認識されるようにするには、avvendorupdatecount を設定する必要があります。設定しない場合は、最初に Microsoft インターネット インフォメーション サービス (IIS) をリセットして、avvendorid を有効にする必要があります。次にコマンドの例をいくつか示します。

stsadm -o getproperty -pn avvendorid
stsadm -o getproperty -pn avvendorupdatecount
stsadm -o setproperty -pn pn avvendorid -pv [numericvalue]
stsadm -o setproperty -pn avvendorupdatecount -pv [numericvalue]

レジストリを使用したスキャナーの更新

前述したように、このメカニズムは新しいスキャナーには推奨されず、下位互換性のためにのみ存在しています。

VSE は、ベンダーによるウイルス スキャン ソリューションの構成を判別するパラメーターを検索します。この値は、次に示すように、システム レジストリの VSE 構成セクションの下にあります。

[HKLM\Software\Microsoft\Shared Tools\Web Server Extensions\AVScanner]

パラメーターは REG_SZ 値で、IMso_VirusScanner を実装するクラス オブジェクトの CLSID が、レジストリ形式で設定されています。VSE は、この値を使用してオブジェクトをインスタンス化します。次の例は、レジストリ値の形式を示しています。

CLSID = "{00020906-0000-0000-C000-000000000046}"

注意

これは、形式を説明するためだけのサンプルの CLSID です。実際には、VSE が独自の CLSID を作成します。

レジストリを使用したライブ アップデート

VSE は、レジストリ構成セクションが変化したときに通知を受け取る独立したスレッドを持っています。VSE は、VSE レジストリ構成セクションに特定の値が設定されていることを確認したら、スキャナーの再読み込みを開始します。これには、更新された CLSID のインスタンス化と新しいパラメーターでの初期化が含まれます。

Update = DWORD:00000001

再読み込みが完了したら、VSE は値を 0 (ゼロ) にリセットします。

ウイルス シグネチャ更新要件

シグネチャの更新では、ベンダー固有のアクションを実行して以下のことを行う必要があります。

  • コンピューターに新しいデータ ファイルをインストールします。

  • Update の値を 1 に設定して VSE に通知します。

ウイルス スキャナー更新要件

コードの更新では、ベンダー固有のインストール アクションを実行して以下のことを行う必要があります。

  • コンピューターに新しいコード ビットをインストールします。

  • VSE CLSID の値を変更して、新しいクラス オブジェクトを示します。

  • Update の値を 1 に設定して VSE に通知します。

VSE レジストリのレイアウト

VSE レジストリのレイアウト

[HKLM\Software\Microsoft\Shared Tools\Web Server Extensions\AVScanner]

次の表では、VSE レジストリに対して使用する値を示します。

説明

CLSID

REG_SZ

ウイルス スキャナー クラス オブジェクトを指定します。

Update

REG_DWORD

1 に設定すると、スキャナー インスタンスの再読み込みを開始します。

VSE で提供する必要のあるインターフェイスの詳細については、「ウイルス スキャン エンジン API」を参照してください。

設定ページの更新

ウイルス対策管理ページの設定が更新されたときには常に、Windows SharePoint Services 3.0 は avvendorid と avvendorupdatecount の値を 1 だけインクリメントします。

ウイルス対策のプロパティ

次の表に示すプロパティを使用して、サーバーに対するウイルス対策保護を構成します。ウイルス対策クリーニングを有効にするかどうか、ダウンロードおよびアップロードのスキャンを有効にするかどうか、スキャンのタイムアウト時間、ウイルス対策プロセスで使用するスレッドの数、および感染している可能性のあるドキュメントをユーザーが自分のクライアント コンピューターにダウンロードできるようにするかどうかを指定します。

コマンド

説明

avuploadscanenabled

はい/いいえ

アップロードのスキャンを有効または無効にします。

avdownloadscanenabled

はい/いいえ

ダウンロードのスキャンを有効または無効にします。

avcleaningenabled

はい/いいえ

クリーニングを有効または無効にします。

avallowdownload

はい/いいえ

感染しクリーニングされていない可能性のあるコンテンツのダウンロードを許可します。

avnumberofthreads

数値

使用するスレッドの数。

avtimeout

数値 (秒単位)

スキャンがタイムアウトするまでの時間。

大きいファイルのサポート

Windows SharePoint Services 3.0 は大きいファイルをサポートし、これらのファイルに対するウイルス保護もサポートします。

パフォーマンスを向上させるには、複数のファイルのチャンクを作成し、スキャンが済むまでメモリに戻されないようにしてみてください。大きいファイルはスキャンに時間がかかる場合があるので、スキャナーが処理を完了できるよう、サーバーまたは IIS の既定のタイムアウト設定を長くすることが必要になる場合があることに注意してください。

64 ビットのサポート

Windows SharePoint Services 3.0 は 64 ビット システムをサポートします。64 ビット システムをサポートするには、既存のスキャナーの更新が必要になる可能性があり、別途検証を行う必要があります。