다음을 통해 공유


RPC_SECURITY_QOS_V4_A 구조체(rpcdce.h)

RPC_SECURITY_QOS_V4 구조는 바인딩 핸들에서 버전 4 보안 서비스 품질 설정을 정의합니다. Windows 버전의 버전 가용성에 대한 설명 을 참조하세요.

구문

typedef struct _RPC_SECURITY_QOS_V4_A {
  unsigned long Version;
  unsigned long Capabilities;
  unsigned long IdentityTracking;
  unsigned long ImpersonationType;
  unsigned long AdditionalSecurityInfoType;
  union {
    RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
  } u;
  void          *Sid;
  unsigned int  EffectiveOnly;
} RPC_SECURITY_QOS_V4_A, *PRPC_SECURITY_QOS_V4_A;

멤버

Version

사용 중인 RPC_SECURITY_QOS 구조체의 버전입니다. 이 항목에서는 RPC_SECURITY_QOS 구조의 버전 4를 설명합니다. 다른 버전은 RPC_SECURITY_QOS, RPC_SECURITY_QOS_V2, RPC_SECURITY_QOS_V3RPC_SECURITY_QOS_V5 참조하세요.

Capabilities

애플리케이션에 제공되는 보안 서비스입니다. 기능은 비트 OR 연산자를 사용하여 결합할 수 있는 플래그 집합입니다.

의미
RPC_C_QOS_CAPABILITIES_DEFAULT
공급자별 기능이 필요하지 않습니다.
RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH
RPC 런타임은 보안 공급자로부터 상호 인증을 요청합니다. 일부 보안 공급자는 상호 인증을 지원하지 않습니다. 보안 공급자가 상호 인증을 지원하지 않거나 서버 ID를 설정할 수 없는 경우 이러한 서버에 대한 원격 프로시저 호출이 오류 RPC_S_SEC_PKG_ERROR 실패합니다.
참고 RPC는 SSP를 사용하여 성공적으로 협상된 보안 옵션을 나타냅니다. SSP가 옵션을 협상할 수 없다고 보고하면 RPC 호출이 실패합니다. 그러나 일부 보안 공급자는 옵션이 성공적으로 협상되지 않은 경우에도 옵션의 성공적인 협상을 보고하는 것으로 알려져 있습니다. 예를 들어 NTLM은 상호 인증을 지원하지 않더라도 이전 버전과의 호환성 이유로 상호 인증의 성공적인 협상을 보고합니다. 보안 옵션과 관련하여 해당 동작을 확인하는 데 사용되는 특정 SSP를 확인합니다.
 
RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC
현재 구현되지 않습니다.
RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY
CA(인증 기관)가 서버의 신뢰할 수 있는 CA 목록에 없는 경우에도 클라이언트의 자격 증명을 수락합니다. 이 상수는 SCHANNEL SSP에서만 사용됩니다.
RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE
클라이언트의 RPC 런타임은 위임을 지원하는 보안 컨텍스트를 설정하는 오류를 무시합니다. 일반적으로 클라이언트가 위임을 요청하고 보안 시스템이 위임을 지원하는 보안 컨텍스트를 설정할 수 없는 경우 오류 RPC_S_SEC_PKG_ERROR 반환됩니다. 이 플래그를 지정하면 오류가 반환되지 않습니다.
참고 Windows XP 및 이전 클라이언트 버전에서 지원되지 않으며 Windows 2000 및 이전 서버 버전에서 지원되지 않습니다.
 
RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT
서버는 RPC 호출을 하는 컴퓨터에 로컬입니다. 이 경우 RPC는 엔드포인트 매퍼에게 ServerPrincName 또는 Sid 멤버에 지정된 보안 주체에 의해 등록된 엔드포인트만 선택하도록 지시합니다(이러한 멤버는 RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4RPC_SECURITY_QOS_V5 만 사용할 수 있음). 자세한 내용은 설명 부분을 참조하십시오.
참고 Windows XP 및 이전 클라이언트 버전에서 지원되지 않으며 Windows 2000 및 이전 서버 버전에서 지원되지 않습니다.
 

