マネージ コード フォーム テンプレートのセキュリティ モデルについて
InfoPath マネージ コード フォーム テンプレートは、アンマネージ フォーム テンプレートで実行されるスクリプトと同じセキュリティ レベルをサポートしますが、.NET Framework の共通言語ランタイム (CLR) で実行されるマネージ コードに適用される追加のコード アクセス セキュリティ機能もサポートします。
InfoPath マネージ オブジェクト モデルのセキュリティ レベル
次の表は、セキュリティ オブジェクト モデルのメンバのセキュリティ レベルと、マネージ コード フォーム テンプレートでそのオブジェクト モデルのメンバが使用されるときに、各レベルで要求されるアクセス許可のセットの関係を示しています。
オブジェクト モデルのセキュリティ レベル | 説明 | 要求されるアクセス許可のセット |
---|---|---|
0 |
制限なくアクセスできます。 |
なし |
2 |
現在開いているフォームと同じドメイン内で実行されているフォーム、またはドメインを越えたアクセス許可を付与されているフォームだけがアクセスできます。 |
なし |
3 |
完全に信頼できるフォームだけがアクセスできます。 |
FullTrust |
メモ : |
---|
セキュリティ レベル "1" は現在の InfoPath COM サーバーでは使用されず、将来の使用に備えて予約されています。 |
重要 : |
---|
オブジェクト モデルのレベル 0 および 2 では、マネージ コードを含むためにアクセス許可のセットは要求されませんが、次のセクションに示すドメイン アクセスのセキュリティ レベル [ドメイン] の定義に従って動作します。 |
Microsoft.Office.InfoPath アセンブリおよび Microsoft.Office.Interop.InfoPath.SemiTrust アセンブリで公開される各オブジェクト モデルのメンバのセキュリティ レベルについては、Microsoft.Office.InfoPath 名前空間および Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間のそのメンバについて説明しているトピックの「解説」に記載されています。
InfoPath ドメイン アクセスのセキュリティ レベル
InfoPath では、InfoPath アプリケーションで公開される COM サーバーによって強制されるオブジェクト モデルのセキュリティ レベルと関連して、フォーム テンプレートの場所、フォームの展開方法、およびデザイン モードでの設定に応じて適用される 3 つのセキュリティ レベルが定義されます。これらの 3 つのセキュリティ レベルを次の表に示します。
ドメイン アクセスのセキュリティ レベル | 説明 |
---|---|
制限あり |
フォーム テンプレート外部での通信は許可されません。このセキュリティ レベルは、有害なフォームにより、コンピュータから悪意を持ったユーザーにデータが送信されるのを防ぐことを目的としています。このセキュリティ モードで実行中は、カスタム作業ウィンドウ、データ接続 (電子メールの送信を除く)、ActiveX コントロール、マネージ コード フォーム コード、ロール、およびワークフローの各機能は使用できません。マネージ コード フォーム テンプレートは制限ありドメインでは実行できません。マネージ コード フォーム テンプレートに関して、[フォームのオプション] ダイアログ ボックスの [セキュリティと信頼] カテゴリで [自動的にセキュリティ レベルを設定する] がオンになっている場合、コードを実行するには、常に少なくとも [ドメイン] セキュリティ アクセス レベルが必要です。
重要 :
マネージ コード フォーム テンプレート用に作成されたマネージ コード アセンブリは、制限ありドメインからフォームが開かれた場合 (たとえば、電子メールの添付ファイルとして送信された InfoPath フォームから開かれた場合) は読み込まれず、実行されません。電子メールの添付ファイルとして展開するフォーム テンプレートには、上記の機能を含めないようにする必要があります。フォーム テンプレートにフォーム コードが含まれる場合、フォーム コードは JScript または VBScript で実装し、セキュリティ レベル 0 のオブジェクト モデルのメンバのみを使用する必要があります。
|
ドメイン |
Microsoft Internet Explorer で定義されているセキュリティ ゾーンでのフォームの場所に応じて、フォームが制限されます。たとえば、フォームがローカル イントラネット ゾーンにある場合、そのドメイン内の他のデータと通信することは許可されますが、他のドメインからデータを取得することは許可されません。Microsoft Internet Explorer のセキュリティ ゾーンにより、スクリプトが安全に使用できない可能性があるとマークされている ActiveX コントロールの実行を許可するかどうかも決定されます。 |
完全信頼 |
フォームが使用されるコンピュータで、完全な信頼によりフォームを実行することが許可されます。このセキュリティ レベルを使用できるのは、コンピュータの信頼されたルート発行元に一致する署名によりデジタル署名されたフォームを操作する場合か、フォームをインストールし、フォーム定義ファイル (.xsf) で xDocumentClass 要素の requireFullTrust 属性を "yes" に設定するインストール プログラムを作成する場合のみです。この設定を使用すると、フォームはオブジェクト モデルのセキュリティ レベル 3 を必要とするオブジェクト モデル (ファイル システムにアクセスするプロパティとメソッドなど) の呼び出しにアクセスすることができ、より制限の高いセキュリティ レベルで実行するときに表示される、特定のセキュリティ プロンプトを無効にすることができます。 |
既定では、フォーム テンプレートで使用されている機能と、フォーム テンプレートの展開場所および展開方法に応じて、InfoPath フォームは [制限あり] セキュリティ レベルまたは [ドメイン] セキュリティ レベルを自動的に選択するように構成されます。たとえば、電子メールの添付ファイルとして展開されたフォーム テンプレートは、[制限あり] セキュリティ レベルに自動的に構成されます。ユーザーおよびデータの保護レベルを高めるため、このセキュリティ設定は常に可能な限り高い制限となり、[制限あり] で開始されます。マネージ コードを含むフォーム テンプレートがセキュリティ レベルを自動的に選択するように設定される場合、コードを実行するには、フォーム テンプレートでは常に少なくとも [ドメイン] セキュリティ アクセス レベルが必要になります。次の手順を使用すると、デザイン時にこの設定を上書きし、フォームでより適切なセキュリティ レベルを選択することができます。
フォームのセキュリティ レベルを指定する
[ツール] メニューの [フォームのオプション] をクリックします。
[フォームのオプション] ダイアログ ボックスの [セキュリティ] タブをクリックします。
[フォームのデザインに基づいて自動的にセキュリティ レベルを設定する] チェック ボックスをオフにします。
目的のセキュリティ レベルを選択します。
メモ
マネージ コード フォーム テンプレートで [制限あり] セキュリティ レベルを選択すると、フォーム コードで使用されるオブジェクト モデルのメンバにかかわらず、フォームのコードは読み込まれず、実行されません。このセキュリティ レベルは、主に電子メールを使用して展開される InfoPath フォームを対象としています。
[完全信頼] セキュリティ レベルを選択する場合は、フォームにデジタル署名するか、フォームをインストールして登録する必要があります。詳細については、「[方法] InfoPath プロジェクトを展開する方法」を参照してください。
次の表は、InfoPath セキュリティ モデルの概要を示しています。最初の列には、フォームで指定されるレベルまたは必要なレベルを示します。2 つ目および 3 つ目の列には、場所の URN 識別子または URL 識別子がフォームに含まれるかどうかを示します。その他の列には、実行が許可される項目を示します。展開のシナリオと、マネージ コード フォーム テンプレートのアクセス許可の詳細については、このトピックの後で説明する「共通言語ランタイム コードのアクセス セキュリティ機能」を参照してください。
フォームで必要なレベル | URN 識別子を含む | URL 識別子を含む | スクリプトが安全に使用できない可能性があるとマークされた ActiveX | クロス ドメイン アクセス | マネージ コード | オブジェクト モデルのセキュリティ |
---|---|---|---|---|---|---|
制限あり |
X |
ActiveX はまったく実行されない |
失敗 |
フォームは読み込まれるが、マネージ コードは実行されない |
0 |
|
ドメイン (Internet Explorer の [制限付きサイト] ゾーン) |
まったく実行されない |
まったく実行されない |
まったく実行されない |
まったく実行されない |
まったく実行されない |
まったく実行されない |
ドメイン (Internet Explorer の [インターネット] ゾーン) |
X |
失敗 |
失敗 |
まったく実行されない |
0 |
|
ドメイン (Internet Explorer の [ローカル イントラネット] ゾーン) |
X |
失敗 |
ダイアログを表示する |
マネージ コードは [ローカル イントラネット] のアクセス許可により実行される |
2 |
|
ドメイン (Internet Explorer の [信頼済みサイト] ゾーン) |
X |
ダイアログを表示する |
OK |
マネージ コードは [インターネット] のアクセス許可により実行される。クロス ドメイン アクセスは許可される。フォームは [信頼済みサイト] ゾーンだが、[インターネット] ゾーンのアクセス許可が適用されることに注意すること。 |
2 |
|
ドメイン (Internet Explorer の [ローカル コンピュータ] ゾーン) |
X |
X |
ダイアログを表示する |
失敗 |
マネージ コードは [ローカル イントラネット] のアクセス許可により実行される。 |
2 |
完全信頼 |
X |
X |
OK |
OK |
完全信頼 |
3 |
重要 : |
---|
上記の説明で "スクリプトが安全に使用できない可能性があるとマークされた ActiveX" 列および "クロス ドメイン アクセス" 列では、Microsoft Internet Explorer の既定のセキュリティ設定が使用されることを前提としています。ユーザーがセキュリティ設定を変更した場合、InfoPath の動作はそれに応じて変更されます。たとえば、[ローカル イントラネット] ゾーンで [ドメイン間でのデータ ソースのアクセス] を [有効にする] に設定した場合、上の表のようにクロス ドメイン アクセスを許可するかどうかを確認するダイアログ ボックスは表示されません。 |
共通言語ランタイム コードのアクセス セキュリティ機能
InfoPath マネージ コード フォーム テンプレートをコンパイルすると、フォーム コードのロジックの実装を含むプライベート マネージ コード アセンブリが作成されます。
.NET Framework では、既定でマネージ コード アセンブリはローカル マシンでの実行時に完全信頼アクセス許可が設定され、イントラネットでの実行時には完全信頼アクセス許可は与えられません。セキュリティ ポリシーをより詳細に管理し、InfoPath マネージ コード フォーム テンプレートをイントラネットから完全に信頼されたフォームとして実行するオプションを提供するため、InfoPath には次のセキュリティ アーキテクチャが実装されています。
InfoPath アプリケーションは、.NET Framework 共通言語ランタイム (CLR) をホストします。
InfoPath でホストされる CLR 内で、各マネージ コード フォーム テンプレートは異なるアプリケーション ドメインで実行されます。これは、マネージ コードを実行するための分離、アンロード、およびセキュリティの境界を備えた環境です。
InfoPath では、フォーム テンプレートに関連付けられた信頼のレベルと場所の URL に応じて、アプリケーション ドメインに既定のセキュリティ ポリシーが設定されます。
既定では、ローカル コンピュータ ([マイ コンピュータ ゾーン] コード グループ) で実行されるマネージ コード フォーム テンプレートには、完全信頼 (ローカル イントラネット ゾーンのアクセス許可) よりも低いレベルのアクセス許可が与えられます。完全信頼アクセス許可を得るには、フォームを登録するか、信頼済みの証明書を使用してデジタル署名する必要があります。
マネージ コード フォーム テンプレートのアプリケーション ドメインに設定された既定のセキュリティ ポリシーにより、InfoPath ドメイン アクセスのセキュリティ レベルと、追加の .NET セキュリティ制限が確実に実施されます。InfoPath セキュリティ システムでは、さらに柔軟性を高めるため、"InfoPath フォーム テンプレート" という名前の .NET コード アクセス セキュリティ コード グループが認識されます。このコード グループがユーザーのコンピュータに存在する場合、そのセキュリティ構成と、グループ内の子コード グループのセキュリティ構成が、アプリケーションのドメインに適用されます。
重要
InfoPath フォーム テンプレートのコード グループは、マネージ コードのフォーム コード アセンブリのみに適用されます。その結果、InfoPath マネージ コードのフォーム コードに完全信頼アクセス許可のセットを付与しても、フォーム テンプレートをインストールおよび登録またはデジタル署名していない場合 (この操作を行うと、フォーム テンプレート全体が完全に信頼されます)、フォーム コードからセキュリティ レベル 3 のオブジェクト モデルのメンバの呼び出しは失敗します。
ハッシュ、厳密な名前、または発行元の証拠を使用して、制限されたアクセス許可のセットによって構成されたアセンブリを参照するか明示的に読み込み (Assembly.Load)、フォーム テンプレート プロジェクトでのメンバシップの状態を判断する場合、アセンブリはフォーム テンプレートによって読み込まれ、実行されます。
InfoPath フォーム テンプレートのコード グループを作成し、構成する方法については、「[方法] マネージ コード フォーム テンプレートのセキュリティ設定を構成する方法」を参照してください。
次の表は、マネージ コード フォーム テンプレートに適用される展開シナリオとアクセス許可のセットの概要を示しています。
展開シナリオ | アクセス許可のセット | メモ |
---|---|---|
フォーム テンプレートがローカル コンピュータで発行され、開発者は Visual Studio を使用してフォーム コードを記述し、デバッグする。 |
ローカル イントラネットのアクセス許可のセット グローバル アセンブリ キャッシュ (GAC) にインストールされ、AllowPartiallyTrustedCallersAttribute 属性でマークされたアセンブリには、完全許可アクセス許可のセットが付与されます。 |
既定では、ローカル コンピュータから実行されるフォーム テンプレートには、完全許可アクセス許可のセットは付与されません。完全信頼アクセス許可を必要とするオブジェクト モデルのメンバの機能を使用し、呼び出すフォーム テンプレートを開発するときは、「[方法] 完全信頼が必要なマネージ コード フォーム テンプレートをプレビューおよびデバッグする方法」に記載された手順を使用することができます。 |
フォーム テンプレートがローカル コンピュータに発行され、ローカル コンピュータで完全信頼アクセス許可のセットを要求するカスタム アセンブリを参照する。 |
ローカル イントラネットのアクセス許可のセット グローバル アセンブリ キャッシュ (GAC) にインストールされ、AllowPartiallyTrustedCallersAttribute 属性でマークされたアセンブリには、完全許可アクセス許可のセットが付与されます。カスタム アセンブリには、ローカル イントラネットのアクセス許可のセットが付与されます。 |
開発者は、フォーム テンプレートのコードで使用する外部アセンブリを参照するには、InfoPath フォーム テンプレートのコード グループを使用して、フォーム テンプレートのコードで参照される外部アセンブリに完全信頼 (または適切なアクセス許可セット) を付与する必要があります。InfoPath では、グローバル アセンブリ キャッシュ (GAC) にインストールされるものを除き、外部アセンブリに関する仮定項目はありません。開発者は、マイ コンピュータ ゾーンのコード グループで付与されるアクセス許可によって既にアセンブリが信頼されている場合でも、InfoPath フォーム テンプレートのコード グループを使用して、必要なアクセス許可を明示的にアセンブリに付与する必要があります。 |
フォーム テンプレートは、ファイル共有、SharePoint フォーム ライブラリ、Web サーバーなど、ローカル イントラネットの共有された場所に発行される。 |
ローカル イントラネットのアクセス許可のセット グローバル アセンブリ キャッシュ (GAC) にインストールされ、AllowPartiallyTrustedCallersAttribute 属性でマークされたアセンブリには、完全許可アクセス許可のセットが付与されます。 |
|
フォーム テンプレートは、ファイル共有、SharePoint フォーム ライブラリ、Web サーバーなど、Internet Explorer で信頼済みサイトと指定された、ローカル イントラネット内の共有された場所に発行される。 |
インターネット アクセス許可のセット Microsoft および ECMA によって署名されたアセンブリには、完全信頼アクセス許可のセットが付与されます。 |
CLR コードのアクセス セキュリティにより、Internet Explorer で信頼済みサイトと指定されたサイトには、インターネット アクセス許可のセットのみが付与されます。InfoPath ではこのポリシーがそのまま使用されます。これは、フォーム コードにスクリプトを使用する InfoPath フォーム テンプレートとは異なります。InfoPath フォーム テンプレートでは、信頼済みサイト ゾーンに発行されるときにより高いレベルのアクセス許可が与えられます。 |
フォーム テンプレートはインターネット上の場所からダウンロードまたはコピーされる。 |
既定では、何も付与されません。フォーム テンプレートのマネージ コード アセンブリは読み込まれず、実行されません。 |
関連項目
タスク
[方法] マネージ コード フォーム テンプレートのセキュリティ設定を構成する方法