1s pentru acest utilizator nu există roluri disponibile. Cea mai confuză casetă de dialog din Active Directory

29.10.2012 Tim Springston

În acest articol, voi încerca să clarific unele aspecte ale „celei mai confuze casete de dialog din AD”, care este fila Delegație în fereastra de proprietăți a obiectului din snap-in-ul Utilizatorilor și computerelor Active Directory Console de gestionare (MMC) ( dsa.msc). Ne vom uita la valorile atributelor pentru diferite configurații. Înțelegerea scopului parametrilor de configurare va permite configurarea corectă în AD pentru aplicațiile și serviciile care utilizează delegarea Kerberos

Tim Springston ( [e-mail protejat]) - Inginer senior de servicii suport tehnic de asistență tehnică comercială la Microsoft, responsabil pentru securitate și autorizare

Una dintre cele mai discutate tehnologii Microsoft pe bloguri este autentificarea Kerberos. Acest lucru este ciudat atunci când considerați că tehnologia în sine și funcțiile sale nu au suferit modificări semnificative de la lansare. Windows Server 2003. Totuși, Kerberos rămâne un subiect pentru documentație suplimentară.

Există o nevoie continuă de a afla despre aspectele tehnice ale Kerberos și de ce apar erorile deoarece, în timp ce tehnologia însăși rămâne neschimbată, serviciile care o utilizează și modul în care este aplicată sunt adesea unice. Cu toate acestea, în fiecare scenariu, scopul setărilor Active Directory (AD) și semnificația mesajelor de eroare rămân aceleași.

În acest articol, voi încerca să clarific unele aspecte ale „celei mai confuze casete de dialog din AD”, care este fila Delegație în fereastra de proprietăți a obiectului din snap-in-ul Utilizatorilor și computerelor Active Directory Console de gestionare (MMC) ( dsa.msc). Ne vom uita la valorile atributelor pentru diferite configurații. Înțelegerea scopului setărilor vă va permite să configurați corect aplicațiile și serviciile AD care utilizează delegarea Kerberos.

Interfață simplă

De ce să pierdem timpul învățând o interfață „simplă”? Este necesar să aprofundăm detaliile, deoarece înțelegerea aspectului tehnic al funcționării diferiților parametri vă va permite să corectați cu mai mult succes erorile din setarea lor. Deci, să începem prin a înțelege sensul atitudinilor. Dacă deschideți snap-in-ul Utilizatori și computere Active Directory și navigați la proprietățile contului computerului, veți vedea fila Delegație (presupunând că pădurea dvs. se află la nivelul funcțional Server 2003). Această filă este prezentată în Figura 1. Pentru a clarifica scopul comutatoarelor din această filă, Figura 2 sugerează nume alternative pentru a le da.

Înainte de a ne scufunda în sensul parametrilor, să explicăm ce este delegația Kerberos. Delegarea (denumită și „uzurpare” sau delegare simplă) este procesul prin care o aplicație sau un serviciu obține bilete Kerberos pentru a accesa resurse sau computer la distanțăîn numele utilizatorului. O entitate de încredere pentru delegare este un serviciu Cont, în numele căruia rulează aplicația. Delegarea permite unei aplicații să acceseze doar acele resurse la care ar avea acces utilizatorul și să le furnizeze informații utilizatorului. Un exemplu de scenariu este un server web care se conectează la un sistem SQL Server pentru a afișa datele dorite de utilizator în clientul web.

Primele două opțiuni („Nu aveți încredere în computer pentru delegare” și „Încredere în computer pentru delegarea oricărui serviciu”) din Figura 1 se explică de la sine. A treia opțiune este Kerberos Constrained Delegation (KCD), care este la fel ca delegarea simplă, dar delegă identitatea identitară numai pentru servicii sau computere specificate. Această opțiune oferă mai multe nivel inalt securitate, limitând sfera delegării identității utilizatorului suplinit, astfel încât dacă o identitate de serviciu de încredere pentru delegare este compromisă, consecințele se limitează la capacitatea de a accesa doar acele resurse de pe servere la distanță care sunt selectate manual pentru delegare constrânsă.

