COM+セキュリティの概念
COM+には、管理者が構成するサービスからコード内で呼び出すことができるAPIまで、COM+アプリケーションの保護に役立ついくつかのセキュリティ機能が用意されています。
COM+アプリケーションでは、可能な限り、コンポーネント内でセキュリティを構成するのではなく、宣言型のロールベースのセキュリティや認証などの自動セキュリティを使用することをお勧めします。 自動セキュリティを使用すると、コンポーネントの作成と管理が容易になり、アプリケーション全体のセキュリティを設計しやすくなります。また、管理用に構成されるため、アプリケーションのセキュリティポリシーを変更しやすくなります。 これらの自動セキュリティサービスを使用すると、セキュリティ関連のすべての機能をコンポーネントから除外することができます。 サービスを有効にして適切に構成すると、指定したセキュリティポリシーの適用の詳細がCOM+によって処理されます。
ただし、COM+の自動セキュリティサービスが必要なことを正確に実行しない場合は、COM+によって提供される自動セキュリティプラットフォームに基づいて拡張できます。 自動セキュリティを使用しない場合、または使用したいがアプリケーションのセキュリティ要件に合わせて構築する必要がある場合は、プログラムによってセキュリティを構成するための次のオプションがあります。
- プログラムによる役割ベースのセキュリティ。たとえば、役割のチェック。アプリケーションで役割ベースのセキュリティが有効になっている場合に使用できます。
- 偽装。クライアントのIDを使用して保護されたリソースにアクセスする場合に使用できます。
- セキュリティ呼び出しコンテキスト情報に基づく監査機能。役割ベースのセキュリティが有効になっている場合にも使用できます。
特定のアプリケーションを保護するために使用するメカニズムは、そのアプリケーションの特定の要件によって異なります。 セキュリティの選択によっては、コンポーネントの記述方法に影響を与えるものもあれば、アプリケーションの設計に大きな影響を与えるものもあります。 アプリケーションのセキュリティ戦略を実装する方法を決定する前に、全体的な設計 (パフォーマンス要件、データアクセス、物理設計) のコンテキストでセキュリティ要件を検討し、セキュリティ機能の最適な組み合わせを選択する必要があります。 プログラムによるセキュリティの実装に関する詳細は、プログラムによるコンポーネントセキュリティに関する記事を参照してください。
ここでは、COM+セキュリティのカテゴリ、機能、および問題について簡単に説明します。また、重要な各領域の詳細については、このセクションのトピックへのリンクを参照してください。
メモ
このセクションでは説明しませんが、キューに置かれたコンポーネントには、使用できるセキュリティ機能に関連する特定の問題もあります。 詳細については、キューコンポーネントのセキュリティとキューコンポーネントの開発に関する記事を参照してください。
ロールベースのセキュリティ
ロールベースのセキュリティは、COM+アプリケーションセキュリティの中心的な機能です。 ロールを使用すると、どのユーザーがどのリソースにアクセスできるかを選択(必要に応じて、メソッドレベルまで)して、アプリケーションの承認ポリシーを管理的に構築できます。 さらに、ロールは、アプリケーションできめ細かいアクセス制御が必要な場合に、コード内でセキュリティチェックを実施するためのフレームワークを提供します。
ロールベースのセキュリティは、コンポーネントへの呼び出しのチェーン内のすべての上流の呼び出し元に関するセキュリティ情報を取得できるようにする一般的なメカニズムに基づいて構築されています。 この機能は、詳細な監査とログ記録を行う場合に特に便利です。 COM+ の監査機能の説明については、セキュリティ呼び出しコンテキスト情報へのアクセスに関する記事を参照してください。
ロールベースのセキュリティと、それを使用する際に考慮すべき管理上の問題の説明については、ロール ベースのセキュリティの管理に関する記事を参照してください。
クライアント認証
クライアントがリソースにアクセスできるように承認する前に、クライアントが本人であることを確認する必要があります。 この本人確認を有効にするために、COM+には認証サービスが用意されています。 これらのサービスは、実際にはCOMとMicrosoft Windowsによってより基本的なレベルで提供されますが、COM+アプリケーションを使用すると、認証サービスを管理上有効にするだけで、アプリケーションに対して透過的に機能するようにすることができます。 認証サービスの説明については、クライアント認証に関する記事を参照してください。
クライアントの偽装と委任
場合によっては、アプリケーションがクライアントのidを使用してクライアントの代わりに作業を行う必要があります。たとえば、元のクライアントを認証するデータベースにアクセスする場合などです。 そのためには、アプリケーションでクライアントを偽装する必要があります。 COM+には、さまざまなレベルの偽装を有効にする機能が用意されています。 偽装は管理上構成されますが、アプリケーションのコンポーネントのコードで偽装のサポートを提供する必要もあります。 偽装とその使用に関する問題の説明については、クライアントの偽装と委任に関する記事を参照してください。
COM+でのソフトウェアの制限のポリシーの使用
ソフトウェアの制限のポリシーは、信頼されていないため、害を及ぼす可能性のあるコードを制限された環境で実行し、ユーザーの特権を悪用できないようにする方法を提供します。 これを行うには、ユーザーが実行できるファイルに信頼レベルを割り当てます。 たとえば、特定のシステムファイルを完全に信頼し、ユーザーの特権への無制限のアクセスを許可することができますが、インターネットからダウンロードされたファイルは完全に信頼されていないため、セキュリティの重要なユーザー特権の使用が禁止されている制限された環境でのみ実行できます。
システム全体のソフトウェアの制限のポリシーは、ローカルセキュリティポリシー管理ツールを使用して制御されます。このツールを使用すると、管理者は個々のファイルの信頼レベルを構成できます。 ただし、すべてのCOM+サーバーアプリケーションはdllhost.exeファイルで実行されます。 そのため、COM+では、各サーバーアプリケーションに対してソフトウェアの制限のポリシーを指定して、dllhost.exeファイルの制限のポリシーに依存する必要がないようにすることができます。 COM+でのソフトウェアの制限のポリシーの使用方法については、COM+でのソフトウェアの制限のポリシーの使用に関する記事を参照してください。
ライブラリアプリケーションのセキュリティ
ライブラリアプリケーションには、セキュリティに関する特別な考慮事項があります。 これらのアプリケーションはクライアントのプロセスで実行されるため、ホストプロセスによって適用されるセキュリティの影響を受けますが、プロセスレベルのセキュリティを制御することはできません。 ライブラリアプリケーションについて考慮すべき要素の説明については、ライブラリアプリケーションのセキュリティに関する記事を参照してください。
多層アプリケーションのセキュリティ
COM+アプリケーションは通常、中間層アプリケーションです。つまり、クライアントとバックエンドリソース(データベースなど)の間で情報を移動します。 セキュリティを適用する場所とその程度を決定する際には、難しい選択が必要になる場合があります。 セキュリティには、本質的にパフォーマンスのトレードオフが伴います。 データ層と中間層の両方でセキュリティチェックを適用する必要がある場合に、最も重大な問題が発生します。 考慮すべき問題については、多層アプリケーションのセキュリティに関する記事を参照してください。
関連トピック