클라이언트 가장(Client Impersonation)
가장은 서버가 클라이언트 요청을 다른 서버 프로세스 또는 운영 체제에 전달해야 하는 경우 분산 컴퓨팅 환경에서 유용합니다. 이 경우 서버는 클라이언트의 보안 컨텍스트를 가장합니다. 그런 다음 다른 서버 프로세스는 원래 클라이언트가 요청을 수행한 것처럼 요청을 처리할 수 있습니다.
예를 들어 클라이언트는 서버 A를 요청합니다. 서버 A가 요청을 완료하기 위해 서버 B를 쿼리해야 하는 경우 서버 A는 클라이언트 보안 컨텍스트를 가장하고 클라이언트를 대신하여 서버 B에 요청을 수행합니다. 서버 B는 서버 A의 보안 ID 대신 원래 클라이언트의 보안 컨텍스트를 사용하여 작업을 완료할지 여부를 결정합니다.
서버는 RpcImpersonateClient 를 호출하여 서버 스레드에 대한 보안을 클라이언트 보안 컨텍스트로 덮어씁니다. 작업이 완료되면 서버는 RpcRevertToSelf 또는 RpcRevertToSelfEx 를 호출하여 서버 스레드에 대해 정의된 보안 컨텍스트를 복원합니다.
바인딩할 때 클라이언트는 서버가 클라이언트를 가장하는 방법을 지정하는 보안에 대한 서비스 품질 정보를 지정할 수 있습니다. 예를 들어 설정 중 하나를 사용하면 클라이언트가 서버에서 가장할 수 없도록 지정할 수 있습니다. 자세한 내용은 서비스 품질을 참조하세요.
원래 클라이언트를 가장하는 동안 다른 서버를 호출하는 기능을 위임이라고 합니다. 위임을 사용하는 경우 클라이언트를 가장하는 서버는 다른 서버를 호출할 수 있으며 클라이언트의 자격 증명을 사용하여 네트워크 호출을 수행할 수 있습니다. 즉, 두 번째 서버의 관점에서 첫 번째 서버에서 들어오는 요청은 클라이언트에서 들어오는 요청과 구별할 수 없습니다. 모든 보안 공급자가 위임을 지원하는 것은 아닙니다. Microsoft는 위임을 지원하는 하나의 보안 공급자인 Kerberos만 제공합니다.
위임은 클라이언트가 원격 프로시저 호출 중에 서버에 제공하는 권한으로 인해 위험한 기능이 될 수 있습니다. 그렇기 때문에 Kerberos는 상호 인증이 요청된 경우에만 가장 수준의 위임을 사용하여 호출을 허용합니다. 도메인 관리자는 위임 가장 수준이 있는 호출이 수행되는 컴퓨터를 제한하여 의심하지 않는 클라이언트가 자격 증명을 남용할 수 있는 서버를 호출하지 못하도록 할 수 있습니다.
위임 규칙에 대한 한 가지 예외는 ncalrpc를 사용하는 호출입니다. 이러한 호출이 수행되면 가장 수준이 지정되더라도 서버는 위임 권한을 얻습니다. 즉, 서버는 클라이언트를 대신하여 다른 서버를 호출할 수 있습니다. 이는 하나의 원격 호출에 대해서만 작동합니다. 예를 들어 클라이언트 A가 ncalrpc 로컬 서버 LB를 사용하여 로컬 서버 LB를 호출하는 경우 원격 서버 RB를 가장하고 호출할 수 있습니다. RB는 클라이언트 A를 대신하여 작동할 수 있지만 RB가 실행 중인 원격 컴퓨터에서만 작동할 수 있습니다. LB가 RB를 호출할 때 대리자의 가장 수준을 지정하지 않는 한 원격 컴퓨터 C에 대한 다른 네트워크 호출을 수행할 수 없습니다.
참고
가장이라는 용어는 겹치는 두 가지 의미를 나타냅니다. 가장의 첫 번째 의미는 클라이언트를 대신하여 행동하는 일반적인 프로세스입니다. 두 번째 의미는 가장이라는 특정 가장 수준입니다. 텍스트의 컨텍스트는 일반적으로 의미를 명확히 합니다.