A patra opțiune din Figura 1 permite KCD și extensia Servicii pentru utilizator (sau S4U). Extensia S4U oferă funcționalități mai largi, cum ar fi schimbarea protocolului. O modificare a protocolului are loc atunci când un client se autentifică mai întâi cu un protocol non-Kerberos pe o conexiune de intrare și apoi trece la Kerberos. Descriere detaliata S4U este conținut în Explorarea extensiilor Kerberos S4U în Windows Server 2003 (msdn.microsoft.com/en-us/magazine/cc188757.aspx) și tranziția protocolului cu supliment tehnic de delegare constrânsă (msdn.microsoft.com/en- us / library / ff650469.aspx). Aceste resurse sunt orientate către programatori, nu către administratori, dar este, de asemenea, important ca un administrator să înțeleagă ce este S4U, cum să-l configureze și când să-l folosească. În acest scop, iată o listă scurtă de caracteristici S4U destinate administratorului.

Preluarea informațiilor despre jetonul unui utilizator fără a obține efectiv acel jeton și fără ca serviciul de încredere să primească un bilet de acordare a biletelor (TGT) de la un utilizator de încredere sau să acceseze acreditările. Informațiile rezultate pot fi apoi utilizate, de exemplu, pentru verificări de autorizare. Această extensie este cunoscută sub numele de Services-For-User-To-Self (S4U2Self).

Primirea de bilete fără a fi nevoie să obțineți un bilet de serviciu Kerberos, fără acces la acreditări, transfer de TGT-uri sau fără autentificare deloc - Servicii-Pentru-Utilizator-Proxy (S4U2Proxy).

Efectuarea modificării protocolului menționată anterior. Clientul care accesează serviciul corporativ se autentifică inițial folosind o altă metodă decât Kerberos, iar S4U permite serviciului de încredere să comute sesiunea de utilizator deja autentificat la Kerberos. Aici este cel mai probabil să apară erori de configurare, deoarece documentația aplicației nu este adesea clară dacă este necesară o modificare a protocolului sau cum să o configurați în AD. Cu toate acestea, acest subiect este relevant, deoarece astăzi aproape niciun articol nu este complet fără a menționa „norul”. Clienții care se conectează prin cloud vor folosi de cele mai multe ori autentificarea NTLM din cauza lipsei de controlere de domeniu (DC) pentru a procesa cererile de bilete de servicii Kerberos prin Internet. Schimbarea protocolului permite utilizatorului acestui domeniu să se conecteze prin software firewall sau un server proxy utilizând una dintre metodele de autentificare (cum ar fi NTLM) și apoi comutați la autentificarea Kerberos pentru acțiuni ulterioare în interior rețea corporativă... Întrucât „cloud” înseamnă conectarea prin Internet, puteți fi siguri că, dacă utilizați orice soluție „cloud”, mai devreme sau mai târziu veți ajunge să utilizați schimbarea protocolului Kerberos.

Sub învelișul exterior

Acum să vedem ce se întâmplă de fapt atunci când fiecare dintre acești patru parametri este setat, folosind LDP pentru a vizualiza valorile atributelor setate pentru fiecare dintre configurații. LDP este instalat cu rolul implicit AD Domain Services și poate fi folosit ca instrument pentru gestionarea cererilor LDAP cu interfață grafică... LDP vă permite să creați propriile interogări LDAP și să vizualizați rezultatele într-un formular ușor de citit. Un avantaj suplimentar al utilizării LDP pentru a vizualiza valorile atributelor (cum ar fi userAccountControl) este de a traduce valorile parametrilor calculați într-o formă care poate fi citită de om în loc de o combinație de numere. Apropo, mai multe versiunile ulterioare adsiedit.msc gestionează, de asemenea, valorile parametrilor calculați într-un mod similar.

