次の方法で共有


クライアントの偽装

偽装は、分散コンピューティング環境で、サーバーがクライアント要求を他のサーバー プロセスまたはオペレーティング システムに渡す必要がある場合に便利です。 この場合、サーバーはクライアントのセキュリティ コンテキストを偽装します。 その後、元のクライアントが要求を行ったかのように、他のサーバー プロセスで要求を処理できます。

サーバーは、クライアントの代わりに呼び出しを行うときに、呼び出し元のクライアントを偽装

たとえば、クライアントはサーバー A に要求を行います。サーバー A が要求を完了するためにサーバー B にクエリを実行する必要がある場合、サーバー A はクライアント のセキュリティ コンテキストを偽装し、クライアントに代わってサーバー B に要求を行います。 サーバー B は、サーバー A のセキュリティ ID ではなく、元のクライアントのセキュリティ コンテキストを使用して、タスクを完了するかどうかを決定します。

サーバーは RpcImpersonateClient呼び出して、サーバー スレッドのセキュリティをクライアント セキュリティ コンテキストで上書きします。 タスクが完了すると、サーバーは RpcRevertToSelf呼び出すか、RpcRevertToSelfExして、サーバー スレッドに定義されているセキュリティ コンテキストを復元します。

バインディング時に、クライアントは、サーバーがクライアントを偽装する方法を指定するセキュリティに関するサービス品質情報を指定できます。 たとえば、いずれかの設定では、サーバーが偽装を許可されていないことをクライアントが指定できます。 詳細については、「サービス品質」を参照してください。

元のクライアントの偽装中に他のサーバーを呼び出す機能は、委任 呼び出されます。 委任を使用する場合、クライアントを偽装しているサーバーは別のサーバーを呼び出すことができます。また、クライアントの資格情報を使用してネットワーク呼び出しを行うことができます。 つまり、2 番目のサーバーの観点からは、最初のサーバーからの要求は、クライアントからの要求と区別できません。 すべてのセキュリティ プロバイダーが委任をサポートしているわけではありません。 Microsoft には、委任をサポートするセキュリティ プロバイダー (Kerberos) が 1 つだけ付属しています。

委任は、クライアントがリモート プロシージャ コール中にサーバーに与える特権により、危険な機能になる可能性があります。 このため、Kerberos では、相互認証が要求された場合にのみ、委任の偽装レベルでの呼び出しが許可されます。 ドメイン管理者は、委任偽装レベルで呼び出しを行うコンピューターを制限して、疑いのないクライアントが資格情報を悪用する可能性のあるサーバーへの呼び出しを行わないようにすることができます。

委任規則の 1 つの例外が存在します。ncalrpcを使用した呼び出しです。 これらの呼び出しが行われると、偽装レベルが指定されている場合でも、サーバーは委任権限を取得します。 つまり、サーバーは、クライアントの代わりに他のサーバーを呼び出すことができます。 これは、1 つのリモート呼び出しに対してのみ機能します。 たとえば、クライアント A が ncalrpc 使用してローカル サーバー LB を呼び出 場合、ローカル サーバー LB はリモート サーバー RB を偽装して呼び出すことができます。 RB はクライアント A に代わって動作できますが、RB が実行されているリモート コンピューターでのみ動作します。 LB が RB を呼び出すときに委任の偽装レベルを指定しない限り、リモート コンピューター C に対して別のネットワーク呼び出しを行うことはできません。

手記

偽装 という用語は、2 つの重複する意味を表します。 偽装の最初の意味は、クライアントに代わって動作する一般的なプロセスです。 2 つ目の意味は、偽装と呼ばれる特定の偽装レベルです。 テキストのコンテキストは、一般的に意味を明確にします。