SWbemSecurity.ImpersonationLevel 속성

ImpersonationLevel 속성은 이 개체에 할당된 COM 가장 수준을 정의하는 정수입니다. 이 설정은 WMI(Windows Management Instrumentation)가 소유한 프로세스가 다른 프로세스를 호출할 때 보안 자격 증명을 검색하거나 사용할 수 있는지 여부를 결정합니다. 가장 수준에 대한 자세한 내용은 Client_Application_Process 보안 설정을 참조하세요.

특히 모니커에서 또는 보안 개체에서 SWBemSecurity.ImpersonationLevel 속성을 설정하여 가장 수준을 설정하지 않으면 WMI는 기본 가장 수준 레지스트리 키에 지정된 값으로 기본 가장 수준을 설정합니다. 이 설정으로 충분하지 않은 경우 공급자가 요청을 서비스하지 않으며 WMI API 호출이 실패하고 wbemErrAccessDenied(2147749891/0x80041003) 오류 코드가 발생합니다.

이 구문에 대한 설명은 스크립팅 API의 문서 규칙을 참조하세요.

이 속성은 읽기/쓰기가 가능합니다.

구문

SWbemSecurity.ImpersonationLevel As Integer

속성 값

설명

DCOM 가장 수준으로 이 속성은 다음 값 중 하나로 설정할 수 있습니다.

설명
익명 호출자의 자격 증명을 숨깁니다. WMI는 실제로 이 가장 수준을 지원하지 않습니다. 스크립트가 impersonationLevel=Anonymous를 지정하면 WMI는 자동으로 가장 수준을 Identify로 업그레이드합니다. 그러나 Identify 수준을 사용하는 스크립트는 실패할 가능성이 높기 때문에 어떤 면에서는 의미가 없는 연습입니다.
Identify 개체가 호출자의 자격 증명을 쿼리할 수 있습니다. 이 가장 수준을 사용하는 스크립트는 실패할 가능성이 높기 때문에 Identify 수준에서는 일반적으로 액세스 제어 목록만 확인할 수 있습니다. Identify를 사용하여 원격 컴퓨터에 대해 스크립트를 실행할 수 없습니다.
Impersonate 개체가 호출자의 자격 증명을 사용할 수 있습니다. WMI 스크립트에서 이 가장 수준을 사용하는 것이 좋습니다. 이렇게 하면 WMI 스크립트에서 사용자 자격 증명을 사용합니다. 따라서 수행할 수 있는 모든 작업을 수행할 수 있습니다.
대리자 개체가 호출자의 자격 증명을 다른 개체가 사용하도록 허용할 수 있습니다. 위임을 사용하면 스크립트가 원격 컴퓨터의 자격 증명을 사용한 다음, 해당 원격 컴퓨터에서 다른 원격 컴퓨터의 자격 증명을 사용하도록 설정할 수 있습니다. WMI 스크립트 내에서 이 가장 수준을 사용할 수 있지만 보안 위험이 발생할 수 있으므로 필요한 경우에만 사용해야 합니다.
트랜잭션에 관련된 모든 사용자 계정 및 컴퓨터 계정이 모두 Active Directory에서 위임에 대해 신뢰할 수 있는 것으로 표시되지 않는 한 대리자 가장 수준을 사용할 수 없습니다. 이렇게 하면 보안 위험을 최소화할 수 있습니다. 원격 컴퓨터는 자격 증명을 사용할 수 있지만 원격 컴퓨터와 트랜잭션과 관련된 다른 컴퓨터가 모두 위임에 대해 신뢰할 수 있는 경우에만 사용할 수 있습니다.

언급했듯이 Anonymous 가장은 자격 증명을 숨기고 Identify는 원격 개체가 자격 증명을 쿼리하도록 허용하지만 원격 개체는 보안 컨텍스를 가장할 수 없습니다. 즉, 원격 개체는 사용자가 누구인지 알고 있지만 사용자인 “척”할 수는 없습니다. 두 설정 중 하나를 사용하여 원격 컴퓨터에 액세스하는 WMI 스크립트는 일반적으로 실패합니다. 실제로 두 설정 중 하나를 사용하여 로컬 컴퓨터에서 실행되는 대부분의 스크립트도 실패합니다.

가장을 사용하면 원격 WMI 서비스가 보안 컨텍스트를 사용하여 요청된 작업을 수행할 수 있습니다. 자격 증명에 의도한 작업을 수행할 수 있는 충분한 권한이 있는 경우 가장 설정을 사용하는 원격 WMI 요청은 일반적으로 성공합니다. 즉, WMI 외부에서 수행할 수 있는 권한이 없는 작업(원격 또는 기타)은 WMI를 사용하여 수행할 수 없습니다.

impersonationLevel을 대리자로 설정하면 원격 WMI 서비스가 자격 증명을 다른 개체에 전달할 수 있으며 이는 일반적으로 보안 위험으로 간주됩니다.

ImpersonationLevel 속성을 원하는 값으로 설정하여 SWbemServices, SWbemObject, SWbemObjectSet, SWbemObjectPathSwbemLocator 개체의 가장 수준을 설정할 수 있습니다. 다음 예제에서는 SWbemObject 개체의 가장 수준을 설정하는 방법을 보여 줍니다.

objinstance.Security_.ImpersonationLevel = _
    wbemImpersonationLevelImpersonate

모니커의 일부로 가장 수준을 지정할 수도 있습니다. 다음 예제에서는 인증 수준 및 가장 수준을 설정하고 Win32_Service 인스턴스를 검색합니다.

Set objinst = GetObject("WinMgmts:{impersonationLevel=impersonate,"& _
                         "authenticationLevel=pktPrivacy}"& _
                         "!root/cimv2:Win32_service='ALERTER'")

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista
지원되는 최소 서버
Windows Server 2008
유형 라이브러리
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemSecurity
IID
IID_ISWbemSecurity

추가 정보

SWbemSecurity

Client_Application_Process 보안 설정

WbemImpersonationLevelEnum