NetUserGetInfo 및 유사한 API를 사용하는 애플리케이션은 특정 AD 개체에 대한 읽기 액세스를 사용합니다.
이 문서에서는 NetUser 또는 NetGroup 클래스의 하위 수준 API를 사용하는 애플리케이션이 ACCESS DENIED 오류와 유사 NetUserGetInfo
하거나 NetGroupGetInfo
실패하는 문제를 설명합니다.
원래 KB 번호: 2281774
요약
NetUser 또는 NetGroup 클래스의 하위 수준 API(예: NetUserGetInfo
,, NetUserEnum
NetUserSetInfo
, NetGroupGetInfo
, NetLocalGroupGetInfo
NetGroupEnum
NetGroupSetInfo
NetLocalGroupSetInfo
, 및)를 사용하는 애플리케이션이 있습니다.NetLocalGroupEnum
이 체계에서 NetUser 클래스 API는 컴퓨터 계정을 관리하는 데도 사용됩니다.
ADSI WINNT 공급자를 호출할 때 동일한 API가 사용됩니다.
호출 계정에 대상 계정에 대한 충분한 권한이 있지만 ACCESS DENIED로 인해 이러한 API가 실패할 수 있습니다. 그 이유는 클라이언트 쪽 API 구현이 SAM(Security Account Manager) RPC API와 1:1 관계가 없기 때문입니다. 클라이언트 쪽은 Active Directory에서 추가 권한이 필요한 이러한 호출에 대한 추가 검사 및 준비를 수행합니다.
이러한 API를 사용하는 애플리케이션 중 하나는 클러스터 서비스이며 클러스터 서비스 로그에 다음이 표시됩니다.
00000a78.000021b8::2010/06/15-00:00:47.911 경고 [RES] 네트워크 이름 <cluster-resource1: 컴퓨터 계정 cluster-resource1>이 이미 비활성화되어 있는지 확인할 수 없습니다. 상태 5
이 효과의 또 다른 증상은 이러한 API 호출에 대한 DC의 Security Eventlog에 있는 과도한 감사 레코드와 호출 계정에 대한 성공 또는 실패 액세스 감사를 사용하도록 설정된 경우 아래에 인용된 개체일 수 있습니다.
자세한 정보
API 구현은 도메인 컨트롤러에서 전달되는 여러 RPC 호출을 사용하여 세션을 설정하고 도메인을 확인합니다. 읽기 액세스 권한이 있는 다음 개체에 액세스합니다.
도메인 루트 개체: 도메인 컨트롤러의 기본 도메인을 조회하고 읽기 위해 도메인을 엽니다. 이 경우 DC=contoso,dc=com과 같이 도메인에 대한 AD 개체가 열립니다.
기본 제공 컨테이너: 기본 제공 도메인의 루트 개체입니다. 호출자가 해당 존재를 확인하려고 할 때 열립니다. 따라서 호출자는 CN=Builtin, DC=contoso,dc=com 컨테이너에 대한 읽기 액세스 권한이 필요합니다.
SAM 서버 개체: 이 개체는 일반 SAM 계정 액세스 및 열거에 대한 일반 권한을 저장합니다. 특정 호출에서만 사용됩니다. 개체 이름은 cn=server,cn=system,DC=contoso,dc=com입니다.
대부분의 Active Directory 도메인에서는 인증된 사용자, 모든 사용자 또는 Windows 2000 이전 호환 액세스 그룹과 같은 일반 그룹의 멤버 자격에 따라 이러한 개체에 대한 사용 권한이 부여됩니다. 문제를 트리거하는 변경 내용은 사용자가 마지막 그룹에서 제거된 것일 수 있습니다(모든 사용자와 함께 또는 나열된 개체에 대한 사용 권한이 Active Directory 권한을 강화하기 위해 이동 중 제거되었을 수 있습니다.)
문제를 해결하는 방법은 필요한 읽기 권한을 부여하거나 이전 API 또는 ADSI WINNT 공급자 대신 LDAP를 사용하도록 애플리케이션을 변경하는 것입니다. LDAP는 위의 개체를 건드리지 않으며 대상 개체에 대해 설정할 수 있는 세분화된 권한도 지원합니다.
과도한 감사
이러한 개체에 대한 감사를 사용하도록 설정하면 개체 열기 및 닫기 및 실제 대상 개체 액세스 모두에 대해 위의 개체에 대해 최대 3개의 감사 레코드가 표시됩니다. 이벤트가 과도하게 기록되는 경우 이러한 일반 액세스 형식이 더 이상 기록되지 않도록 감사 ACL에서 항목을 제거하는 것이 좋습니다. 문제는 도메인 루트 개체와 Builtin 컨테이너가 여러 하위 개체에 상속된다는 것입니다.
이 문제를 해결하려면 기본 제공 컨테이너에서 상속을 중단하고 이 개체에만 적용되도록 상속되는 ACE를 다시 정의해야 합니다. 또한 문제 SACE가 도메인 루트 개체에 더 이상 적용되지 않도록 도메인 루트 개체의 ACE를 터치해야 합니다. 정확한 단계는 사용자 환경에서 적용되는 실제 SACL 설정에 따라 달라집니다.