Prin urmare, pe Windows Server 2008 și mai nou, ldp.exe și adsiedit.msc furnizează traducere automată valorile atributelor (de exemplu, userAccountControl), care elimină necesitatea de a deschide calc.exe și de a accesa documentația online MSDN sau baza de cunoștințe Microsoft.

Acum să ne uităm la schimbarea valorilor atributelor în LDP, în funcție de setările făcute. Să începem cu un cont care nu este de încredere pentru delegare. În Figura 3, puteți vedea că contul Test2 nu este de încredere și că valoarea hexagonală 1020 a atributului userAccountControl (corespunzătoare zecimalei 4128) a fost tradusă în WORKSTATION_TRUST_ACCOUNT și PASSWD_NOTREQD.

Figura 4 prezintă contul care a fost de încredere pentru delegare. Putem vedea valoarea atributului userAccountControl tradusă în TRUSTED_FOR_DELEGATION, indicând faptul că este permisă delegarea simplă fără restricții Kerberos pentru această identitate de serviciu.

Delegare de încredere la servicii specifice

Următoarele setări sunt critice dacă intenționați să utilizați S4U sau KCD. Primul caz corespunde alegerii Încredere în acest computer pentru delegare numai la serviciile specificate și Utilizare numai Kerberos. În Figura 5, puteți vedea că, cu această selecție, atributul userAccountControl obține din nou WORKSTATION_TRUST_ACCOUNT și atributul MsDS-AllowedToDelegateTo este completat automat cu serviciile selectate cărora li se permite delegarea. Acest atribut nu este completat sau afectat de nicio altă procedură. Serviciile specifice de pe computerul pentru care este permisă delegarea sunt listate ca intrări.

A doua opțiune este mai puțin sigură - Utilizați orice protocol de autentificare, permițând schimbarea protocolului și alte opțiuni de extensie. În plus față de intrările pentru atributul MsDS-AllowedToDelegateTo, această setare modifică atributul userAccountControl care devine TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION (T2A4D), așa cum arată Figura 6. Fără steagul T2A4D, vă puteți aștepta la o eroare de modificare a protocolului. Acest steag nu este utilizat de nicio altă componentă. Rețineți că acest comutator simplu este extrem de important deoarece, dacă nu este selectat, atunci S4U2Self, S4U2Proxy și schimbarea protocolului se vor comporta diferit, ceea ce poate crea probleme aplicațiilor și serviciilor care așteaptă tipurile de bilete corespunzătoare. În special, modificarea protocolului va eșua și biletul nu va fi emis. S4U2Proxy și S4U2Self vor lipsi semnalizatorul redirecționabil, ceea ce va duce la o eroare: pentru S4U2Proxy în orice caz și pentru S4U2Self în situațiile în care trebuie să trimiteți un bilet către un alt serviciu sau nod.

"Fă-o singur"

Ce se întâmplă dacă contul de serviciu utilizat de aplicație sau serviciu trebuie să efectueze o acțiune care necesită o modificare a protocolului și fila Delegație este setată să Utilizeze Kerberos numai în loc să Utilizeze orice autentificare a protocolului de autentificare ")? Pentru o aplicație client, eroarea poate lua forma Acces refuzat atunci când se încearcă accesarea resurselor prin rețea sau poate eșua fără a notifica autentificarea NTLM sau o eroare neașteptată specifică aplicației. Incertitudinea sub formă de manifestare a erorii complică și mai mult sarcina. Cu toate acestea, cel mai probabil rezultat va fi accesul refuzat. Într-o astfel de situație, asigurați-vă că verificați documentația pentru aplicație sau serviciu pentru a vedea dacă se spune că va exista o modificare de protocol sau solicitări de bilete din partea non-TGT a serviciului. Problema este că majoritatea scriitorilor nu înțeleg cu adevărat semnificația configurației KCD și, prin urmare, oferă puține sau deloc explicații.