IdentityTracking

컨텍스트 추적 모드는 다음 값 중 하나입니다.

의미
RPC_C_QOS_IDENTITY_STATIC
보안 컨텍스트는 한 번만 만들어지고 클라이언트 쪽에서 변경하더라도 전체 통신 중에 수정되지 않습니다. RPC_SECURITY_QOS_V4 지정되지 않은 경우 기본 동작입니다.
RPC_C_QOS_IDENTITY_DYNAMIC
보안 컨텍스트는 클라이언트 토큰의 ModifiedId가 변경될 때마다 수정됩니다. 모든 프로토콜은 ModifiedId를 사용합니다(참고 참조).

Windows 2000: 모든 원격 프로토콜( ncalrpc 이외의 모든 프로토콜)은 LogonId라고도 하는 AuthenticationID를 사용하여 클라이언트 ID의 변경 내용을 추적합니다. ncalrpc 프로토콜은 ModifiedId를 사용합니다.

ImpersonationType

서버 프로세스가 클라이언트를 가장할 수 있는 수준입니다.

의미
RPC_C_IMP_LEVEL_DEFAULT
기본 가장 수준을 사용합니다.
RPC_C_IMP_LEVEL_ANONYMOUS
클라이언트는 서버에 식별 정보를 제공하지 않습니다. 서버는 클라이언트를 가장하거나 클라이언트를 식별할 수 없습니다. 많은 서버가 이 가장 형식의 호출을 거부합니다.
RPC_C_IMP_LEVEL_IDENTIFY
서버는 클라이언트의 ID를 가져오고 클라이언트를 가장하여 ACL(Access Control List) 검사를 수행할 수 있지만 클라이언트를 가장할 수는 없습니다. 자세한 내용은 가장 수준을 참조하세요.
참고 일부 보안 공급자는 이 가장 유형을 RPC_C_IMP_LEVEL_IMPERSONATE 동일한 것으로 간주할 수 있습니다.
 
RPC_C_IMP_LEVEL_IMPERSONATE
서버는 로컬 시스템에서 클라이언트의 보안 컨텍스트를 가장할 수 있지만 원격 시스템에서는 가장할 수 없습니다.
RPC_C_IMP_LEVEL_DELEGATE
서버가 클라이언트의 보안 컨텍스트를 가장하여 클라이언트 역할을 대신 수행할 수 있으며, 또한 서버는 클라이언트를 대신하여 작업하는 동안 다른 서버에 대한 발신 호출을 수행할 수 있습니다. 서버는 다른 컴퓨터에서 클라이언트의 보안 컨텍스트를 사용하여 로컬 및 원격 리소스에 클라이언트로 액세스할 수 있습니다.

AdditionalSecurityInfoType

u 공용 구조체에 있는 추가 자격 증명의 유형입니다. 지원되는 상수는 다음과 같습니다.

지원되는 상수 의미
0
u 공용 구조체에 추가 자격 증명이 전달되지 않습니다.
RPC_C_AUTHN_INFO_TYPE_HTTP
u 공용 구조체의 HttpCredentials 멤버는 RPC_HTTP_TRANSPORT_CREDENTIALS 구조를 가리킵니다. 이 값은 프로토콜 시퀀스가 ncacn_http 경우에만 사용할 수 있습니다. 다른 모든 프로토콜 시퀀스는 RPC_S_INVALID_ARG 반환합니다.

u

u.HttpCredentials

RPC_HTTP_TRANSPORT_CREDENTIALS 구조체 형태로 RPC에 전달할 추가 자격 증명 집합입니다. AdditionalSecurityInfoType 멤버가 RPC_C_AUTHN_INFO_TYPE_HTTP 설정된 경우에 사용됩니다.

Sid

