Windows SharePoint Services で Web パーツを展開する

Windows SharePoint Services では、Web パーツをページに追加する前に、Web パーツ ギャラリーに展開する必要があります。このセクションでは、bin フォルダとグローバル アセンブリ キャッシュ (GAC) の違い、セキュリティ権限に関する考慮点、アセンブリに展開用の厳密な名前を付ける方法、SafeControl エンティティの作成方法、および Web パーツ定義ファイルを作成して、Web パーツを展開する方法について説明します。

展開に関する考慮点

SharePoint サイト内には、Web ハーツ アセンブリを展開できる主要な場所が 2 つあります。

  • bin ディレクトリ : bin ディレクトリは、Web アプリケーションのルート ディレクトリに格納されるフォルダです。このフォルダの場所は、インターネット インフォメーション サービス (IIS) で Web サイトが作成されるときに決まります。Windows SharePoint Services では、SharePoint 3.0 のサーバーの全体管理サイトを通して、または、IIS マネージャで新しい Web サイトを手動で作成すると作成されます。

    重要

    bin ディレクトリが存在しない場合は、手動で作成する必要があります。Web パーツは、ローカルの _app_bin ディレクトリに格納しないでください。このディレクトリは、Microsoft 用に予約されています。

    詳細については、「[方法] Web アプリケーション ルートを調査する」を参照してください。

  • グローバル アセンブリ キャッシュ : 署名されたアセンブリを展開できるグローバルな場所です。グローバル アセンブリ キャッシュでは、多数のアプリケーションでアセンブリを共有できます。グローバル アセンブリ キャッシュは, .NET ランタイムと共に自動的にインストールされます。コンポーネントは、通常、C:\WINNT\Assembly に格納されます。

各場所には、次の表に示すように、利点と欠点があります。

展開の場所

利点

欠点

bin ディレクトリ

既定では、アセンブリは部分的な信頼に基づいて実行されます。このディレクトリから実行されるコードのコード アクセス セキュリティ (CAS) 権限のレベルは低く設定されています。Web パーツを正しく機能させるには、Web パーツに付与されたアクセス許可を明示的に上げる必要があるため、既知の必須 CAS 権限を持つ bin ディレクトリでアセンブリを実行することを選択する管理者も多くいます。

bin ディレクトリは、Web アプリケーション固有です。そのため、コードを特定の Web アプリケーションに分離することができます。

Web パーツを複数の Web アプリケーションで実行するには、グローバル アセンブリ キャッシュに展開する必要があります。

グローバル アセンブリ キャッシュ

既定では、アセンブリは、完全な信頼に基づいて実行されます。これらはグローバルにインストールされるので、どの Web アプリケーションでも動作します。グローバル アセンブリ キャッシュには、同じアセンブリの複数のバージョンを含めることができます。

一般に、グローバル アセンブリ キャッシュにインストールされたコードには CAS の制約がありません。したがって、多層防御セキュリティの利点は失われます。

また、GAC に展開されたアセンブリはキャッシュに入れられます。そのため、アセンブリが再ビルドされた場合、SharePoint サイトでは自動的に更新されません。インターネット インフォメーション サービス (IIS) をリセットして、Windows SharePoint Services で強制的にアセンブリを再読み込みする必要があります。

セキュリティ権限に関する考慮点

既定では、bin ディレクトリのコード アクセス セキュリティ権限は低く、単純な実行しか許可されません。Web パーツが Sharepoint オブジェクト モデルにアクセスする必要がある場合など、ほとんどの場合、アセンブリが正しく実行されるようにこれらの権限を昇格させる必要があります。

権限を昇格させる方法は 2 つあります。

  • 推奨方法 : 新しい信頼ポリシー ファイルを作成し、web.config ファイルが新しいファイルをポイントするようにします。このオプションは複雑ですが、Web パーツの権限を正しく割り当てることができます。

    信頼ポリシー ファイルの詳細については、「Windows SharePoint Services の Web パーツをセキュリティ保護する」を参照してください。

  • オプションの方法 : bin ディレクトリの基本的な信頼レベルを上げます。Web アプリケーション ルートの web.config ファイルに、既定属性が level="WSS_Minimal" の <trust> というタグがあります。このレベルを WSS_Medium に変更できます。このオプションは単純ですが、必要のない新しい権限が勝手に付与されるため、新しい信頼ポリシー ファイルを作成するよりセキュリティが低下します。

