次の方法で共有


キューに登録されたコンポーネントのセキュリティ

クライアントがキューに登録されたオブジェクトに対してメソッド呼び出しを行うと、実際にはレコーダーが呼び出され、メッセージの一部としてサーバーにパッケージ化されます。 リスナーはキューからメッセージを読み取り、プレーヤーに渡します。 プレーヤーは、実際のサーバー コンポーネントを呼び出し、同じメソッド呼び出しを行います。 サーバー コンポーネントは、プレイヤーがメソッド呼び出しを行うときに、(プレイヤーのセキュリティ呼び出しコンテキストではなく) クライアントのセキュリティ呼び出しコンテキストを監視する必要があります。 レコーダーはクライアントのセキュリティ呼び出しコンテキストをメッセージにマーシャリングし、プレーヤーはメソッド呼び出しを行う前にサーバーでマーシャリングを解除します。 サーバー オブジェクトに関する限り、クライアントからの直接呼び出しとプレイヤーからの間接呼び出しの間にセキュリティ コンテキストに違いはありません。 特に、呼び出されるメソッドは、送信者の特権で実行されます。

COM+ キューに登録されたコンポーネントは、COM+ アプリケーションで使用するために構築された他のコンポーネントと同様に、ロールベースのセキュリティ セマンティクスをサポートします。 そのため、キューに登録されたアプリケーションのコンポーネントは、プログラム インターフェイスを使用して、呼び出し元のロール メンバーシップ (ISecurityCallContext::IsCallerInRole) または特定のユーザー (ISecurityCallContext::IsUserInRole) を検出できます。 潜在的なセキュリティへの影響を持つキューに登録されたコンポーネントでは、これらのインターフェイスを使用して送信者の資格情報を明示的に確認することをお勧めします。

呼び出し元 ID は、メソッド呼び出しに関連付けられている ID です。 呼び出し元 ID はロールベースのセキュリティによって使用され、セキュリティ呼び出しコンテキストに存在します。 キューに登録されたコンポーネントでは、呼び出し元 ID はメッセージ キュー メッセージのデータとして表されます。 メッセージ キューは、メッセージ送信者 ID を認証します。 呼び出し元 ID とメッセージ送信者 ID が同じ場合、メッセージ キューはメッセージと呼び出し元の両方を認証します。 これは通常のケースです。

手記

COM+ キューに登録されたコンポーネントは偽装スタイルのセキュリティをサポートしていません。これにより、サーバーはクライアント ID に対応するアクセス トークンを取得し、それを使用してアクセス制御チェックを実行したり、クライアント のセキュリティ コンテキストで動作したりできます。

 

キューに登録されたコンポーネントの呼び出し元がアウトプロセス レコーダーを介してコンポーネントと対話している場合、呼び出し元とメッセージ送信者 (レコーダー) の ID が異なる場合があります。 この場合、COM+ キューに登録されたコンポーネントは、メッセージ送信者がサーバー上の QC 信頼されたユーザー ロールのメンバーであることを確認します。 さらに、アウトプロセス レコーダーでは、メッセージ キューによって認証されるため、認証証明書が必要です。

QC 信頼されたユーザー ロールのメンバーは、任意の ID を指定できます。つまり、悪意のあるメンバーは、昇格された特権でキューに登録されたコンポーネント呼び出しを実行する可能性があります。 そのため、このようなユーザーの数は絶対最小値にすることをお勧めします。

ネットワーク全体に ID を伝達するメカニズムに関連する高度な攻撃のリスクと、実行不可能な要求でキューがあふれた単純なサービス拒否攻撃のリスクがあるため、たとえば、信頼されたホストのネットワークにのみ COM+ キューに登録されたコンポーネント サービスをデプロイすることをお勧めします。 は、プライベート ネットワークまたは仮想プライベート ネットワーク上、または適切に構成されたファイアウォールの内側に置かれます。

COM+ キューに置かれたコンポーネントは DCOM 上で実行されるため、キューに置かれたアプリケーションの [プロパティ] シートの [セキュリティ] タブで[認証レベルの呼び出し 設定として パケット プライバシー を選択することで、キューに登録されたメソッド呼び出しの整合性と秘密性を保護できます。

COM+ セキュリティ

ワークグループ モードの でのセキュリティ制限の

認証プロトコル の指定