SID(보안 식별자)에 대한 포인터입니다. SID는 ServerPrincName 멤버의 대안이며 하나만 지정할 수 있습니다. 보안 공급자가 SCHANNEL SSP인 경우 Sid 멤버를 비 NULL 로 설정할 수 없습니다. 일부 프로토콜 시퀀스는 보안을 위해 내부적으로 Sid 를 사용하고 일부는 ServerPrincName을 사용합니다. 예를 들어 ncalrpc 는 내부적으로 Sid 를 사용하며 호출자가 SID와 ServerPrincName을 모두 알고 있는 경우 SID가 전달되는 경우 ncalrpc 를 사용하는 호출이 훨씬 더 빠르게 완료될 수 있습니다. 반면, ncacn_ncadg_ 프로토콜 시퀀스는 내부적으로 ServerPrincName을 사용하므로 ServerPrincName을 제공하면 호출을 더 빠르게 실행할 수 있습니다.

EffectiveOnly

설정된 경우 서버에서 활성화된 권한만 표시됩니다.

설명

다음 목록은 다양한 Windows 운영 체제에서 QOS 버전의 가용성을 정의합니다.

  • 버전 1: Windows 2000 이상.
  • 버전 2: WINDOWS XP SP1(서비스 팩 1) 이상
  • 버전 3: Windows Server 2003 이상.
  • 버전 4: Windows Vista 이상.
  • 버전 5: Windows 8 이상.
Windows 버전도 하위 버전을 지원합니다. 예를 들어 Windows Server 2003은 버전 3을 지원하지만 버전 1과 2도 지원합니다.

클라이언트 쪽 보안 함수 RpcBindingInqAuthInfoExRpcBindingSetAuthInfoRPC_SECURITY_QOS 구조를 사용하여 바인딩 핸들에 대한 서비스 품질을 문의하거나 설정합니다.

RPC는 RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT 힌트를 지원합니다(Windows XP 및 이전 클라이언트 버전에서는 지원되지 않으며 Windows 2000 및 이전 서버 버전에서는 지원되지 않음). 이 힌트는 동적 엔드포인트 및 상호 인증이 사용되는 경우에만 사용됩니다. 또한 ncadg_ 프로토콜 시퀀스에 대해 지원되지 않습니다. 이 플래그가 ncadg_ 프로토콜 시퀀스에 사용되거나 상호 인증을 사용하지 않으면 RpcBindingSetAuthInfoEx 함수 호출에서 RPC_S_INVALID_ARG 반환됩니다. 이 플래그는 서비스 거부 공격을 방지하도록 설계되었습니다. 이 플래그를 사용하면 RPC 런타임이 ServerPrincName 또는 Sid 멤버에 지정된 보안 주체에 의해 등록된 엔드포인트에 대해서만 엔드포인트 매퍼에 요청합니다. 이렇게 하면 로컬 컴퓨터의 공격자가 RPC 클라이언트를 속여 엔드포인트 매퍼에 등록된 스푸핑 엔드포인트에 연결하지 못하게 합니다. 공격은 로컬 전용이므로(예: 많은 사용자가 있는 터미널 서버 컴퓨터에서) 플래그는 로컬로 수행된 RPC 호출에 대해서만 작동합니다.

참고 Kerberos와 같은 일부 보안 공급자는 위임-가장 유형을 지원합니다. 위임-가장 유형을 지원하는 Windows 버전에서 클라이언트가 위임을 요청했지만 보안 공급자가 위임을 제공할 수 없는 경우 RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE 플래그를 지정하지 않으면 PRC_S_SEC_PKG_ERROR 호출이 실패합니다.
 

요구 사항

   
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
머리글 rpcdce.h(Rpc.h 포함)

추가 정보

RPC_BINDING_HANDLE_SECURITY_V1

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

RPC_SECURITY_QOS_V5

RpcBindingInqAuthInfoEx

RpcBindingSetAuthInfoEx