דילוג לתוכן הראשי
AD Academy
Delegation ב־Active Directory
בינוני12 דקותעודכן לאחרונה: נושא 1 מתוך 4

מהי Delegation

למה שרת צריך להתחזות למשתמש, ומה זה אומר מבחינת אבטחה.

לא הושלם

מה תלמדו כאן

  • שלושת הסוגים
  • איך מוצאים חשבונות עם Delegation
  • למה שרת צריך להתחזות למשתמש, ומה זה אומר מבחינת אבטחה.

(האצלה) מאפשרת לשירות לפעול בשם המשתמש שהתחבר אליו. דוגמה קלאסית: שרת Web מקבל בקשה מהמשתמש, וצריך לגשת בשמו לשרת SQL. בלי Delegation שרת ה־Web ניגש ל־SQL בזהות שלו עצמו — וההרשאות של המשתמש לא נאכפות.

שלושת הסוגים

  • — השרת מקבל את ה־ המלא של המשתמש ויכול להתחזות לו מול כל שירות. הסוג הישן והמסוכן ביותר.
  • (KCD) — השרת יכול להתחזות למשתמש רק מול רשימת מוגדרת מראש (msDS-AllowedToDelegateTo).
  • Resource-Based () — משאב היעד מחליט מי רשאי להתחזות אליו (msDS-AllowedToActOnBehalfOfOtherIdentity).

שלוש שכבות מהמסוכן לבטוח: Unconstrained — השרת מקבל TGT מלא ויכול להתחזות לכל שירות בדומיין. Constrained (KCD) — ההאצלה מוגבלת לרשימת SPN במאפיין msDS-AllowedToDelegateTo. Resource-Based (RBCD) — המשאב עצמו מחליט מי רשאי להתחזות, דרך msDS-AllowedToActOnBehalfOfOtherIdentity. ככל שההיקף צר יותר, שטח התקיפה קטן יותר.

איך מוצאים חשבונות עם Delegation

# חשבונות עם Unconstrained Delegation
Get-ADComputer -Filter {TrustedForDelegation -eq $true} -Properties TrustedForDelegation

# חשבונות עם Constrained Delegation
Get-ADObject -Filter {msDS-AllowedToDelegateTo -like "*"} -Properties msDS-AllowedToDelegateTo
powershell
ארכיטקטורה ותיאוריה — מתחת למכסה המנוע

נולדה מבעיית ה־Double Hop: שרת ווב מקבל כרטיס של המשתמש, אבל הכרטיס תקף רק לשירות הווב עצמו. כדי לגשת בשם המשתמש ל־SQL בשרת אחר, נדרשת רשות מפורשת להתחזות.

  • S4U2Self — השירות מבקש מה־KDC כרטיס אל עצמו בשם משתמש כלשהו.
  • S4U2Proxy — השירות משתמש בכרטיס הזה כדי לבקש כרטיס לשירות היעד.
  • TrustedForDelegation / TrustedToAuthForDelegation — דגלים ב־userAccountControl שקובעים מה מותר.
  • msDS-AllowedToDelegateTo — רשימת ה־ שאליהם מותר להתחזות ().
  • msDS-AllowedToActOnBehalfOfOtherIdentity — ההיפוך: היעד מגדיר מי רשאי ().
הגדרה מעשית (PowerShell / GUI)
# מיפוי כל סוגי ה-Delegation בדומיין
Get-ADObject -LDAPFilter '(|(msDS-AllowedToDelegateTo=*)(userAccountControl:1.2.840.113556.1.4.803:=524288)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))' -Properties samAccountName,msDS-AllowedToDelegateTo

# חשבונות רגישים - חסימת התחזות מוחלטת
Set-ADUser -Identity da_admin -AccountNotDelegated $true
Add-ADGroupMember -Identity 'Protected Users' -Members da_admin
powershell
תרחישי אמת בארגון
  • IIS + SQL: אפליקציה פנימית שרצה תחת זהות המשתמש מול בסיס הנתונים.
  • SharePoint ו־Reporting Services — צרכני קלאסיים.
  • מדפסות ושרתי קבצים ישנים שהוגדרו Unconstrained לפני שנים ונשכחו — חוב אבטחה נפוץ.
אבחון ופתרון תקלות
  • אין לשירות היעד → S4U2Proxy נכשל עם KDC_ERR_S_PRINCIPAL_UNKNOWN.
  • חבר ב־Protected Users או מסומן Sensitive → ההתחזות תיחסם בכוונה.
  • בדיקה בזמן אמת: klist על השרת האמצעי — האם מופיע כרטיס forwardable ליעד?
klist purge; klist get MSSQLSvc/sql01.corp.com:1433
bash
מילון מונחים ושורת פקודות מהירה
  • Double Hop — משתמש → שרת א' → שרת ב'.
  • UAC bit 524288 (0x80000) = Unconstrained.
  • UAC bit 16777216 (0x1000000) = Protocol Transition.
  • Protected Users = הגנה גורפת מפני התחזות ו־.

בדוק את עצמך

מה מטרת ה־Delegation ב־AD?

העמוד הזה עזר לך?