1s det finns inga roller tillgängliga för denna användare. Den mest förvirrande dialogrutan i Active Directory. Hur vi testar och vad vi uppmärksammar

2 svar

lösbar.

Första halvlek var min förbiseende. Andra halvlek... ja, jag har inga ord om vad som var fel. Det är faktiskt inte en bugg, eller en inkompatibilitet, utan något väldigt besvärligt, intermittent och svårt att förstå. Först en sammanfattning och sedan en förklaring av längden för den som bryr sig:

Trots felmeddelandets förslag är detta inte ett problem med den konceptuella modellen (CSDL), utan ett kolumnmappningsproblem som har återskapat sig själv periodvis.

En konceptuell modell byggdes med EdmxWriter för att analysera DbContext och dess huvuddelar.

Modellen användes sedan för att generera SQL-skript för att översätta schemat till den nya databasen. Tricket är att databasen är Oracle.

Oracle är en baby och accepterar inte långa kolumnnamn. Därför måste de genererade EDMX- och SQL-skripten modifieras för att skapa och kartlägga delar av den konceptuella modellen med förkortade kolumnnamn.

Inte en stor sak. Det fungerar bra. Så var gick allt fel?

Oracle stöder inte "kod först". Även om det gjordes manuellt, är användningen av EdmxWriter en kodbaserad metod i Oracle. När den första EDMX-kretsen togs isär handlade den därför binärt om logiska mappningar. Lösningen var att tillfälligt ta bort bools från mina C#-modeller, lägga till dem till EDMX manuellt och göra en Oracle web.config-mappning (bool-mappning till NUMBER(1,0)).

Allt är groovy igen. Men varför upprepar det sig hela tiden?

Vid olika tillfällen under utvecklingsprocessen ändras vissa ändar av konventionen - antingen C#, EDMX eller Oracle. Och varje gång det verkar som om kolumnerna automatiskt omfördelades utan att jag visste det. Om EDMX-modellen uppdaterades från Oracle, pekade mappningarna på C#-egenskaper som inte fanns där (korta kolumnnamn). Om modellen uppdaterades från C#-kod sparades inte mappningarna och man försökte mappa långa kolumnnamn som inte fanns i Oracle.

Bummern med detta tillvägagångssätt (första hybridkoden och modellen) är att om jag vill fortsätta att hantera mina egna modeller och hantera de inställningar som behövs för en liten barnrelation, måste jag vara mycket försiktig och hålla ett öga på EDMX-filegenskaperna.

2012-10-29 Tim Springston

I den här artikeln kommer jag att försöka klargöra några aspekter av "den mest förvirrande dialogrutan i AD", som är fliken Delegering i objektegenskapersfönstret i Microsoft Management Console (MMC) Active Directory Users and Computers snap-in (dsa) .msc). Vi kommer att titta på attributvärden för olika konfigurationer. Genom att förstå syftet med inställningarna kan du korrekt konfigurera applikationer och tjänster som använder Kerberos-delegering i AD

Tim Springston ( [e-postskyddad]) – senior serviceingenjör teknisk support Commercial Technical Support division på Microsoft, ansvarig för säkerhet och auktorisering

En av de mest aktivt diskuterade på bloggar Microsofts teknologier– autentisering med Kerberos-protokollet. Detta är konstigt med tanke på att själva tekniken och dess funktioner inte har genomgått några betydande förändringar sedan den släpptes Windows Server 2003. Ändå är Kerberos fortfarande ett ämne för ytterligare dokumentation.

Det pågående behovet av att lära sig de tekniska aspekterna av hur Kerberos fungerar och varför fel uppstår beror på att även om själva tekniken förblir densamma, är tjänsterna som använder den och sätten på vilka den används ofta unika. Men det som förblir konstant i varje scenario är syftet med Active Directory-inställningarna (AD) och innebörden av felmeddelandena.

I den här artikeln kommer jag att försöka klargöra några aspekter av "den mest förvirrande dialogrutan i AD", som är fliken Delegering i objektegenskapersfönstret i Microsoft Management Console (MMC) Active Directory Users and Computers snap-in (dsa) .msc). Vi kommer att titta på attributvärden för olika konfigurationer. Genom att förstå syftet med inställningarna kan du korrekt konfigurera applikationer och tjänster som använder Kerberos-delegering i AD.

Enkelt gränssnitt

Varför slösa tid på att lära sig ett "enkelt" gränssnitt? Det är nödvändigt att gå in i detalj, för att förstå den tekniska aspekten av hur olika parametrar fungerar gör att du kan korrigera fel i deras konfiguration mer framgångsrikt. Låt oss därför börja med att förstå innebörden av attityder. Om du öppnar snapin-modulen Active Directory Users and Computers och går till datorkontots egenskaper, kommer du att se fliken Delegering (förutsatt att din skog är på Server 2003-funktionsnivån). Den här fliken visas i figur 1. För att förklara syftet med omkopplarna på den här fliken föreslår figur 2 alternativa namn som du kan ge dem.

