보안 컨텍스트 및 Active Directory Domain Services

애플리케이션이 DC(Active Directory 도메인 컨트롤러)에 바인딩하는 경우 사용자 또는 컴퓨터 또는 시스템 서비스와 같은 엔터티일 수 있는 보안 주체의 보안 컨텍스트에서 바인딩됩니다. 보안 컨텍스트는 스레드가 보안 개체에 액세스하려고 할 때 시스템에서 보안을 적용하는 데 사용하는 사용자 계정입니다. 이 데이터에는 SID(사용자 보안 식별자), 그룹 멤버 자격 및 권한이 포함됩니다.

사용자는 인증을 위한 자격 증명을 제공하여 보안 컨텍스트를 설정합니다. 자격 증명이 인증되면 시스템은 사용자 계정과 연결된 그룹 멤버 자격 및 권한을 식별하는 액세스 토큰을 생성합니다. 시스템은 디렉터리 개체에 액세스하려고 할 때 액세스 토큰을 확인합니다. 액세스 토큰의 데이터를 개체 보안 설명자가 부여하거나 거부한 계정 및 그룹과 비교합니다.

다음 메서드를 사용하여 Active Directory DC에 바인딩하는 보안 컨텍스트를 제어합니다.

  • ADsOpenObject 함수 또는 IADsOpenDSObject::OpenDSObject 메서드와 함께 ADS_SECURE_AUTHENTICATION 옵션을 사용하여 바인딩하고 사용자 이름과 암호를 명시적으로 지정합니다. 시스템은 이러한 자격 증명을 인증하고 해당 바인딩 기간 동안 액세스 확인에 사용하는 액세스 토큰을 생성합니다. 자세한 내용은 인증을 참조하세요.
  • 자격 증명을 지정하지 않고 ADS_SECURE_AUTHENTICATION 옵션을 사용하여 바인딩합니다. 사용자를 가장하지 않는 경우 시스템은 애플리케이션의 기본 보안 컨텍스트, 즉 애플리케이션을 시작한 사용자의 보안 컨텍스트를 사용합니다. 시스템 서비스의 경우 서비스 계정 또는 LocalSystem 계정의 보안 컨텍스트입니다.
  • 사용자를 가장한 다음 자격 증명을 지정하지 않고 ADS_SECURE_AUTHENTICATION 바인딩합니다. 이 경우 시스템은 가장된 클라이언트의 보안 컨텍스트를 사용합니다. 자세한 내용은 클라이언트 가장을 참조하세요.
  • ADsOpenObject 또는 IADsOpenDSObject::OpenDSObject사용하여 ADS_NO_AUTHENTICATION 옵션을 사용하여 바인딩합니다. 이 메서드는 인증 없이 바인딩하고 "모든 사람"을 보안 컨텍스트로 생성합니다. LDAP 공급자만 이 옵션을 지원합니다.

가능하면 자격 증명을 지정하지 않고 바인딩합니다. 즉, 로그온한 사용자 또는 가장된 클라이언트의 보안 컨텍스트를 사용합니다. 이렇게 하면 자격 증명 캐싱을 방지할 수 있습니다. 대체 사용자 자격 증명을 사용해야 하는 경우 자격 증명을 묻는 메시지를 표시하고, 자격 증명과 바인딩하지만 캐시하지 마세요. 여러 바인딩 작업에서 동일한 보안 컨텍스트를 사용하려면 첫 번째 바인딩 작업의 사용자 이름과 암호를 지정한 다음, 사용자 이름만 지정하여 후속 바인딩을 만들 수 있습니다. 이 기술을 사용하는 방법에 대한 자세한 내용은 인증을 참조 하세요.

일부 보안 컨텍스트는 다른 컨텍스트보다 더 강력합니다. 예를 들어 도메인 컨트롤러의 LocalSystem 계정에는 Active Directory Domain Services 대한 완전한 액세스 권한이 있는 반면 일반 사용자는 디렉터리의 일부 개체에 대한 액세스 권한만 제한됩니다. 일반적으로 애플리케이션은 덜 강력한 보안 컨텍스트가 작업을 수행하기에 충분한 경우 LocalSystem과 같은 강력한 보안 컨텍스트에서 실행해서는 안 됩니다. 즉, 애플리케이션을 별도의 구성 요소로 나눌 수 있으며, 각 구성 요소는 수행할 작업에 적합한 보안 컨텍스트에서 실행됩니다. 예를 들어 애플리케이션 설정은 다음과 같이 나눌 수 있습니다.

  • 스키마 관리자 그룹의 구성원인 사용자의 컨텍스트에서 스키마 변경 및 확장을 수행합니다.
  • 엔터프라이즈 관리자 그룹의 구성원인 사용자의 컨텍스트에서 구성 컨테이너 변경을 수행합니다.
  • 도메인 관리자 그룹의 구성원인 사용자의 컨텍스트에서 도메인 컨테이너 변경을 수행합니다.