המדריך המלא ל-Active Directory Recycle Bin מערכת Windows Server 2008 R2 מביאה עימה תכונה (Feature) חדשה בשם Active Directory Recycle Bin, השימוש בתכונה זו מאפשר לנו להימנע ממצבים קודמים בהם היינו זקוקים ל- Authoritative Restore.
מדריך מאת נתנאל בן-שושן
מערכת Windows Server 2008 R2 מביאה עימה תכונה (Feature) חדשה בשם Active Directory Recycle Bin, השימוש בתכונה זו מאפשר לנו להימנע ממצבים קודמים בהם היינו זקוקים ל- Authoritative Restore. ה-Recycle Bin הינו קיצור לטובת שחזור אובייקטים שונים דוגמת חשבונות משתמשים, מחשבים, קבוצות וכיוצא בזה. ניתן להשתמש ב- Powershell לטובת שחזור אובייקטים שנמחקו מן ה- Directory (כאשר לאובייקט המיוחס ישוחזרו כלל ההרשאות שהיו לו, הקבוצות בהן היה חבר, Attributes שמיוחסים ומקושרים לאובייקט וכיוצא בזה), כמו כן, ארגונים ומפתחים עצמאיים מספקים ברחבי הרשת מימוש גראפי (GUI) לתכונה זו. מאמר זה סוקר את תכונה זו, מסביר כיצד Active Directory Recycle Bin פועל "מאחורי הקלעים" וכיצד לעבוד עימה.
איך Active Directory Recycle Bin פועל?ה- Active Directory Recycle Bin מאפשרת לך לבצע שחזור מיידי של אובייקטים מבלי לבצע Authoritative Restore או שימוש בגיבויי ה- System State וכלי גיבוי צד שלישי או תוספים. השימוש בתכונה זו נעשה תודות לשימוש ב- 4 Attributes בולטים (קיימים עוד Attributes אשר קשורים ל- Active Directory Recycle Bin אך החלטתי להתמקד בשניים חדשים ושניים קיימים, מידע נוסף אודות השינויים הנעשים ל- Schema ניתן לקרוא בקישור הבא, כולל כלל ה- Attributes אשר יש להם יד בדבר ה- Recycle Bin):
•isDeleted – ה- Attribute ששמו isDeleted קיים כבר מ- Windows 2000 Active Directory, קיים בכל אובייקט ולמעשה, תפקידו הוא לציין האם האובייקט נמחק וניתן לשחזור.
•tombstoneLifetime – ה- Attribute ששמו tombstoneLifetime קיים אף הוא מ- Windows 2000 Active Directory, קיים בקונטיינר של CN=Directory Service,CN=Windows NT, CN=Services, CN=Configuration, DC=ben-shushan,DC=local (כאשר במקום ben-shushan.net יש לציין את שם הדומיין שברשותכם), תפקידו של ה- Attribute הנ"ל להגדיר את תקופת הזמן שלאחריה אובייקטים שנמחקו לא ניתנים לשחזור.
•msDS-deletedObjectLifetime – ה- Attribute ששמו msDS-deletedObjectLifetime הינו חדש ומגיע אך ורק עם Windows Server 2008 R2 Active Directory, קיים בקונטיינר של CN=Directory Service,CN=Windows NT, CN=Services, CN=Configuration, DC=ben-shushan,DC=net (כאשר במקום ben-shushan.net יש לציין את שם הדומיין שברשותכם), תפקידו למעשה הוא להגדיר את תקופת הזמן שלאחריה אובייקטים שנמחקו יהיו ניתנים לשחזור.
•isRecycled – ה- Attribute ששמו isRecycled הינו חדש ומגיע אך ורק עם Windows Server 2008 Active Directory, קיים בכל אובייקט לאחר שעבר תהליך של מחזור (Recycled object). תפקידו בעצם לציין האם האובייקט נמחק אך לא ניתן לשחזור.
לאחר שביארתי את מספר האובייקטים החשובים להבנת התרחיש, נעבור לתרחיש עצמו:
בדומיין ben-shushan.local קיים חשבון משתמש בשם Netanel Ben-Shushan, אשר ממוקם תחת CN=Netanel Ben-Shushan,OU=Accounts,OU=Corporate Network,DC=ben-shushan,DC=local (בשפה פשוטה, תחת הדומיין קיימת OU, יחידה ארגונית, בשם Corporate Network בה נמצאת עוד OU בשם Accounts ובה נמצא המשתמש Netanel Ben-Shushan).
חשבון משתמש אדמיניסטרטיבי (לדוג' ה- Administrator) מוחק את חשבון המשתמש של Netanel Ben-Shushan. כעת, חשבון המשתמש של Netanel Ben-Shushan מועבר ל- CN=Deleted Objects,DC=ben-shushan,DC=local.
כעת, מה שקורה ל- Netanel Ben-Shushan הוא שה- Attribute בשם isDeleted מקבל את הערך של True (עקב תהליך המחיקה שמצויין מעלה). בנקודה זו האובייקט Netanel Ben-Shushan מחוק לוגית וניתן לשחזור ע"י ה- Administrator כולל כלל המידע המשויך לאותו אובייקט.
משך הזמן שהאובייקט Netanel Ben-Shushan ניתן לשחזור נקבע על-פי הערך שקיים ב- Attribute שהוזכר טרם לכן, בשם msDS-deletedObjectLifetime; כברירת מחדל, ערכו של Attribute זה הינו שווה לערך ה- Attribute ששמו tombstoneLifetime (כמובן שערכים אלו ניתנים לשינוי ידנית על-ידי ה- Administrator או בעל הרשאות מתאימות לעריכת Attributes ב- Directory). ערך ברירת המחדל של tombstoneLifetime ממערכת Windows Server 2003 הוא 180 ימים. מידע נוסף אודות ה- Tombstone Lifetime ניתן לקרוא ב- KB רשמי של מיקרוסופט בנושא כאן.
לאחר שמשך הזמן שנקבע ב- msDS-deletedObjectLifetime (משך החיים של אובייקט מחוק) חולף, באובייקט Netanel Ben-Shushan ה- Attribute ששמו isRecycled מקבל את הערך True (עקב תפוגת הזמן אשר הוקצתה ב- msDS-deletedObjectLifetime) ה- Attribute שהוזכר קודם לכן, isDeleted נשאר עם הערך הקודם של True; והאובייקט עדיין נמצא תחת CN=Deleted Objects,DC=ben-shushan,DC=local.
בשלב זה, האובייקט ממוחזר ואינו ניתן לשחזור, כמו כן, האובייקט כבר אינו מכיל את המידע שקשור לגביו דוגמת הרשאות ו- Attributes נלווים. בשלב זה בעצם הוא מדווח לשאר ה- Domain Controllers כי הוא Tombstone.
לאחר שמשך הזמן שנקבע ב- tombstoneLifetime (משך החיים של Tombstone) חולף, האובייקט נמחק פיזית מן NTDS.DIT (זהו ה- Database של ה- Directory) באמצעות Garbage Collection.
מצ"ב תמונה להמחשת התהליך שתואר למעלה:
הכנת הקרקע ל- Active Directory Recycle Bin והפעלת תכונה זולאחר שהוצג בפניכם הקונספט של Active Directory Recycle Bin אציין כי בכדי להשתמש בתכונה זו עליכם:
•להרחיב את ה- Schema של הדומיין ל- Windows Server 2008 R2, ניתן לבצע פעולה זו באמצעות כלי ה- ADPrep.
•לוודא כי ברמת ה- Forest וה- Domain ה- Domain Controllers מריצים אך ורק Windows Server 2008 R2.
•לוודא כי ה- Forest וה- Domain Functional Levels ברמת Windows Server 2008 R2.
לאחר שביצעת את המהלכים שצוינו מעלה, תוכל לאפשר את תכונת ה- Active Directory Recycle Bin.
כל מה שעלייך לעשות הוא להתחבר ל- Domain Naming Master Domain Controller עם חשבון בעל הרשאות Enterprise Admin ולפעול על-פי ההוראות הבאות:
1.פתח את PowerShell.
2.הקלד את הפקודה Import-Module activedirectory ולחץ Enter.
3.הקלד את הפקודה Enable-ADOptionalFeature 'Recycle Bin Feature' –Scope ForestOrConfigurationSet –Target ben-shushan.local (כאשר במקום ben-shushan.local יש לציין את שם הדומיין שברשותך) ולחץ על Enter.
4.תתקבל הודעה אשר מזהירה אודות התהליך ומבקשת ממך לאמת את התהליך, חשוב לציין בשלב זה כי לא ניתן לחזור אחורה לאחר לחיצה על Y או A. הפעולות שנגזרות מלחיצה על Y או A הן שלא ניתן להחזיר את ה- Forest/Domain Functional Levels בחזרה ל- Windows Server 2008 במקרה הצורך (עקב לדוג' תאימות לאחור וכו'). לכן וודאו שאתם מודעים להשלכות.
שיחזור באמצעות PowerShellלאחר שאיפשרנו את Active Directory Recycle Bin נוכל באמצעות PowerShell לשחזר אובייקטים בקלות.
בתרחיש הנ"ל מחקתי את האובייקט Itamar Melamed מן ה- Directory שלי וברצוני לשחזר אותו.
תחילה נפתח את PowerShell ונפעל על-פי הצעדים הבאים:
1.הקלד ב- PowerShell את הפקודה הבאה, אשר מטרתה היא להציג את כלל האובייקטים שנמחקו עם ה- Attributes הרלוונטים לגביהם:
Get-ADObject -filter 'isdeleted -eq $true -and name -ne "Deleted Objects"' -includeDeletedObjects -property *
2.הקלד את הפקודה Get-ADObject -Filter 'samaccountname -eq "itamarm"' -IncludeDeletedObjects | Restore-ADObject, פקודה זו בעצם מאפשרת לבצע סינון של האובייקט לפי ה- SAM Account Name שלו אשר שווה ל- itamarm (ניתן לראות את ה- SAM Account Name תחת sAMAccountName בתצלום העליון) ולשחזר אותו באמצעות העברת הפלט מהפקודה הראשונה לפקודה ל- Restore-ADObject, הפקודה השנייה אשר מוצגת לאחר ה- Pipeline.
3.כעת האובייקט ישוחזר למקומו ב- Directory.
שיחזור באמצעות כלים צד ג'קיימים מגוון כלים שונים אשר מממשים בצורה גראפית את Restore-ADObject ו- Get-ADObject ופקודות PowerShell נלוות לממשק גראפי נוח לשימוש.
דוגמא לתוכנה שכזו היא ADRecycleBin של Overall Solutions אשר ניתנת להורדה חינם מהקישור הבא.
ניתן
באמצעות ADRecycleBin לראות בקלות את האובייקטים שנמחקו מן ה- Directory כולל הפרטים וה- Attributes למיניהם אשר משויכים לאובייקט באמצעות לחיצה על Load Deleted Objects. לאחר צפייה באובייקטים שנטענו ניתן לסמן את האובייקט המיוחס לשחזור וללחוץ על Restore Checked Objects בקלות למיקומם ב- Directory.
לסיכוםתכונת ה- Active Directory Recycle Bin הוצגה במאמר זה, חשוב לציין כי היא אינה מהווה תחליף לתוכנה לגיבוי ה- System State וה- Directory בפרט. קיימות באינטרנט מגוון תוכניות אשר מממשות בצורה גראפית את Active Directory Recycle Bin, מאמר זה הציג תוכנית שכזו וכן, הציג צורת עבודה אחת מיני רבות בעבודה מול PowerShell. מידע נוסף אודות Active Directory Recycle Bin ניתן לקרוא ב- Step-by-Step של חברת מיקרוסופט.
.