Innan vi dyker in i vad parametrarna betyder, låt oss förklara vad Kerberos-delegering är. Delegering (även kallad personifiering eller enkel delegering) är processen för en applikation eller tjänst som skaffar Kerberos-biljetter för att komma åt resurser eller fjärrdator på uppdrag av användaren. En enhet som är betrodd för delegering är en serviceenhet. konto, på uppdrag av vilken applikationen körs. Delegering tillåter en applikation att endast komma åt de resurser som en användare skulle ha tillgång till och att leverera information till användaren. Ett exempel kan vara en webbserver som ansluter till ett system SQL Server för att visa de data som användaren behöver i webbklienten.

De två översta alternativen ("Lita inte på att datorn delegerar" och "Lita på att datorn delegerar tjänster") i figur 1 är självförklarande. Det tredje alternativet är Kerberos Constrained Delegation (KCD), som i huvudsak är detsamma som enkel delegering, men delegerar den efterbildade identiteten till endast specificerade tjänster eller datorer. Det här alternativet ger en högre säkerhetsnivå genom att begränsa omfattningen av delegering av identiteten för den efterliknade användaren, så att om tjänstens identitet som är tillförlitlig för delegering äventyras, begränsas konsekvenserna till möjligheten att endast komma åt de resurserna på fjärrservrar, som väljs manuellt för begränsad delegering.

Det fjärde alternativet i figur 1 tillåter KCD och tillägget Services for User (eller S4U). S4U-tillägget ger mer avancerade funktioner, som att ändra protokollet. Protokollbyte sker när klienten först autentiserar med ett annat protokoll än Kerberos på en inkommande anslutning och sedan byter till Kerberos. Detaljerad beskrivning S4U finns i dokumentationen "Exploring S4U Kerberos Extensions in Windows Server 2003" (msdn.microsoft.com/en-us/magazine/cc188757.aspx) och "Protocol Transition with Constrained Delegation Technical Supplement" (msdn.microsoft.com/ en-us/library/ff650469.aspx). Dessa resurser är riktade till programmerare, inte administratörer, men det är också viktigt för en administratör att förstå vad S4U är, hur man konfigurerar den och när den ska användas. För detta ändamål är här en kort lista över S4U-funktioner avsedda för administratören.

Att erhålla information om en användares token utan att faktiskt erhålla den token och utan att den betrodda biljetttjänsten skaffar en biljett som beviljar biljett (TGT) från den förtroende användaren eller tillgång till autentiseringsuppgifter. Den information som erhålls kan sedan användas för exempelvis behörighetskontroller. Detta tillägg är känt som Services-For-User-To-Self (S4U2Self).

Att erhålla biljetter utan att kräva en Kerberos-tjänstebiljett, utan att komma åt inloggningsuppgifter, passera TGT eller utan autentisering alls - Services-For-User-To-Proxy (S4U2Proxy).

Utför protokolländringen som nämndes tidigare. En klient som får åtkomst till en företagstjänst autentiserar initialt med en annan metod än Kerberos, och S4U tillåter en betrodd tjänst att byta en redan autentiserad användares session till att använda Kerberos. Det är här fel orsakade av konfigurationsfel oftast uppstår, eftersom applikationsdokumentationen ofta inte tydligt förklarar om en protokolländring är nödvändig eller hur man konfigurerar den i AD. Det här ämnet är dock relevant, eftersom idag nästan ingen artikel är komplett utan att nämna "molnet". Klienter som ansluter via molnet kommer oftast att använda NTLM-autentisering på grund av bristen på domänkontrollanter (DC) som hanterar Kerberos-tjänstebiljettförfrågningar över Internet. Genom att ändra protokollet kan användaren av denna domän ansluta via programvara brandvägg eller proxy med en av autentiseringsmetoderna (som NTLM), och växla sedan till Kerberos-autentisering för att utföra ytterligare åtgärder inuti företagsnätverk. Eftersom "moln" betyder att ansluta över Internet kan du vara säker på att om du använder någon molnlösning, kommer du förr eller senare att använda Kerberos protokollväxlare.

Under det yttre skalet

