다음을 통해 공유


보안 담요 협상

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

  • 인증 서비스
  • 권한 부여 서비스
  • 보안 주체 이름
  • 인증 수준
  • 가장 수준
  • 인증 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 보안