The Active Directory Recycle Bin을 사용하면 사용자는 삭제된 Active Directory 개체를 백업에서 복원하거나 다시 시작하지 않고도 복구할 수 있습니다.Active Directory Domain 서비스 또는 도메인 컨트롤러(DC)를 재부팅할 필요가 없습니다.
이제 Recycle Bin에서 개체 복구가 정확히 어떻게 작동하는지 살펴보고, 이어서 그 한계에 대해 논의해 보겠습니다.
엄선된 관련 콘텐츠:
AD Recycle Bin을 사용한 Active Directory 개체 복구
AD Recycle Bin이 활성화되어 있으면 개체가 삭제될 때 대부분의 속성이 일정 기간 동안 보존되어 필요 시 개체를 복원할 수 있도록 합니다. 이 기간 동안 개체는 deleted object 상태에 있습니다. (이 기간은 msDS-DeletedObjectLifetime 특성으로 정의됩니다. 기본적으로 해당 값은 tombstoneLifetime 특성의 값입니다. msDS-deletedObjectLifetime 특성의 값이 null이거나 특성이 아예 존재하지 않는 경우, tombstoneLifetime 특성의 값으로 해석됩니다. 또한 tombstoneLifetime 값이 없으면 두 값 모두 60일로 기본 설정됩니다.)
개체가 deleted object 상태로 유지되는 시간이 끝나면, 해당 개체는 recycled object 가 됩니다. recycled object는 isRecycled 특성이 추가되어 TRUE로 설정된, 무덤(tombstone)처럼 의심스러울 정도로 비슷해 보입니다. 무덤과 마찬가지로 대부분의 속성이 제거되고, tombstoneLifetime 특성에서 지정한 기간 동안 Active Directory에 남아 있습니다. 이후 Active Directory의 가비지 컬렉션에 의해 정리됩니다.
휴지통(Recycle Bin)이 활성화된 상태에서 삭제된 개체의 라이프사이클은 다음과 같습니다:
개체가 휴지통(Recycle Bin)에 들어가면 어떻게 변경되나요?
휴지통(Recycle Bin)은 삭제된(무덤 표시) 상태의 표식(tombstone)보다 더 많은 개체 특성을 보존하지만, 복원된 개체는 원래 개체와 완전히 동일하지 않습니다. 어떻게 달라지는지 살펴보겠습니다. 여기에는 삭제할 예정인 사용자 계정이 있습니다:
다음은 휴지통(Recycle Bin)에서 삭제된 개체 상태에 있는 개체입니다:
대부분의 개체 특성은 유지되지만, 몇 가지 중요한 차이점이 있습니다:
- 개체가 이동되었습니다. 해당 개체가 파티션의 Deleted Objects 컨테이너로 이동되었습니다.
- 개체의 이름이 변경되었습니다. 해당 개체의 이름이 Common-Name DEL:Object-Guid. 를 사용해 업데이트되었습니다.
- 해당 개체에는 몇 가지 새로운 특성이 있습니다. isDeleted 특성은 TRUE 값을 가지며, lastKnownParent 특성이 채워져 있습니다. 새 특성인 msDS-LastKnownRDN 가 개체의 마지막으로 알려진 상대 고유 이름(상대 distinguished name)으로 채워집니다. (이 특성을 통해 Recycle Bin은 복원 중에 원래 RDN이 잘렸더라도, 개체 이름 변경으로 인해 원래 RDN이 잘렸더라도 개체의 RDN을 올바르게 재설정할 수 있습니다).
- 두 개의 특성이 제거되었습니다. 두 특성인 objectCategory 및 sAMAccountType, 은 개체를 삭제할 때 항상 개체에서 제거됩니다. 개체를 복구하면 objectCategory 값이 개체의 objectClass 특성에서 가장 구체적인 값으로 자동 설정되고, sAMAccountType 값은 userAccountControl 값(사용자 개체의 경우) 또는 groupType 특성(그룹 개체의 경우)에서 계산됩니다.
세심한 독자라면 제가 올린 스크린샷에서 manager 와 memberOf 특성도 누락되어 있는 것을 알아챘을지도 모릅니다. 사실은 그냥 숨기고 있는 것뿐입니다. 이 두 특성은 모두 link-valued (즉, 다른 개체에 대한 참조를 포함합니다)이고, 제가 사용한 도구(LDP)는 'Return Deactivated Links'라고 이름이 잘 지어진 컨트롤을 설정하지 않는 한 비활성화된 링크를 반환하지 않습니다. 그 컨트롤을 활성화했다면 특성과 값이 스크린샷에 보였겠지만, 이 학습 포인트를 놓쳤을 것입니다.
AD 휴지통에서 개체를 복구하는 방법
Windows Server 2012 이전에는 AD 휴지통에서 개체를 복구하려면 LDAP 도구나 PowerShell을 사용해 삭제된 모든 개체를 나열한 다음, 긴 목록을 훑어 원하는 개체를 찾아내고, 이를 복원하기 위해 다른 PowerShell 명령을 사용해야 했습니다. AD 휴지통이 매우 유용하긴 했지만, 사용하기가 그리 즐겁지는 않았던 것은 사실입니다!
이제 Active Directory 관리 센터에서 휴지통 기능을 사용할 수 있습니다:
보시다시피 검색 필터를 사용하면 관심 있는 삭제된 개체를 빠르게 찾을 수 있습니다.
개체를 복원하려면 창 오른쪽의 작업 목록에서 복원 을(를) 클릭하기만 하면 됩니다. 복원된 개체는 다음과 같습니다:
Active Directory Recycle Bin의 단점
Recycling Bin은 개체 복구를 극적으로 간단하게 해주지만, 몇 가지 제한 사항이 있습니다. 개체는 비교적 짧은 기간 동안만 보관되며, 일부 속성은 손실됩니다. 또한 Recycle Bin에는 추가로 몇 가지 단점이 더 있습니다:
- Active Directory Recycle Bin을 사용하도록 설정하려면 스키마 변경이 필요합니다.따라서 Recycle Bin을 켠 후에는 전체 포리스트 복구( full-forest recovery ) 없이 끌 수 없습니다.
- Active Directory는 조금 더 커질 것입니다. AD Recycle Bin을 사용하도록 설정한 후에는 삭제된 개체가 더 많은 속성을 유지하고, 스톤(tombstones)보다 더 오래 지속됩니다. 그 결과 Active Directory는 이전보다 약간 더 많은 공간을 사용할 가능성이 큽니다.
- Recycle Bin을 사용하도록 설정하면 모든 tombstone이 삭제됩니다. Recycle Bin을 활성화했을 때 가장 큰 영향은, 포리스트 내의 모든 tombstone 개체가 즉시 존재하지 않게 된다는 점입니다. 많은 관리자가 이 결과를 힘들게(고통스럽게) 배우고 있습니다.
하지만 이러한 문제는 AD Recycle Bin을 사용하도록 설정하는 이점보다 크지 않습니다.
AD Recycle Bin 없이 Active Directory 개체 복구
AD Recycle Bin을 사용하도록 설정하는 가치(이점)를 설명하기 위해, AD Recycle Bin을 사용하지 않았을 때 AD 개체를 복구하려면 무엇이 관련되는지 살펴보겠습니다.
AD Recycle Bin이 활성화되지 않은 도메인에서 Active Directory 개체를 삭제하면, 해당 개체는 tombstone가 됩니다. 이 개체는 대부분의 속성이 제거된 상태로, 도메인의 tombstoneLifetime에 지정된 기간 동안 파티션의 Deleted Objects 컨테이너에 보관됩니다. 이 기간 동안에는 개체를 기술적으로 복구할 수는 있지만, 손실된 속성은 일반적으로 복구 불가능하다고 볼 수 있습니다. tombstoneLifetime 값에 도달하면, 개체는 가비지 컬렉션되어 존재하지 않게 됩니다. 이 라이프사이클은 아래와 같이 설명됩니다:
LDP 유틸리티의 Modify 기능을 사용해 이 tombstone을 다시 살리는 방법을 살펴보겠습니다:
- 툼스톤(tombstone)을 마우스 오른쪽 버튼으로 클릭한 다음 Modify 옵션을 선택하세요.
- “ Edit Entry” 섹션에서 Attribute 필드에 값 “isDeleted” 를 입력하고, Operation 아래에서 Delete 라디오 버튼을 선택한 다음,
- “ Edit Entry” 섹션에서 Attribute 필드에 값 “distinguishedName”을 입력하고, Values 필드에 삭제되기 이전의 개체 distinguished name을 입력한 다음, Replace 라디오 버튼( Operation 아래) 을 선택하고, Enter 버튼을 클릭하여 항목을 Entry List에 추가하세요.
제가 lastKnownParent 속성이 유용할 수 있다고 언급했던 걸 기억하시나요? 글쎄요, 삭제되기 전에 개체의 dn이 무엇이었는지 모르는 경우 이 방법을 시도해 볼 수 있습니다. 현재 dn을 가져온 다음 NULL로 종료되는 문자(“A”)와 그 오른쪽에 있는 모든 것을 lastKnownParent 속성의 현재 값으로 바꿔 보세요. - 패널 왼쪽 아래에서 Extended 옵션을 선택합니다.
- Run 버튼을 클릭하세요.
그런 다음 재생된 개체를 다시 찾아서 어떤 모습인지 확인할 수 있습니다:
보시다시피, 기술적으로는 삭제된 사용자 개체를 복구했습니다. 하지만 삭제 이전에 가지고 있던 정보의 대부분이 누락되어 있습니다.
이 문제는 (이론적으로) Active Directory에 대해 정기적인 VSS 스냅샷을 찍으면 우회할 수 있습니다. 그러면 삭제된 개체를 복구해야 할 때, 개체가 삭제되기 전에 생성된 백업을 “그냥” 찾고, NTDSUTIL로 스냅샷을 마운트한 다음, LDAP 유틸리티로 마운트된 스냅샷에 연결하여 개체를 찾아내고, 이를 … 됐습니다.
그런데 잠깐, 더 나빠집니다.
Deleted Objects 컨테이너는 영원한 것은 아닙니다. 이름 그대로의 tombstoneLifetime 속성이 CN=Directory Service,CN=Windows NT,CN-Services,CN=Configuration, ForestDistinguishedName 개체에 지정되어 있으며, 삭제된 개체가 Active Directory에서 영구적으로 제거되기까지의 일 수를 정의합니다.
의 값은 tombstoneLifetime 도메인의 포리스트 생성에 관여한 Windows Server 버전을 기준으로 합니다. 2003년보다 최신 버전의 Windows Server를 사용해 생성한 포리스트에서는 기본값이 180일(현재 Microsoft에서 권장하는 설정)로 설정됩니다. 이전 구현의 기본값은 60일입니다. 의 동작은 tombstoneLifetime 속성인데, 실제로 주목할 만하고 꽤 멋집니다. 값이 존재하면 지정된 값이 tombstone 수명입니다. 다만 값이 2보다 작으면, tombstone 수명이 기본으로 60일(Windows 2000 Server~Windows Server 2008) 또는 2일(Windows Server 2008 R2 이상)로 설정됩니다. 값이 지정되지 않으면 값은 60일입니다.
환경에서 tombstoneLifetime 값이 궁금하다면, 이 PowerShell 스크립트가 해당 값을 반환해 드립니다(AD DS 및 AD LDS 도구가 필요합니다):
(Get-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,$((Get-ADRootDSE).configurationNamingContext)" -Properties *).tombstoneLifetime
개체가 Deleted Objects 컨테이너에서 tombstoneLifetime만큼 시간을 보내면, Active Directory의 가비지 컬렉션에 의해 논리적으로 삭제됩니다. 그 시점에는 해당 개체는 사라지며 다시는 복구되지 않습니다.
Netwrix가 도와드리는 방법
AD Recycle Bin은 최근에 삭제된 개체를 복구하는 데 유용한 도구입니다. 보다 포괄적인 솔루션을 원한다면 Netwrix Identity Recovery 를 고려해 보세요. 이를 통해 백업된 개체 중 포리스트의 mdDS-DeletedObjectLifetime을 초과하여 AD Recycle Bin으로는 더 이상 복구할 수 없는 개체를 복원할 수 있습니다.
공유하기
더 알아보기
저자 소개
Kevin Joyce
제품 관리 책임자
Netwrix의 제품 관리( Product Management ) 책임자입니다. Kevin은 사이버 보안에 대한 열정이 있으며, 특히 공격자들이 조직 환경을 악용하기 위해 사용하는 전술과 기술을 이해하는 데 집중합니다. Active Directory 및 Windows 보안에 초점을 맞춰 제품 관리 분야에서 8년의 경험을 쌓아, 조직이 Identity, 인프라 및 데이터를 보호할 수 있도록 솔루션을 구축하는 데 그 열정을 더했습니다.