拡張保護モード (EPM) のサポート

Internet Explorer 10 では、Microsoft ActiveX コントロールはデスクトップ用 Internet Explorer にのみ読み込まれた後、ユーザーの同意、グループ ポリシー、他の承認メカニズムを通じてのみ読み込まれます。 ActiveX コントロールは、読み込まれると Internet Explorer プロセス内で実行され、ブラウザーで設定されているセキュリティ制限が適用されます。

拡張保護モード (EPM) を有効にすると、ActiveX コントロールは EPM をサポートしている場合にのみ読み込まれて実行されます。 そのため、ActiveX コントロールは EPM によって適用されるセキュリティ制限を認識して応答する必要があります。 ここでは、ActiveX コントロールが EPM をサポートするために必要な事柄について説明します。

拡張保護モードの概略

拡張保護モード (EPM) では、Windows セキュリティ モデルの 3 つの主な機能が活用されます。

  • 64 ビット プロセスにより、拡張メモリ保護他のセキュリティ強化が有効になります。

  • 整合性レベルにより、信頼できないアプリケーションが機密性の高いシステム オブジェクトを変更できなくなります。信頼できないアプリは (IE など) は、整合性の低いオブジェクトと見なされ、整合性の低いオブジェクトのみ変更できます (ただし、整合性が低いアプリは整合性が高いオブジェクトを読み取ることができます)。

  • AppContainer は、アプリと残りのシステムの間にサンドボックスを作成します。 また、AppContainer はアプリが使うことができる機能を制御する機能を定義します。 アプリは、承認された機能を超えたセキュリティ設定が可能なオブジェクトにアクセスするために、読み取りや書き込みを行うことはできません。 Windows API のほぼすべてのオブジェクトは、セキュリティ設定が可能なオブジェクトと考えられるため、アクセスが明示的に許可されていない限り API オブジェクトへのアクセス (読み取りと書き込み) がブロックされることを意味します。 そのため、特定の AppContainer に承認されたリソースの悪用が成功した場合の影響も AppContainer により制限されます。

    IE は、2 つの AppContainer プロセスのいずれかで実行されます。

    • ほとんどのコンテンツは、信頼できないと見なされるため、次の機能に制限されます。
      • internetClient
      • sharedUserCertificates
      • location
      • microphone
      • webcam
    • 信頼されたコンテンツには、信頼できないコンテンツと同じ機能に加えて、次の 2 つの機能があります。
      • privateNetworkClientServer
      • enterpriseAuthentication

    Windows 8 のセキュリティ モデルは、最小限の特権の原則に基づいています。 リソースへのアクセスが明確に許可されていない場合、そのリソースにはアクセスできません。 読み取りアクセスは書き込みアクセスと異なるため、必要なアクセス形式を両方とも要求することを忘れないでください。 読み取りが許可されないリソースへの書き込みアクセス権を持つことも可能です。

      特定の URI に関連付けられている信頼は、ブラウザーの構成、リソースへのアクセスに使われるスキーム、ベースとなるネットワーク プロファイルに応じて異なります。

    拡張保護モードの詳しい説明については、IEInternals の保護モードに関するページをご覧ください。

EPM がアクティブなときに ActiveX コントロールを読み込む

ActiveX コントロール (ツール バーやブラウザー ヘルパー オブジェクトを含む) をインストールするときは、次の手順に従ってコントロールで拡張保護モードがサポートされることを確認します。

  1. 32 ビットと 64 ビットのバイナリをインストールします。
  2. ActiveX コントロールを AppContainer と互換性のあるコントロールとして登録します。 これを行うには、コントロールを CAT_ID AppContainerCompatible ({59fb2056-d625-48d0-a944-1a85b5ab2640}) COM コンポーネント カテゴリに登録します。 C++ からこれを行う 1 つの方法を次に示します。
    
    DEFINE_GUID(CATID_AppContainerCompatible, 0x59fb2056,0xd625,0x48d0,0xa9,0x44,0x1a,0x85,0xb5,0xab,0x26,0x40);
    
    
    

ActiveX コントロール コードを更新して EPM をサポートする

拡張保護モードがアクティブなときに ActiveX コントロールを読み込むことができるようになると、EPM のサポートが実際に機能し始めます。 この時点で、コントロールをテストして問題 (多くは認証の失敗が原因です) を解決する必要があります。 問題を最も明確に示すのは、"アクセス拒否" エラーです。これは、アクセスが許可されないリソースにコントロールがアクセスしようとしたことを意味します。

ActiveX コントロールにより実行できるタスクが多数あることを考えると、具体的なトラブルシューティング手順のチェック リストを用意することはほとんど不可能です。 一般に、プロセス監視ユーティリティや付属のデバッガーを使って認証の失敗を特定し、それをコード内の特定のステートメントにマップし直すことができます。こうすると、次の調査手順を決めることができます。

EPM が無効なときにコントロールが機能する場合、IE AppContainer をサポートしていないリソースにアクセスしようとしていることを意味する可能性があります。 場合によっては、リソースのセキュリティ アクセス制御リスト (SACL) を更新して IE AppContainer のセキュリティ ID (SID) を格納することにより、問題を解決できることがあります。

それ以外の場合、状況によっては、オブジェクト ハンドルを開くときにコードを変更して追加のアクセス特権を要求する必要があります。

次のリンクでは、ActiveX コントロールにより実行される多くの一般的なタスクについて説明されています。これらをガイドラインとして使ってください。

このセクションの内容

トピック説明

AppContainers へのリソース アクセスの許可

セキュリティ設定が可能なリソースのaccess control list (ACL) を変更して、Internet Explorer AppContainer からのアクセスを許可できます。

整合性レベルと分離の決定

ActiveX コントロールは、現在の整合性レベルや分離レベルの判断が必要なことがあります。 これは、次に示すようにプロセス トークンを調べることで行うことができます。

セキュリティ設定が可能なオブジェクトの作成とオープン

セキュリティ設定が可能なオブジェクトへのアクセスを取得するには (読み取り、書き込み、またはそれ以外)、それらのリソースへのハンドルを開くときに適切なパラメーター値を渡す必要があります。 これを行うには、以下の例を使います。

 

 

 

表示:
© 2014 Microsoft