다음을 통해 공유


활성화 보안 끄기

일반적으로 활성화는 기본 보안 설정을 사용합니다. 그러나 활성화 함수에 전달되는 COSERVERINFO 구조체의 멤버인 COAUTHINFO 구조를 지정하여 활성화 보안을 제어할 수 있습니다. 클라이언트가 COAUTHINFO 구조에서 RPC_C_AUTHN_LEVEL_NONE 인증 수준을 지정하는 경우 인증이 시도되지 않습니다. 그렇지 않으면 보안 활성화가 시도되고 인증에 실패하면 활성화가 실패합니다.

클라이언트가 명시적 COAUTHINFO 구조를 지정하지 않고 대신 포인터를 NULL로 설정하는 경우 COM은 클라이언트 인증을 시도합니다. 클라이언트를 인증할 수 없는 경우 COM은 시작 권한 보안 설명자를 확인하여 모든 사용자에 대한 액세스를 허용하는 NULL DACL 또는 ACL이 있는지 확인합니다. 이 검사 성공하면 서버가 시작됩니다. 따라서 클라이언트가 COAUTHINFO구조를 지정하지 않더라도 서버에서 허용하는 경우 안전하지 않은 활성화가 발생할 수 있습니다.

참고

인증되지 않은 네트워크 사용자가 COM 애플리케이션을 실행할 수 있도록 하려면 애플리케이션 역할에 익명 사용자가 포함되어야 합니다. Windows Server 2003부터 기본적으로 익명 사용자는 모두 그룹에 포함되지 않습니다.

 

서버에서 허용하는 경우 보안되지 않은 활성화가 결국 발생하더라도 클라이언트가 활성화 보안을 명시적으로 해제하려는 이유는 무엇인가요? 클라이언트가 보안 검사를 원하지 않거나 필요로 할 때 활성화 보안을 명시적으로 해제하면 성능이 향상되기 때문입니다.

활성화 보안을 명시적으로 해제하려면 다음 작업을 수행해야 합니다.

  • 클라이언트는 활성화 함수에 제공된 COSERVERINFO 구조체의 멤버인 COAUTHINFO 구조체에서 RPC_C_AUTHN_LEVEL_NONE 인증 수준을 지정해야 합니다.
  • 클라이언트는 활성화 함수에 제공된 COSERVERINFO 구조체의 멤버인 COAUTHINFO 구조체에서 RPC_C_IMP_LEVEL_IMPERSONATE 가장 수준을 지정해야 합니다. 이 값이 전달되지 않으면 RPC_S_SERVER_UNAVAILABLE.
  • 서버는 기본 시작 권한에 대해 모두를 지정해야 합니다. 이 작업을 수행하는 권장 방법은 다음과 같이 Dcomcnfg.exe 사용하는 것입니다.
    1. Dcomcnfg.exe를 실행합니다.
    2. 애플리케이션 페이지에서 서버를 나타내는 애플리케이션을 선택합니다. 속성 단추를 클릭하거나 선택한 애플리케이션을 두 번 클릭합니다.
    3. 보안 속성 페이지에서 사용자 지정 시작 권한 사용 단추를 클릭합니다.
    4. 시작 권한 영역에서 편집 단추를 클릭합니다.
    5. 레지스트리 값 사용 권한 대화 상자에서 추가 단추를 클릭합니다.
    6. 목록 상자에서 모든 사용자에 대한 항목을 선택합니다.
    7. 액세스 유형 목록 상자에서 시작 허용을 선택합니다.
    8. 확인 단추를 클릭합니다.

참고

Windows Server 2003에서 COM+ 시스템 애플리케이션의 인증 기능에는 EOAC_DISABLE_AAA 값이 포함됩니다. AAA(activat-as-activator) 활성화를 사용하지 않도록 설정하는 이 값은 시스템 애플리케이션을 시작할 때 CoInitializeSecurity 호출에 사용됩니다. 인증 기능을 EOAC_DISABLE_AAA 설정하면 권한 있는 계정(예: LocalSystem)으로 실행되는 애플리케이션이 해당 ID가 신뢰할 수 없는 구성 요소를 시작하는 데 사용되지 않도록 방지할 수 있습니다.

 

통화 보안 끄기