コンポーネントを含む COM+ アプリケーションでロールベースのセキュリティを使用すると、コンポーネント内からプログラムによるセキュリティ機能にアクセスできます。 ロール メンバーシップを確認して、コードの特定のセクションが実行されているかどうかを判断したり、セキュリティ呼び出しコンテキスト オブジェクトを使用してセキュリティ情報にアクセスしたり、現在の呼び出しでセキュリティが有効になっているかどうかを判断したりすることができます。 これらのタスクはすべて、SecurityCallContext オブジェクトへの参照 (Microsoft Visual Basic アプリケーションの場合) または ISecurityCallContext インターフェイスへのポインター (C および Microsoft Visual C++ アプリケーションの場合) を使用して実行できます。
プログラムによるロールベースのセキュリティの詳細については、このセクションの次のトピックを参照してください。
偽装と COM セキュリティ機能
ロールベースのセキュリティを使用しない COM+ アプリケーションでコンポーネントが使用されている場合、プログラムによるロール チェックとセキュリティ呼び出しコンテキスト情報は使用できません。 ただし、COM によって提供されるプログラムによるセキュリティ機能を使用できます。 詳細については、「COM のセキュリティ」を参照してください。
COM によって提供されるセキュリティ機能のほとんどは使用できますが、CoInitializeSecurity は COM+ アプリケーションが実行されるサロゲートによって呼び出されるため、COM+ アプリケーションの一部であるコンポーネントから CoInitializeSecurity を呼び出すことはできません。 ただし、CoQueryClientBlanketなど、クライアントに関する情報を取得する他のセキュリティ関数を呼び出すことができます。
特に、セキュリティ記述子によって保護されたファイルにアクセスしたり、クライアントの ID をデータベースに伝達したりするなど、クライアントの ID を使用してリソースにアクセスする必要がある場合は、プログラムで偽装を実行できます。 これを行うタイミングと方法の詳細については、「クライアントの偽装と委任の」を参照してください。
セキュリティ機能のテスト
コンポーネントで COM+ プログラムによるセキュリティを使用する場合は、コンポーネントのセキュリティ機能をテストする準備ができたら、コンポーネントを COM+ アプリケーションに統合する必要があります。 COM+ プログラムによるセキュリティを使用するコンポーネントを COM+ アプリケーションに統合せずに実行すると、例外がスローされます。 そのため、このようなコンポーネントを COM+ 環境の一部ではないアプリケーションに正常に統合できるようにする場合は、これらの例外が適切に処理されるようにする必要があります。
セキュリティ要件の文書化
ロールベースのセキュリティを使用する COM+ アプリケーション用のスタンドアロン コンポーネントを作成する場合は、コンポーネントを COM+ アプリケーションに統合するときにセキュリティを適切に構成できるように、コンポーネントを文書化する必要があります。 たとえば、追加する必要があるロールを特定し、各ロールを割り当てる必要があるメソッドとインターフェイスを説明する必要があります。 さらに、IsCallerInRole("Teller") などのメソッドが呼び出された場合は、Tellers のみがアクセスできる機能を記述する必要があります。 また、コンポーネント全体へのアクセスを保護するためにロールが必要かどうかを指定する必要もあります。
関連トピック
-
多層アプリケーション セキュリティ の
-
COM+ でのソフトウェア制限ポリシーの使用の