O metodă de bricolaj pentru investigarea cauzei unei erori poate fi la fel de simplă precum colectarea datelor de urmărire a rețelei de pe un server care este de încredere pentru delegare. Filtrează datele colectate de Kerberos (Kerberosv5 în Microsoft Network Monitor sau kerberos în Wireshark). Cererea de serviciu pentru un bilet (TGS_REQ) este trimisă la Centrul de distribuție AD Kerberos (KDC) și conține setările KDC cu setul de delegație constrâns setat. Dacă un bilet este refuzat, răspunsul serverului (TGS_REP) va conține eroarea KDC_ERR_BAD_OPTION, care poate fi văzută cu ușurință în rezultatele urmăririi rețelei.

Pentru mai multe informații despre modul în care funcționează implementările Microsoft Kerberos, consultați specificația protocolului deschis online. Kerberos Protocol Extensions (msdn.microsoft.com/en-us/library/cc233855%28v=PROT.13%29.aspx) conține documentație generală Kerberos și Kerberos Protocol Extensions: Service for User and Constrained Delegation Protocol Specification "(Msdn. microsoft.com/en-us/library/cc246071%28v=PROT.13%29.aspx) Documentație privind delegarea constrânsă Kerberos și S4U.

Lume perfectă

Sper că această analiză a setărilor din fereastra interfeței Kerberos și a corespondențelor lor în AD vă va ajuta să înțelegeți mai bine semnificația lor. O lume ideală ar fi în care documentația serviciilor administrate ar oferi îndrumări tehnice pentru acestea setare corectă pentru autentificare. Cu toate acestea, dacă realitatea este departe de a fi ideală, aceste informații ar trebui să vă ajute să vă îmbunătățiți setul de instrumente. Înțelegerea aspectului tehnic al parametrilor va fi cheia succesului.



2 răspunsuri

rezolvabil.

Prima jumătate a fost supravegherea mea. Cealaltă jumătate ... ei bine, nu am niciun cuvânt despre ce a mers prost. Acesta nu este cu adevărat un bug sau o incompatibilitate, ci ceva foarte incomod, intermitent și greu de înțeles. Un rezumat mai întâi și apoi o explicație a lungimii pentru cei cărora le pasă:

În ciuda sugestiilor din mesajul de eroare, acesta nu este un model conceptual (CSDL), ci o problemă de mapare a coloanelor care s-a recreat de la sine în mod intermitent.

Modelul conceptual a fost construit folosind EdmxWriter pentru a analiza DbContext și părțile sale principale.

Modelul a fost apoi folosit pentru a genera scripturi SQL pentru a traduce schema într-o nouă bază de date. Trucul este că baza de date este Oracle.

Oracle este un copil și nu acceptă nume de coloane lungi. Astfel, scripturile EDMX și SQL generate au trebuit să fie modificate pentru a crea și a asocia părți ale modelului conceptual cu numele de coloane scurtate.

Nu e mare lucru. Funcționează bine. Deci, unde a greșit?

Oracle nu acceptă „primul cod”. Deși a fost realizat manual, folosirea EdmxWriter este abordarea Oracle de cod-behind. Prin urmare, când prima schemă EDMX a fost dezasamblată, aceasta a fost blocată în legătură cu mapările booleene. Soluția a fost eliminarea temporară a boolurilor din modelele mele C #, adăugarea lor manuală la EDMX și realizarea mapării Oracle web.config (maparea boolului la NUMBER (1,0)).

Totul este din nou grozav. Dar de ce se repetă în continuare?

În diferite momente ale procesului de dezvoltare, unele capete ale acordului - fie C #, EDMX, fie Oracle - se schimbă. Și de fiecare dată când se pare că coloanele au fost realocate automat și nu știam. Dacă EDMX a fost actualizat din Oracle, mapările indicau proprietățile C # care nu erau acolo (nume de coloane scurte). Dacă modelul a fost actualizat din codul C #, mapările nu au fost salvate și au încercat să se potrivească cu nume de coloane lungi care nu erau în Oracle.

Scăderea acestei abordări (primul cod hibrid și primul model) este dacă vreau să gestionez în continuare propriile modele și să gestionez personalizările necesare pentru o mică relație prietenoasă cu copiii, trebuie să fiu foarte atent și să fiu atent la fișierul EDMX trăsătură.

