네임스페이스 생성 시 보안 설정

네임스페이스를 만드는 MOF(Managed Object Format) 파일은 SDDL(보안 설명자 정의 언어) 형식의 보안 설명자에 NamespaceSecuritySDDL 한정자를 포함하여 네임스페이스에 대한 보안 설명자를 정의할 수도 있습니다.

NamespaceSecuritySDDL을 사용하여 네임스페이스를 보호할 수 있습니다. 간단한 MOF 파일에서 이 한정자를 사용하여 기존 네임스페이스의 보안 설명자를 변경할 수도 있습니다. SDDL 문자열은 네임스페이스 보안 설정을 위해 WMI에서 처리되지만 문자열로 저장되지는 않습니다. 보안 설명자를 지정하지 않으면 기본 보안이 사용됩니다. 자세한 내용은 네임스페이스 보안 설명자 설정을 참조하세요.

다음 절차에서는 root\MyNamespace 네임스페이스에 대한 보안 설명자를 설정합니다. SDDL 문자열은 소유자와 그룹을 인증된 사용자로 설정하고 자식 네임스페이스에서 상속되는 DACL(임의 액세스 제어 목록)을 지정합니다. DACL을 사용하면 사용자가 데이터를 읽고, 메서드를 실행하고, 공급자 클래스에 데이터를 쓰고, 원격 액세스를 사용할 수 있는 권한 WBEM_ENABLE, WBEM_METHOD_EXECUTE, WBEM_WRITE_PROVIDER, WBEM_REMOTE_ACCESS를 허용합니다. 자세한 내용은 WMI 네임스페이스에 대한 액세스를 참조하세요.

네임스페이스 DACL을 설정하려면

  1. MOF(Managed Object Format) 파일을 만들거나 네임스페이스를 정의하는 기존 MOF 파일을 수정하여 SDDL 문자열에 NamespaceSecuritySDDL 한정자를 추가합니다.

    다음 코드 예제에서는 수정할 네임스페이스가 root\MyNamespace이고 파일 이름이 MyNamespace_security.mof임을 보여 줍니다.

    #pragma autorecover
    #pragma namespace("\\\\.\\root")
    [NamespaceSecuritySDDL ("O:BAG:BAD:(A;CI;0x60003;;;WD)")]
    Instance of __Namespace
    {
      Name = "MyNamespace";
    };
    
  2. SDDL 문자열은 대/소문자를 구분하므로 문자는 대문자로 표시해야 합니다.

    다음 코드 예제에서는 SDDL 문자열의 문자 "o" 및 "g"를 소문자로 표시하므로 Mofcomp.exe에서 오류를 반환하게 됩니다.

    #pragma autorecover
    #pragma namespace("\\\\.\\root")
    [NamespaceSecuritySDDL("o:BAg:BAD:(A;CI;0x60003;;;WD)")] 
    Instance of __Namespace
    {
      Name = "MyNamespace";
    };
    
  3. Mofcomp.exe를 실행하여 MOF 파일을 컴파일합니다.

    c:\mofcomp MyNamespace_security.mof

    C++에서 IMoFCompiler 메서드를 사용합니다.

  4. 네임스페이스 DACL을 설정하지 못한 경우 다음 오류 메시지가 발생할 수 있습니다.

    오류 설명
    WBEM_E_INVALID_PARAMETER 상속된 DACL이 없습니다. 또는 호출자가 부모 네임스페이스의 DACL 또는 SD를 위반했습니다.
    WBEM_E_ACCESS_DENIED 호출자에게 MOF에서 SDDL을 업데이트할 수 있는 권한이 없습니다.

     

네임스페이스 보안 설명자 설정

네임스페이스 액세스 권한 상수

네임스페이스 ACE 플래그 상수

보안 개체에 대한 액세스 보안 변경