본문 바로가기

Windows Client

Windows 2008 R2 AD Recycle Bin

AD DS(Active Directory Domain Services) 및 Active Directory AD LDS(Lightweight Directory Services) 사용자는 실수로 Active Directory 개체를 삭제하는 경우가 종종 있습니다.

Windows Server 2008 Active Directory 도메인에서는 실수로 삭제한 개체를 Windows Server 백업을 통해 작성한 AD DS 백업으로부터 복구할 수 있습니다. 정식 복원 명령인 ntdsutil 명령을 사용하여 개체를 정식 복원용으로 표시함으로써 복원된 데이터가 도메인 전체에 복제되었는지 확인할 수 있습니다. 정식 복원 솔루션은 DSRM(디렉터리 서비스 복원 모드)에서 수행해야 한다는 단점이 있습니다. DSRM에서는 복원 중인 도메인 컨트롤러가 오프라인 상태를 유지해야 합니다. 따라서 클라이언트 요청을 처리할 수 없습니다.

또한 Windows Server 2003 Active Directory 및 Windows Server 2008 AD DS에서는 삭제 표시 항목 재사용을 통해 삭제된 Active Directory 개체를 복구할 수 있습니다. Windows Server 2003 및 Windows Server 2008에서는 삭제된 Active Directory 개체가 실제로 데이터베이스에서 즉시 제거되지는 않습니다. 대신 개체의 DN(고유 이름)을 알아보지 못하도록 변경하고 개체의 연결되지 않은 값 특성을 대부분 지우며 연결된 모든 값 특성을 물리적으로 제거한 후 개체를 삭제된 개체라는 개체의 NC(명명 컨텍스트)에 있는 특수 컨테이너로 이동합니다. 이렇게 이동된 개체를 삭제 표시 항목이라고 하며 일반 디렉터리 작업에 표시되지 않습니다 삭제 표시 항목은 수명 기간 내에 언제든지 재사용할 수 있습니다. 그러면 삭제 표시 항목이 다시 활성 Active Directory 개체가 됩니다. Windows Server 2003 및 Windows Server 2008에서 기본 삭제 표시 항목 수명은 180일입니다. 삭제 표시 항목 재사용을 사용하면 도메인 컨트롤러 또는 AD LDS 인스턴스를 오프라인으로 전환하지 않고 삭제된 개체를 복구할 수 있습니다. 하지만 물리적으로 제거된 재사용 개체의 연결된 값 특성(예: 사용자 계정의 그룹 구성원)과 연결되어 있지 않아서 지워진 값 특성은 복구되지 않습니다. 따라서 삭제 표시 항목 재사용 명령은 실수로 삭제한 개체에 대한 궁극적인 해결 방안이 되지는 못합니다.

