보안 담요 협상

보안 담요는 프로세스의 모든 프록시 또는 특정 인터페이스 프록시에 적용되는 보안 설정을 설명하는 값 그룹입니다. 보안 담요는 다음 값으로 구성됩니다.

  • 인증 서비스
  • 권한 부여 서비스
  • 사용자 이름
  • 인증 수준
  • 가장 수준
  • 인증 ID
  • 기능
  • ACL(액세스 제어 목록)(서버만 해당)

보안 일괄 협상은 COM이 프록시를 만들 때 프록시의 보안 설정을 선택하는 데 사용하는 프로세스입니다. 이 프로세스에는 서버의 보안 담요와 클라이언트의 보안 담요를 비교하고 이러한 값을 사용하여 프록시에 적절한 기본 보안 담요를 만드는 작업이 포함됩니다. 다음 단락에서는 클라이언트와 서버의 보안 담요가 어디에서 왔는지 설명하고 COM이 클라이언트 및 서버의 보안 담요를 사용하여 프록시에 대한 보안 담요를 협상하는 방법을 설명합니다.

클라이언트와 서버는 각각 CoInitializeSecurity를 호출하여 각각의 보안 담요를 지정할 수 있습니다. 애플리케이션이 CoInitializeSecurity를 명시적으로 호출하지 않는 경우 COM은 적절한 기본값을 사용하여 애플리케이션에 대해 암시적으로 호출합니다. 이러한 기본값에 대한 자세한 내용은 COM 보안 기본값을 참조하세요.

CoInitializeSecurity에 대한 일부 매개 변수는 애플리케이션이 서버일 때 적용되고, 일부는 애플리케이션이 클라이언트일 때 적용됩니다. 애플리케이션이 서버 역할을 하는 경우 ACL, 인증 서비스/권한 부여 서비스/주체 이름 튜플 목록 및 인증 수준과 같은 매개 변수가 관련됩니다. 암시적이든 명시적이든 CoInitializeSecurity에 대한 서버의 호출은 고정된 상태로 유지되는 서버의 보안 담요를 결정합니다.

애플리케이션이 클라이언트 역할을 하는 경우 CoInitializeSecurity 에 전달된 값은 인증 수준, 가장 수준, 인증 ID 및 기능과 관련이 있습니다. CoInitializeSecurity에 대한 클라이언트의 암시적 또는 명시적 호출은 클라이언트가 원하는 보안 담요를 나타냅니다.

프록시를 만들 때 COM은 서버의 보안 담요 및 클라이언트의 보안 담요로 지정된 값을 사용하여 프록시에 적합한 기본 보안 담요를 협상합니다. COM은 클라이언트와 서버 모두에서 작동하는 인증 서비스를 선택합니다. 인증 서비스와 함께 작동하도록 권한 부여 서비스 및 보안 주체 이름이 선택됩니다. 인증 수준에서 COM은 클라이언트와 서버에서 지정한 인증 수준 중 더 높은 수준을 선택합니다. 가장 수준 및 COM에서 선택한 기능은 클라이언트에서 지정한 기능입니다. 인증 ID는 선택한 인증 서비스에 대해 클라이언트가 지정한 ID입니다.

기본 보안 담요가 계산되면 해당 값이 새로 만든 프록시에 할당됩니다. 클라이언트는 IClientSecurity::SetBlanket을 호출하여 프록시에 대한 보안 설정을 재정의할 수 있습니다. SetBlanket에 지정된 값은 협상되지 않습니다. 지정된 프록시에만 할당됩니다. 그러나 기본 매개 변수(예: RPC_C_IMP_LEVEL_DEFAULT)가 SetBlanket에 전달되는 경우 COM은 이전에 설명한 보안 담요 협상 알고리즘을 사용하여 기본 매개 변수를 계산합니다.

COM의 보안