Site-uri, aplicații, jocuri - resurse informaționale care sunt controlate de utilizatori. Pentru a separa acțiunile permise și interzise pentru un anumit utilizator, sunt utilizate drepturile de acces (PD). Domeniul de aplicare al PD formează rolurile. De exemplu, să aruncăm o privire la un site de bază cu posibilitatea de a vă înregistra.

Pe un astfel de site, 3 roluri „trăiesc” cu drepturile și responsabilitățile lor:

1.

Toți utilizatorii anonimi acționează în mod implicit în acest rol. Dacă acordăm vizitatorilor site-ului dreptul de a „adăuga comentarii”, atunci utilizatorul care vizitează site-ul va putea să comenteze interesele dumneavoastră. Dacă nu, atunci va trebui să vă înregistrați mai întâi pentru a comenta conținutul.

2.

Utilizatorii anonimi autentificați și autorizați primesc rol nou... Doar utilizatorii autorizați pot gestiona cont personal, adăugați și editați date personale, vizualizați informații despre alte personaje. Utilizatorii neînregistrați nu au dreptul la aceste operațiuni.

3. Administrator

În mod implicit, acest rol oferă utilizatorului acces complet la site. Administratorul resursei adaugă, elimină blocuri și acordă sau ia de la alți utilizatori dreptul de a accesa această funcție sau alta.

Cum testăm și la ce acordăm atenție?

În primul rând, vom încerca să nu ștergem „Super-administratorul” în timp ce ne jucăm cu setările.

  • Creați un personaj sigur

Pentru a vă apropia de activitățile reale ale proiectului, este suficient un utilizator suplimentar cu drepturi de administrator similare. Și cu acest caracter testăm resursa și schimbăm drepturile de acces ale altor utilizatori.

  • Verificarea în mai multe browsere

O facem în același timp: într-una schimbăm PD, în cealaltă verificăm utilizarea drepturilor pentru utilizator, împărțind astfel sesiunile utilizatorului.

  • Urmați linkul direct

Testarea constrângerilor blocului mergând la ele în linie dreaptă Adresa URL... Vizualizarea unora dintre datele resurselor nu ar trebui să fie disponibilă prin intermediul link-ului pentru un invitat neautorizat al site-ului. Dacă accesul este limitat, atunci totul este ok: în loc de informații private, utilizatorii anonimi vor primi un mesaj de avertizare sub forma unei pagini speciale, cel mai adesea cu un cod 403.

  • Testarea blocării entității

Pentru resurse precum vânzarea de bilete și tururi, este important să blocați un articol atunci când mai mulți utilizatori îl pot accesa simultan. Există două opțiuni de blocare:

+ Blocare optimista când salvați, verificați baza de date pentru mai multe versiune noua datele lăsate de un alt utilizator. Dacă este, utilizatorul actual reîncarcă această instanță de entitate.

+ Blocare pesimistă entitățile sunt folosite atunci când optimistul generează prea multe coliziuni. În acest caz, un singur utilizator la momentul actual folosește și modifică această opțiune entități.

Puteți testa de pe un computer în mai multe browsere sau conturi diferite.

  • Folosind o matrice de testare

Simplifică munca testerului, arată clar acțiunile permise și interzise și ajută doar să nu ratezi nimic. Descriem în ea toate rolurile, utilizatorii, variațiile limitărilor capacităților personajelor noastre.

Și iată cel mai simplu exemplu de matrice de testare:

Controlul accesului este una dintre principalele verificări ale cadrului. Chiar și verificarea site-ului unei biblioteci locale cu trei roluri amenință testatorul cu dificultăți. Dar resursele populare cu zeci de roluri, mii de utilizatori și milioane de permisiuni necesită o întreagă armată de administratori! Este dificil pentru noi să ne imaginăm amploarea daunelor dacă un profan efectuează teste. Angajați profesioniști cunoscuți și evitați lacunele de securitate ale produselor dvs.!