Windows Server 2008 R2에서는 기존의 삭제 표시 항목 재사용 인프라에 Active Directory 휴지통이 작성되므로 실수로 삭제한 Active Directory 개체를 보존하여 보다 쉽게 복구할 수 있습니다. 삭제 표시 항목 재사용에 대한 자세한 내용은 Active Directory 삭제 표시 항목 개체 재사용(http://go.microsoft.com/fwlink/?LinkID=125452)을 참조하십시오.

Windows Server 2008 R2의 Active Directory 휴지통은 디렉터리 서비스 중단 시간을 최소화할 수 있도록 해줍니다. Active Directory 휴지통을 사용하면 실수로 삭제한 Active Directory 개체를 보존하여 완전하게 복원할 수 있으므로, 백업에서 Active Directory 데이터를 복원하거나, AD DS를 다시 시작하거나 도메인 컨트롤러를 다시 부팅할 필요가 없습니다.

Active Directory 휴지통의 기능

Active Directory 휴지통을 사용할 경우 삭제된 Active Directory 개체의 모든 연결된 값 특성과 연결되지 않은 값 특성이 보관되고, 개체는 삭제 바로 전과 동일하게 일관된 논리적인 상태로 복원됩니다. 예를 들어 복원된 사용자 계정은 삭제 바로 전에 도메인에서 갖고 있었던 모든 그룹 구성원 자격과 해당하는 액세스 권한을 자동으로 다시 얻게 됩니다. Active Directory 휴지통은 AD DS 및 AD LDS 환경에서 모두 작동합니다.

이 기능의 대상 사용자

Windows Server 2008 R2의 Active Directory 휴지통 기능이 특히 유용할 수 있는 그룹은 다음과 같습니다.

  • Windows Server 2008 R2 얼리어답터, Windows Server 2008 R2를 평가하는 IT(정보 기술) 관리자, 계획자 및 분석가
  • 엔터프라이즈 IT 계획자 및 디자이너
  • 네트워크 및 서버 관리, IT 하드웨어 및 소프트웨어 예산 및 기술적 결정을 담당하는 IT 작업 관리자
  • Active Directory 관리자

특별 고려 사항

  • 기본적으로 Active Directory 휴지통은 사용되지 않도록 설정됩니다. Active Directory 휴지통을 사용하도록 설정하려면 먼저 AD DS 또는 AD LDS 환경의 포리스트 기능 수준을 Windows Server 2008 R2로 올려야 합니다. 그렇게 하려면 포리스트의 모든 도메인 컨트롤러 또는 AD LDS 구성 집합 인스턴스를 호스팅하는 모든 서버에서 Windows Server 2008 R2를 실행해야 합니다.
  • Windows Server 2008 R2에서 Active Directory 휴지통을 사용하도록 설정하는 프로세스는 되돌릴 수 없습니다. 해당 환경에서 Active Directory 휴지통을 사용하도록 설정한 후에는 설정을 해제할 수 없습니다.

Active Directory 휴지통의 새로운 기능

다음 다이어그램은 Active Directory 휴지통 기능을 사용하도록 설정할 경우 Windows Server 2008 R2의 새 Active Directory 개체 수명 주기를 보여 줍니다.

8eee582d-ce09-4d6b-96f8-b9e79794cc85

Windows Server 2008 R2에서 Active Directory 휴지통을 사용하도록 설정한 후 Active Directory 개체를 삭제하면 개체의 연결된 값 특성과 연결되지 않은 값 특성은 모두 유지되면서 개체가 논리적으로 삭제됩니다. 이는 Windows Server 2008 R2에서 도입된 새로운 상태입니다. 삭제된 개체는 삭제된 개체 컨테이너로 이동되고 개체의 고유 이름이 알아보지 못하도록 변경됩니다. 삭제된 개체는 삭제된 개체 수명 기간 동안 삭제된 개체 컨테이너에 논리적으로 삭제된 상태로 유지됩니다.

삭제된 개체 수명은 msDS-deletedObjectLifetime 특성 값에 따라 결정됩니다. 삭제 표시 항목 수명은 tombstoneLifetime 특성 값에 따라 결정됩니다. 기본적으로 msDS-deletedObjectLifetime 특성은 null로 설정됩니다. msDS-deletedObjectLifetime을 null로 설정하면 삭제된 개체 수명이 삭제 표시 항목 수명 값으로 설정됩니다. 기본적으로 tombstoneLifetime 특성도 null로 설정됩니다. tombstoneLifetime을 null로 설정하면 삭제 표시 항목 수명의 기본값이 180일로 설정됩니다. 언제든지 msDS-deletedObjectLifetimetombstoneLifetime 값을 수정할 수 있습니다. msDS-deletedObjectLife를 null이 아닌 값으로 설정하면 tombstoneLifetime 특성 값을 더 이상 가정하지 않습니다.

삭제된 개체 수명 기간 중에 삭제된 개체를 복구하여 다시 활성 Active Directory 개체로 만들 수 있습니다. 삭제된 개체 수명이 만료된 후에는 논리적으로 삭제된 개체가 재활용된 개체로 전환되고 대부분의 개체 특성이 제거됩니다.

삭제 수명에 대한 자료를 더 찾으면

삭제 표시란?

Active Directory가 디렉터리에서 개체를 삭제할 때 이 개체는 데이터베이스에서 물리적으로 제거되는 것이 아닙니다. 대신 Active Directory는 개체의 isDeleted 특성을 TRUE로 설정하고, 개체에서 대부분의 특성을 제거하고, 개체 이름을 변경한 다음 개체의 NC(명명 컨텍스트)에 있는 특수 컨테이너(CN=Deleted Objects)로 개체를 이동하여 개체를 삭제된 것으로 표시합니다. 이렇게 삭제된 개체를 삭제 표시라고 하며 이 개체는 일반 디렉터리 작업에 표시되지 않습니다. 삭제 표시 개체는 또한 어떠한 MMC(Microsoft® Management Console) 스냅인에도 표시되지 않으며 대부분의 LDAP(Lightweight Directory Access Protocol) 유틸리티에서도 그 존재를 인식하지 못합니다. 즉, 의도와 용도에 관계없이 모든 경우에 삭제 표시가 표시되지 않습니다. 하지만 이러한 데이터는 보이지 않을 뿐 여전히 존재합니다. 그렇다면 Active Directory는 왜 삭제 표시 또는 삭제된 개체를 데이터베이스에 보관하는 것일까요?

삭제 표시는 다른 프로세스에서는 표시되지 않지만 Active Directory 복제 프로세스에서는 표시됩니다. 삭제할 개체를 호스트하는 모든 DC에서 삭제가 수행되도록 하기 위해 Active Directory는 삭제 표시를 다른 DC로 복제합니다. 따라서 삭제 표시는 Active Directory 환경 전체에서 삭제를 복제하는 데 사용됩니다.

삭제 표시의 수명

Active Directory는 일반적으로 LDAP 삭제 프로토콜 작업 또는 SAM(Security Accounts Manager) 삭제 작업에 대한 응답으로 디렉터리에서 개체를 삭제합니다. 이 작업을 원래 삭제라고 하며 이 삭제 작업은 Active Directory 복제 프로세스가 수행하는 삭제 작업과 구분됩니다. 여기에서는 삭제 메커니즘이 다르며 TTL(Time-To-Live)이 만료될 때 Active Directory에 의해 직접 삭제되는 동적 개체는 다루지 않습니다.

Active Directory는 삭제 작업을 수신하면 먼저 검사 목록을 통해 개체 삭제가 허용되는지 여부를 확인합니다. 이 프로세스는 놀랍게도 다음 조건이 모두 true인지 확인합니다.

  • 개체의 isDeleted 특성이 아직 TRUE로 설정되어 있지 않습니다. (이미 삭제된 개체는 삭제할 수 없습니다.)
  • "개인 개체" 리소스 특정 보안 설명자 제어 플래그가 개체의 보안 설명자에 설정되어 있지 않습니다. (이는 문서화되지 않은 "기능"으로 나타납니다. 개인 개체 플래그는 보안 설명자 구조의 Sbz1 바이트의 비트 1입니다.)
  • "삭제 허용 안 함" 비트(0x80000000)가 개체의 systemFlags 특성에 설정되어 있지 않습니다.
  • 개체의 isCriticalSystemObject 특성이 TRUE로 설정되어 있지 않습니다.
  • 개체의 보안 설명자가 개체를 삭제할 사용자에게 적절한 액세스 권한을 부여합니다. (좀 더 구체적으로 말하면 사용자가 개체 자체뿐만 아니라 부모 개체에서 자식 개체를 삭제할 수 있도록 허용됩니다.)
  • 개체가 기존 명명 컨텍스트에 대한 상호 참조 개체(objectClass = crossRef)가 아닙니다.
  • 개체에 하위 개체가 없습니다. (LDAP 삭제 작업에 LDAP "트리 삭제" 제어 개체 ID가 포함된 경우 Active Directory는 isCriticalSystemObject 특성이 TRUE로 설정된 개체 이외에는 하위 개체도 자동으로 삭제합니다. 이를 통해 트리 삭제 작업에서 중요한 시스템 개체가 실수로 삭제되는 것을 방지할 수 있습니다. 물론 이들 개체는 개별적으로 삭제할 수 있습니다.)
  • 개체가 중요한 내부 개체가 아닙니다. (예를 들어 DC의 nTDSDSA 개체 또는 NC 헤드 상위 개체에 대한 자리 표시자 개체가 아닙니다.)

이러한 조건이 true이어야 하지만 Active Directory도 삭제 작업을 처리할 적절한 상태에 있어야 합니다. 예를 들어 Active Directory가 도메인 이름 변경 프로세스를 수행 중일 때는 도메인 트러스트 계정 또는 crossRef 개체를 삭제하지 않습니다.

개체를 삭제할 수 있는 것으로 판별되면 Active Directory는 개체를 삭제 표시로 전환합니다. Active Directory는 먼저 개체에서 그림 1에 명시되어 있는 특성과 삭제 표시에 유지되도록 스키마에 정의된 특성은 남겨두고 불필요한 특성을 제거합니다자세한 내용은 "개체 특성 복구" 단원을 참조하십시오. 그런 다음 개체의 RDN(상대 고유 이름)을 CN=<old RDN>\0ADEL:<objectGUID>로 변경합니다. 여기서 \0A는 ASCII 줄 바꿈 문자이고 <objectGUID>는 문자열로 표현된 objectGUID입니다. 그런 후 lastKnownParent 특성을 개체의 부모 컨테이너의 DN(고유 이름)으로 설정하고 isDeleted 특성을 TRUE로 설정합니다. 이 작업을 마친 다음 Active Directory는 개체에서 모든 정방향 및 역방향 연결 특성을 제거합니다. 마지막으로 개체의 systemFlag 특성에 "삭제 시 이동 허용 안 함" 비트가 설정되지 않은 경우 Active Directory는 개체를 NC에 대한 CN=Deleted Objects 컨테이너로 이동합니다. 이 항목에 대한 자세한 내용은 "systemFlags 특성 및 개체 동작" 추가 기사를 검색하면 된다.