Låt oss nu titta på vad som faktiskt händer när var och en av dessa fyra parametrar ställs in med hjälp av LDP för att titta på värdena för attributen som är inställda för var och en av konfigurationerna. LDP är installerat med rollen AD Domain Services som standard och kan användas som ett LDAP-frågebearbetningsverktyg med grafiskt gränssnitt. LDP låter dig bygga dina egna LDAP-frågor och se resultaten i ett lättläst format. En ytterligare fördel med att använda LDP för att se attributvärden (till exempel userAccountControl) är att den översätter de beräknade parametervärdena till en läsbar form istället för en kombination av siffror. Förresten, senare versioner av adsiedit.msc ger också liknande bearbetning av beräknade parametervärden.

Därför, i Windows Server 2008 och senare, tillhandahåller ldp.exe och adsiedit.msc automatisk översättning av attributvärden (som userAccountControl), vilket eliminerar behovet av att öppna calc.exe och konsultera online MSDN-dokumentation eller Microsoft Knowledge Base.

Låt oss nu titta på att ändra attributvärden i LDP beroende på de inställningar som gjorts. Låt oss börja med ett konto som inte är betrodd för delegering. Figur 3 visar att Test2-kontot inte är pålitligt och att det hexadecimala värdet 1020 för userAccountControl-attributet (motsvarande decimal 4128) översätts till WORKSTATION_TRUST_ACCOUNT och PASSWD_NOTREQD.

Figur 4 visar kontot som är betrodd för delegering. Vi kan se userAccountControl-attributvärdet översatt till TRUSTED_FOR_DELEGATION, vilket indikerar att enkel obegränsad Kerberos-delegering är tillåten för denna tjänstidentitet.

Förtroendedelegering till specifika tjänster

Följande inställningar är kritiska om du tänker använda S4U eller KCD. Det första fallet motsvarar valet av Trust detta alternativ dator för delegering endast till specificerade tjänster och Använd endast Kerberos. Figur 5 visar att med det här valet sätts userAccountControl-attributet igen till WORKSTATION_TRUST_ACCOUNT, och attributet MsDS-AllowedToDelegateTo fylls automatiskt i med de valda tjänsterna som tillåts delegera. Det här attributet är inte ifyllt eller påverkat av någon annan procedur. Posterna listar specifika tjänster på datorn för vilka delegering är aktiverad.

Det andra alternativet är mindre säkert - Använd valfritt autentiseringsprotokoll, vilket gör det möjligt att ändra protokollet och andra tilläggsalternativ. Förutom posterna i attributet MsDS-AllowedToDelegateTo ändrar denna inställning attributet userAccountControl, som tar emot TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION (T2A4D), som figur 6 visar. Utan T2A4D-flaggan kan du förvänta dig ett protokolländringsfel. Denna flagga används inte av någon annan komponent. Observera att den här enkla switchen är extremt viktig eftersom om den inte väljs kommer S4U2Self, S4U2Proxy och protokollförändringar att bete sig annorlunda, vilket kan orsaka problem för applikationer och tjänster som förväntar sig motsvarande biljetttyper. I synnerhet kommer det att misslyckas att ändra protokollet och ingen biljett kommer att utfärdas. S4U2Proxy och S4U2Self kommer inte att ha den vidarebefordrbara flaggan, vilket kommer att resultera i ett fel: för S4U2Proxy - i alla fall, och för S4U2Self - i situationer där du behöver skicka en biljett till en annan tjänst eller nod.

"Gör det själv"

Vad händer om tjänstekontot som används av en applikation eller tjänst behöver utföra en åtgärd som kräver en protokolländring och fliken Delegering är inställd på Använd endast Kerberos istället för Använd valfriring")? För en klientapplikation kan felet vara: Åtkomstformulär Nekad när man försöker komma åt resurser över nätverket, eller ett NTLM-autentiseringsfel utan meddelande eller ett oväntat programberoende fel kan uppstå. Osäkerheten i vilken form felet kommer att visa sig i försvårar uppgiften ytterligare. Det mest sannolika resultatet blir dock Access Denied. I den här situationen, se till att granska applikationen eller tjänstedokumentationen för att se om den anger att det kommer att ske protokolländringar eller biljettförfrågningar från tjänsten utan en TGT. Problemet är att de flesta dokumentationsskribenter inte riktigt förstår innebörden av KCD-konfiguration och ger därför liten eller ingen förklaring.

En gör-det-själv-metod för att identifiera orsaken till felet skulle vara att helt enkelt samla in nätverksspårningsdata från en server som är betrodd för delegering. Filtrera insamlad data efter Kerberos (Kerberosv5 i Microsoft Network Monitor eller kerberos i Wireshark). Begäran om biljettutgivningstjänst (TGS_REQ) skickas till AD Kerberos Distribution Center (KDC) och innehåller KDC-parametrarna med den begränsade delegeringsflaggan inställd. Om en biljett nekas kommer serversvaret (TGS_REP) att innehålla KDC_ERR_BAD_OPTION-felet, vilket enkelt kan ses i nätverksspårningsresultaten.

