WMI 인터페이스를 호출하는 클라이언트 애플리케이션은 프로세스의 보안 수준을 제어할 수 있습니다. 모든 WMI 애플리케이션은 COM을 통해 WMI에 액세스하며 CoInitializeSecurityCOM 함수를 호출하여 프로세스에 대한 보안을 설정할 수 있습니다. WMI를 비동기 호출하는 애플리케이션 및 이벤트 소비자로 등록하는 애플리케이션은 WMI 호출 시 보안 수준을 설정합니다.
CoInitializeSecurity를 명시적으로 호출하지 않으면, COM은 레지스트리의 값을 사용하여 암시적으로 이를 호출합니다. 그러나 레지스트리 값에는 WMI에 필요한 보안을 제공하지 않는 가장하기 및 인증에 대한 낮은 설정이 있을 수 있습니다. 자세한 내용은 C++사용하여 기본 프로세스 보안 수준 설정을 참조하세요.
WMI에 대한 비동기 액세스는 권장되지 않습니다. 비동기 콜백을 사용하면 인증되지 않은 사용자가 싱크에 데이터를 제공할 수 있습니다. 이렇게 하면 스크립트 및 애플리케이션에 보안 위험이 발생합니다. 위험을 제거하려면 반동기 또는 동기 통신을 사용하거나 클라이언트 애플리케이션에서 적절한 액세스 검사를 수행합니다. 자세한 내용은 메서드호출을 참조하세요.
WMI 프록시(IWbemServices, IEnumWbemClassObject,IWbemCallResult또는 IWbemRefresher)에 대한 호출은 out-of-process 포인터를 사용합니다. 기본값 및 권장 사항에 대한 자세한 내용은 IWbemServices 및 기타 프록시보안 설정을 참조하세요.
다음 절차에서는 애플리케이션 프로세스에서 WMI에 대한 보안을 설정하기 위해 수행해야 하는 단계를 설명합니다.
애플리케이션 프로세스 WMI에 대한 보안을 설정하려면
- 클라이언트 애플리케이션이 실행되는 Windows 운영 체제에 필요한 보안 수준을 결정합니다.
- COM CoInitializeSecurity 함수를 호출하여 클라이언트 애플리케이션이 실행되는 프로세스에 대한 기본 보안을 설정합니다. 이렇게 하면 다른 애플리케이션에서 애플리케이션이 실행되는 프로세스에 액세스하는 데 필요한 보안의 양을 선언합니다.
- 예를 들어 IWbemServices다른 호출과 같이 개별 프록시에서 보안을 변경해야 하는 경우 CoSetProxyBlanket호출합니다.
- 더 많은 권한이 필요한 원격 하드웨어 또는 시스템 개체를 제어해야 하는 경우 AdjustTokenPrivileges 함수를 사용하여 필요한 권한을 사용하도록 설정합니다. 프로세스에 할당되지 않은 권한은 사용하도록 설정할 수 없습니다. 자세한 내용은 프라이빗 개체대한 액세스 확인 을 참조하세요.
기본 프로세스 보안 수준을 설정하는 방법에 대한 자세한 내용은 C++ 사용하여 기본 프로세스 보안 수준 설정 및 VBScript 사용하여 기본 프로세스 보안 수준 설정참조하세요.