ב־ מגדירים במפורש לאילו מותר לשרת להתחזות, דרך התכונה msDS-AllowedToDelegateTo. זה הרבה יותר בטוח מ־Unconstrained, אבל עדיין לא חף מסיכונים.
שרת Web עם KCD מבקש מה־KDC כרטיס בשם המשתמש (S4U2Self), ואז מבקש כרטיס לשירות המטרה (S4U2Proxy). ה־KDC בודק את msDS-AllowedToDelegateTo לפני שהוא מנפיק כרטיס ל־MSSQLSvc. סיכון: Service Name Substitution — רכיב השירות בכרטיס אינו נאכף, ולכן ניתן להחליף SPN לשירות אחר על אותו שרת. הגנה: הימנעות מ־Protocol Transition, שימוש ב־gMSA, ולא להאציל לחשבונות Tier 0.
שני מצבים
- Use only — נדרש שהמשתמש יתאמת מול השירות ב־Kerberos (S4U2Proxy בלבד).
- Use any authentication protocol (Protocol Transition) — השירות יכול להנפיק כרטיס בשם המשתמש גם בלי שהמשתמש התאמת ב־ (S4U2Self). זהו המצב המסוכן.
הסיכון: ה־ ברשימה מגדיר שירות, אבל לא באמת נאכף רכיב השירות בכרטיס. תוקף ששולט בחשבון עם ו־Protocol Transition יכול להחליף את שם השירות (Service Name Substitution) ולגשת לשירותים נוספים על אותו שרת יעד.
הגנה
- להימנע מ־Protocol Transition אלא אם אין ברירה.
- לתת האצלה לחשבונות שירות ייעודיים בלבד, עם סיסמאות ארוכות (gMSA).
- לא להאציל לעולם לשירותים שרצים על Tier 0 (DC, ADFS, PKI).
- לבדוק תקופתית את כל האובייקטים עם msDS-AllowedToDelegateTo.