Web パーツ アセンブリに厳密な名前を付ける

厳密な名前を付ける場合、秘密キーを使用して、アセンブリにデジタル署名します。また、アセンブリには、署名を検証するための公開キーのスタンプが付きます。この方法により、Web パーツの不正バージョンを防ぐことができます。公開キーによるデジタル署名の検証に失敗した場合、Windows SharePoint Services はモジュールの実行を拒否します。

Web パーツを bin に展開する場合、アセンブリに厳密な名前を付けることをお勧めします。Web パーツをグローバル アセンブリ キャッシュに展開する場合は、アセンブリには必ず厳密な名前を付けてください。厳密な名前が付けられていないアセンブリは、Windows SharePoint Services では推奨されません。

アセンブリに署名するには, .NET Framework ソフトウェア開発キット (SDK) に含まれている sn.exe ツールを使用します。.NET Framework SDK の詳細については、「SDK、再頒布可能パッケージ、およびサービス パック」を参照してください。sn.exe ツールは、コントロールを安全なコントロールとして SafeControls リストに登録するときに必要な公開キーの抽出にも使用されます。sn.exe ツールの使用方法については、「厳密名ツール (Sn.exe)」を参照してください。

SafeControl エントリの作成

Windows SharePoint Services 技術では、基本的に、信頼されていないユーザーが Windows SharePoint Services を実行しているシステム内に ASPX ページをアップロードし、作成できることを前提としています。信頼されていないユーザーが ASPX ページ内にサーバー側コードを勝手に追加するのを防ぐために、Windows SharePoint Services には SafeControls リストがあります。

SafeControls リストは、サイト内の ASPX ページ上で起動しても安全であると指定された、SharePoint サイト固有の承認済みコントロールおよび Web パーツです。このリストは、Web アプリケーション ルートの web.config ファイルにあります。

SafeControl エントリは、Web パーツの XML ベースの宣言で、次の形式で表されます。

<SafeControl Assembly="AssemblyNameWithoutDLLExtension, Version=AssemblyVersionNumber, Culture=neutral, PublicKeyToken=PublicKeyToken" Namespace="NamespaceOfYourProject" TypeName="*" Safe="True" />

SafeControl エントリには、アセンブリ名、名前空間、バージョニング情報が使用され、署名がある場合は、コントロールが安全であることを証明するための公開キー トークンが必要です。Web パーツに署名がある場合は、厳密名ツールを使用して、SafeControl エントリで使用する公開キー トークンを取得できます。次のコマンドは、アセンブリの公開キー トークンを取得します。

sn -T AssemblyName.dll

.Webpart ファイルの作成

Web パーツ定義 (.webpart) ファイルは、1 つの Web パーツのプロパティ設定を含む単純な XML ファイルです。Web パーツを Web パーツ ページにインポートするには、.webpart ファイルをアップロードするか、Web パーツを Web パーツ ギャラリーに追加するだけです。アップロード後、Web パーツを Web パーツ ページのゾーンの 1 つにドラッグすると、その Web パーツが表示されます。インポート後に Web パーツの既定の名前と説明を表示するには、Title プロパティと Description プロパティを含める必要があります。インポート中に他の Web パーツ プロパティを設定する場合は、これらを .webpart ファイルで定義できます。.webpart ファイルの形式は次のとおりです。

<?xml version="1.0" encoding="utf-8" ?> 
  <webParts>
     <webPart xmlns="https://schemas.microsoft.com/WebPart/v3">
       <metaData>
         <type name="TypeName, Version=VersionNumber, Culture=neutral, 
         PublicKeyToken=PublicKeyToken" /> 
         <importErrorMessage>Cannot import this Web 
         Part.</importErrorMessage> 
       </metaData>
       <data>
         <properties>
           <property name="Title" type="string">
              WebPartTitle</property>
           <property name="Description" type="string">
              WebPartDescription
           </property>
         </properties>
       </data>
     </webPart>
   </webParts>

See Also

概念

Windows SharePoint Services の Web パーツをセキュリティ保護する