Share via


클라이언트 애플리케이션 프로세스 보안 설정

WMI 인터페이스를 호출하는 클라이언트 애플리케이션은 프로세스의 보안 수준을 제어할 수 있습니다. 모든 WMI 애플리케이션은 COM을 통해 WMI에 액세스하며 COM 함수 CoInitializeSecurity를 호출하여 프로세스에 대한 보안을 설정할 수 있습니다. WMI를 비동기 호출하는 애플리케이션 및 이벤트 소비자로 등록하는 애플리케이션은 WMI 호출 시 보안 수준을 설정합니다.

CoInitializeSecurity를 명시적으로 호출하지 않으면 COM은 레지스트리의 값을 사용하여 암시적으로 호출합니다. 그러나 레지스트리 값에는 WMI에 필요한 보안을 제공하지 않는 가장 및 인증에 대한 낮은 설정이 있을 수 있습니다. 자세한 내용은 C++를 사용하여 기본 프로세스 보안 수준 설정을 참조하세요.

WMI에 대한 비동기 액세스는 권장되지 않습니다. 비동기 콜백을 사용하면 인증되지 않은 사용자가 싱크에 데이터를 제공할 수 있습니다. 이렇게 하면 스크립트 및 애플리케이션에 보안 위험이 발생합니다. 위험을 제거하려면 반동기 또는 동기 통신을 사용하거나 클라이언트 애플리케이션에서 적절한 액세스 검사를 수행합니다. 자세한 내용은 메서드 호출을 참조하세요.

WMI 프록시(IWbemServices, IEnumWbemClassObject, IWbemCallResult 또는 IWbemRefresher)에 대한 호출은 out-of-process 포인터를 사용합니다. 기본값 및 권장 사항에 대한 자세한 내용은 IWbemServices 및 기타 프록시에서 보안 설정을 참조하세요.

다음 절차에서는 애플리케이션 프로세스에서 WMI에 대한 보안을 설정하기 위해 수행해야 하는 단계를 설명합니다.

애플리케이션 프로세스에서 WMI에 대한 보안을 설정하려면

  1. 클라이언트 애플리케이션이 실행되는 Windows 운영 체제에 필요한 보안 수준을 결정합니다.
  2. COM CoInitializeSecurity 함수를 호출하여 클라이언트 애플리케이션이 실행되는 프로세스에 대한 기본 보안을 설정합니다. 이렇게 하면 다른 애플리케이션은 애플리케이션이 실행되는 프로세스에 액세스하는 데 필요한 보안의 양을 선언합니다.
  3. 개별 프록시의 보안을 변경해야 하는 경우(예: IWbemServices에 대한 다른 호출에서) CoSetProxyBlanket을 호출합니다.
  4. 원격 하드웨어 또는 더 많은 권한이 필요한 시스템 개체를 제어해야 하는 경우 AdjustTokenPrivileges 함수를 사용하여 필요한 권한을 사용하도록 설정합니다. 프로세스에 할당되지 않은 권한은 사용하도록 설정할 수 없습니다. 자세한 내용은 프라이빗 개체에 대한 액세스 확인을 참조하세요.

기본 프로세스 보안 수준을 설정하는 방법에 대한 자세한 내용은 C++를 사용하여 기본 프로세스 보안 수준 설정VBScript를 사용하여 기본 프로세스 보안 수준 설정을 참조하세요.