Mer detaljerad information Funktionen för Microsoft Kerberos-implementationer finns i online-specifikationen för öppna protokoll. "Kerberos Protocol Extensions" (msdn.microsoft.com/en-us/library/cc233855%28v=PROT.13%29.aspx) innehåller allmän dokumentation om Kerberos och "Kerberos Protocol Extensions: Service for User and Constrained Delegation Protocol Specification » (msdn.microsoft.com/en-us/library/cc246071%28v=PROT.13%29.aspx) – dokumentation om Kerberos och S4U begränsad delegering.

Perfekt värld

Jag hoppas att denna analys av inställningarna i Kerberos-gränssnittsfönstret och deras korrespondens i AD kommer att hjälpa dig att bättre förstå deras innebörd. En idealisk värld skulle vara en där dokumentationen av hanterade tjänster tillhandahåller teknisk vägledning om hur man använder dem. korrekt inställning för autentisering. Men om verkligheten är mindre än idealisk bör denna information hjälpa till att förbättra din verktygslåda. Att förstå den tekniska aspekten av hur parametrarna fungerar kommer att vara nyckeln till framgång.



Webbplatser, applikationer, spel är informationsresurser som hanteras av användare. För att separera tillåtna och förbjudna åtgärder för en viss användare används åtkomsträttigheter (AP). Tillämpningsområdet för PD bildar roller. Låt oss till exempel titta på en grundläggande webbplats med registreringsalternativ.

På en sådan sida "lever" tre roller med sina egna rättigheter och skyldigheter:

1.

Alla anonyma användare agerar i denna roll som standard. Om vi ​​ger webbplatsgäster rätten "Lägg till kommentarer" kommer användaren som besöker webbplatsen att kunna kommentera dina intressanta saker. Om inte, måste du registrera dig först för att kommentera innehållet.

2.

Anonyma personer som har passerat autentisering och auktorisering får ny roll. Endast behöriga användare kan hantera personligt konto, lägga till och redigera personlig data, visa information om andra karaktärer. Oregistrerade användare är inte behöriga att utföra dessa operationer.

3. Administratör

Denna standardroll ger användaren full åtkomst till webbplatsen. Resursadministratören lägger till och tar bort blockeringar och ger eller tar ifrån andra användare rättigheter att komma åt viss funktionalitet.

Hur testar vi och vad uppmärksammar vi?

Först och främst kommer vi att försöka att inte ta bort "Super Admin" genom att leka med inställningarna.

  • Skapa en säker karaktär

För att komma närmare verkliga aktiviteter på projektet räcker det med ytterligare en användare med liknande administratörsbefogenheter. Och med denna karaktär testar vi resursen och ändrar åtkomsträttigheter för andra användare.

  • Kollar in flera webbläsare

Vi gör det samtidigt: i den ena ändrar vi PD, i den andra kontrollerar vi tillämpningen av rättigheter för användaren och separerar därmed användarsessioner.

  • Följ direktlänken

Vi testar blockrestriktioner genom att navigera till dem via en direkt URL. Visning av vissa resursdata bör inte vara tillgänglig via en länk för en obehörig gäst på webbplatsen. Om åtkomsten är begränsad är allt ok: istället för sekretessbelagd information kommer anonyma användare att få ett varningsmeddelande i form av en speciell sida, oftast med koden 403.

  • Testa enhetsblockering

För resurser som biljett- och resetjänster är det viktigt att låsa ett element när flera användare kan komma åt det samtidigt. Det finns två blockeringsalternativ:

+ Optimistisk blockering när du sparar, kontrollerar databasen för mer ny version data som lämnats av en annan användare. Om det finns, alltså nuvarande användaren nedladdningar igen detta exemplar väsen.

+ Pessimistisk blockering Entiteter används när optimistisk skapar för många kollisioner. I det här fallet är det bara en användare åt gången som använder och ändrar denna version av entiteten.

Du kan testa från en dator i flera webbläsare eller med olika konton.

  • Använda en testmatris

Det förenklar testarens arbete, visar tydligt tillåtna och förbjudna åtgärder och hjälper helt enkelt att inte missa något. Vi beskriver i den alla roller, användare, variationer av begränsningarna för våra karaktärer.

Och här är det enklaste exemplet på en testmatris:

Tillträdeskontroll är en av huvudkontrollerna inom ramen. Även att testa en lokal bibliotekswebbplats med tre roller innebär utmaningar för testaren. Men populära resurser med dussintals roller, tusentals användare och miljontals behörigheter kräver en hel armé av administratörer! Det är svårt för oss att föreställa oss omfattningen av skadan om en amatör tar sig an att testa. Anställ kompetenta specialister och undvik luckor i säkerheten för dina produkter!