Met ASP.NET kunnen beheerders toepassingen hosten in modi voor gedeeltelijk vertrouwen, zoals gemiddeld vertrouwen. Ook kunnen aangepaste niveaus voor gedeeltelijk vertrouwen worden ingesteld via aangepaste beleidsbestanden. Ga naar de volgende MSDN-webpagina (Microsoft Developer Network) voor meer informatie over het gebruik van gemiddeld vertrouwen in ASP.NET 2.0:
Gemiddeld vertrouwen gebruiken in ASP.NET 2.0We hebben gedeeltelijk vertrouwen in ASP.NET eerder beschreven als een mechanisme om toepassingsisolatie af te dwingen in een gedeelde hostingomgeving waarin meerdere toepassingen met verschillende vertrouwensniveaus worden gehost op dezelfde webserver. Onze richtlijnen hierover stellen we nu bij omdat het uitvoeren van een ASP.NET page framework-toepassing in gedeeltelijk vertrouwen geen volledige isolatie garandeert van andere toepassingen die in hetzelfde proces of op dezelfde computer worden uitgevoerd.
Als u er zeker van wilt zijn dat ASP.NET page framework-toepassingen op dezelfde webserver worden geïsoleerd, is de aanbevolen procedure ASP.NET page framework-toepassingen in te stellen op uitvoering in afzonderlijke processen met lage privileges (door afzonderlijke groepen van toepassingen te gebruiken). In de volgende sectie leest u hoe u toepassingen instelt op isolatie. Wij verwerken de beleidswijziging die in dit artikel wordt beschreven, ook in onze andere documentatie.
Serverbeheerders dienen de richtlijnen in dit artikel door te voeren om te waarborgen dat toepassingen in gedeelde hostingomgevingen worden geïsoleerd. Deze richtlijnen gelden voor het hosten van ASP.NET in Windows Server 2003 SP2 en latere versies. IIS 6.0 tot 7.5 (Internet Information Services) vallen ook onder deze richtlijnen.
Veel van de taken die hier worden beschreven, kunnen worden geautomatiseerd met het IIS-opdrachtregelprogramma AppCmd.exe in IIS 7 en 7.5, en met IIS-beheerscripts in IIS 6.0.
Toepassingen op afzonderlijke IIS-sites plaatsen
In een gedeelde hostingomgeving moeten toepassingen op afzonderlijke IIS-sites worden geplaatst. De instellingen van toepassingen worden beter geïsoleerd als ze op afzonderlijke sites worden gehost. Daarnaast is er dan ook een afzonderlijke .NET Framework CLR-host. Dit zorgt voor extra isolatie op dat niveau.
Ga als volgt te werk om toepassingen op afzonderlijke sites te plaatsen:
Open IIS-beheer (Internet Information Services).
Vouw in het linkerdeelvenster het knooppunt voor de huidige server uit.
Klik met de rechtermuisknop op het knooppunt Websites, klik op Nieuw en klik op Website.
Geef een unieke naam op voor de nieuwe website en klik op Volgende.
Configureer de sitebindingen voor de hostingomgeving.
Geef het fysieke pad op naar de map waarin de toepassingsbestanden zijn opgeslagen.
Schakel het selectievakje Scripts uitvoeren (zoals ASP) in en klik op Volgende.
Klik op Voltooien. De nieuwe site verschijnt onder het knooppunt Websites.
Internet Information Services 7 (Windows Vista SP2 en Windows Server 2008 SP1) en Internet Information Services 7.5 (Windows 7 en Windows Server 2008 R2)
Vouw in het deelvenster Verbindingen het knooppunt voor de huidige server uit.
Selecteer het knooppunt Sites en klik op de koppeling Website toevoegen in het deelvenster Acties.
Geef in het dialoogvenster Website toevoegen een unieke naam op voor de nieuwe website en geef vervolgens het fysieke pad op naar de map waarin de toepassingsbestanden zijn opgeslagen. Standaard wordt een nieuwe groep van toepassingen gemaakt met dezelfde naam als de site, en wordt de site ingesteld op gebruik van deze groep van toepassingen. (Dit is de aanbevolen instelling.)
Schakel het selectievakje Website onmiddellijk starten uit om ervoor te zorgen dat de site niet beschikbaar is totdat de hier beschreven isolatierichtlijnen volledig zijn opgevolgd.
Klik op OK. De geconfigureerde website verschijnt onder het knooppunt Sites in het deelvenster Verbindingen.
Toepassingen in afzonderlijke groepen van toepassingen plaatsen
In een gedeelde hostingomgeving moeten toepassingen in afzonderlijke groepen van toepassingen worden geplaatst. Hierdoor kunnen toepassingen worden geïsoleerd in afzonderlijke besturingssysteemprocessen met unieke identiteiten. Dit zorgt voor een isolatieniveau tussen sites. (In de volgende sectie wordt beschreven hoe u identiteiten in een groep van toepassingen kunt instellen op isolatie.)
Klik met de rechtermuisknop op Groepen van toepassingen, klik op Nieuw en klik vervolgens op Groep van toepassingen.
Geef een unieke naam op voor de nieuwe groep van toepassingen en klik op OK.
Vouw het knooppunt Websites uit.
Klik met de rechtermuisknop op de gewenste website en klik op Eigenschappen.
Selecteer de nieuwe groep van toepassingen in het veld Groep van toepassingen onder in het dialoogvenster.
Nadat u de stappen hebt gevolgd in de sectie Toepassingen op afzonderlijke IIS-sites plaatsen, wordt de nieuwe site automatisch in een nieuwe, afzonderlijke groep van toepassingen geplaatst. Als u echter een bestaande site wilt instellen op gebruik van een nieuwe, afzonderlijke groep van toepassingen, gaat u als volgt te werk:
Selecteer het knooppunt Groepen van toepassingen.
Klik in het deelvenster Acties op de koppeling Groep van toepassingen toevoegen.
Geef een unieke naam op voor de nieuwe groep van toepassingen en selecteer de gewenste .NET Framework-versie en pipeline-modus.
Klik op OK. De nieuwe groep van toepassingen verschijnt in de lijst.
Vouw in het deelvenster Verbindingen het knooppunt Sites uit.
Selecteer de site die u wilt verplaatsen naar de groep van toepassingen die u eerder in deze procedure hebt gemaakt.
Klik in het deelvenster Acties op de koppeling Basisinstellingen.
Klik in het dialoogvenster Site bewerken op Selecteren.
Selecteer in de lijst Groep van toepassingen de groep van toepassingen die u eerder hebt gemaakt.
Klik in het dialoogvenster Site bewerken op OK.
Groepen van toepassingen instellen op isolatie (procesidentiteit)
Groepen van toepassingen hosten toepassingen en sites in (een) Windows-proces(sen). De identiteit waaronder het proces wordt uitgevoerd, is instelbaar. In een gedeelde hostingomgeving hoort er een afzonderlijke identiteit te zijn voor elke toepassing. Dit waarborgt dat elke toepassing wordt uitgevoerd in de context van een unieke account. Dit maakt correcte isolatie mogelijk door gebruik van bestandssysteem-DACL's (Discretionary Access Control Lists) en de ingebouwde procesisolatie-eigenschappen van het onderliggende besturingssysteem. Ga als volgt te werk om een gebruikersaccount te maken en vervolgens een groep van toepassingen aan te wijzen voor gebruik van die account.
Een lokale gebruikersaccount maken om als identiteit van de groep van toepassingen te gebruiken
Vouw in het linkerdeelvenster Lokale gebruikers en groepen uit.
Klik met de rechtermuisknop op het knooppunt Gebruikers en klik op Nieuwe gebruiker.
Geef een unieke naam en een sterk wachtwoord op voor de nieuwe gebruikersaccount.
Schakel het selectievakje Gebruiker moet wachtwoord bij volgende aanmelding wijzigen uit.
Schakel het selectievakje Gebruiker kan wachtwoord niet wijzigen in.
Klik op Maken en klik op Sluiten.
Selecteer in het linkerdeelvenster het knooppunt Gebruikers. De nieuwe account verschijnt in de lijst.
De groep van toepassingen instellen op gebruik van de nieuwe lokale gebruikersaccount
Vouw het knooppunt Groepen van toepassingen uit.
Klik met de rechtermuisknop op de gewenste groep van toepassingen en klik op Eigenschappen.
Open het tabblad Identiteit.
Selecteer het keuzerondje Configureerbaar.
Geef de gebruikersnaam en het wachtwoord van de nieuwe account op.
Geef het wachtwoord nogmaals op in het vak Wachtwoord bevestigen en klik op OK.
Internet Information Services 7 en 7.5 (Windows Vista SP2, Windows Server 2008 SP1, Windows 7 en Windows Server 2008 R2)
Selecteer de gewenste groep van toepassingen.
Klik in het deelvenster Acties op de koppeling Geavanceerde instellingen.
Stel in de sectie Procesmodel de eigenschap Identiteit in op ApplicationPoolIdentity. Met deze instelling wordt automatisch een unieke identiteit voor deze groep van toepassingen gemaakt. In de volgende secties kunt u deze unieke identiteit gebruiken om DACL's (Discretionary Access Control Lists) in te stellen op de bestandslocaties waartoe de toepassing toegang nodig heeft.
DACL's instellen op locaties met toepassingsinhoud
De DACL (Discretionary Access Control List) is een lijst met machtigingen die betrekking hebben op een object en kunnen worden gebruikt om toegang tot het object te beheren. Door DACL's te gebruiken om toegang tot toepassingsinhoud te beperken, kunt u de isolatie tussen sites die op dezelfde webserver worden gehost, versterken. Zie Beveiligde inhoud in IIS via bestandssysteem-ACL's voor meer informatie over ACL's en IIS-identiteiten.
Alle versies van IIS
Open de hoofdmap voor de site-inhoud vanaf een opdrachtprompt of in Windows Verkenner.
Gebruik een van de volgende methoden om vermeldingen voor niet-beheerderstoegang tot deze locatie te verwijderen. (De groep Gebruikers valt hier ook onder.)
Klik in Windows Verkenner met de rechtermuisknop op de map, selecteer Eigenschappen, klik op het tabblad Beveiliging en wijzig de toegangsbeheerlijst.
Gebruik bij de opdrachtprompt het hulpprogramma icacls.exe (of cacls.exe in oudere versies van het Windows-besturingssysteem) om de toegangsbeheerlijst te wijzigen.
Voeg een nieuwe vermelding toe voor de procesidentiteit die u voor de site hebt geselecteerd.
Geef de nieuwe identiteit de toegang Lezen en uitvoeren voor de map.
Als er bepaalde mappen zijn waarvoor de toepassing de machtiging Schrijven nodig heeft (bijvoorbeeld een uploadmap), gaat u als volgt te werk:
Klik in Windows Verkenner met de rechtermuisknop op de map, selecteer Eigenschappen, klik op het tabblad Beveiliging en voeg de machtiging Wijzigen toe voor de procesidentiteit.
Ga als volgt te werk voor mappen met statische inhoud (afbeeldingen, tekstbestanden enzovoort):
Klik in het linkerdeelvenster met de rechtermuisknop op de naam van de desbetreffende map en klik vervolgens op Eigenschappen.
Open het tabblad Map.
Selecteer in de lijst Machtigingen tot uitvoeren de optie Geen.
Voor mappen met statische inhoud (afbeeldingen, tekstbestanden enzovoort) voegt u een bestandsvermelding 'web.config' voor de locatie toe waarmee de machtiging Script niet wordt toegestaan in de instelling accessPolicy: <system.webServer> <handlers accessPolicy="Read,Write" /> </system.webServer>
Een maplocatie Temporary ASP.NET Files instellen en de DACL's per site instellen
Voor ASP.NET is een locatie op de server nodig om tijdelijke gegevens in op te slaan, bijvoorbeeld gecompileerde bestanden. Dit betreft meestal de map Temporary ASP.NET Files. Deze map bevindt zich standaard onder de map waarin .NET Framework is geïnstalleerd. U kunt de isolatie tussen sites die op dezelfde webserver worden gehost, versterken door een andere tijdelijke locatie aan elke site toe te wijzen en de map afzonderlijk op de juiste wijze te beveiligen. Zie Dynamische compilatie in ASP.NET voor meer informatie over de map Temporary ASP.NET Files.
Voor elke site een andere maplocatie Temporary ASP.NET Files instellen
Maak voor elke site een nieuwe map om tijdelijke ASP.NET-bestanden voor die site in op te slaan. U kunt het beste een niet-systeemstation gebruiken om de tijdelijke bestanden in op te slaan.
Neem in het hoofdbestand web.config of applicationHost.config van de server een instelling op die naar de locatie van de nieuwe map voor die specifieke site verwijst door een <location>-element te gebruiken, bijvoorbeeld: <configuration> <location path="pad"> <system.web> <compilation tempDirectory="pad-tijdelijke-bestanden" /> </system.web> </location> <!-- enzovoort --> </configuration>
De juiste DACL's instellen op de maplocatie Temporary ASP.NET Files
Gebruik een opdrachtprompt of Windows Verkenner om machtigingen voor niet-beheerderstoegang tot deze locatie te verwijderen. (De groep Gebruikers valt hier ook onder.)
Voeg een nieuwe vermelding toe voor de procesidentiteit die u eerder voor deze site hebt geselecteerd en geef deze identiteit vervolgens de toegang Wijzigen voor de map.
Gevoelige configuratiegegevens uit hoofdconfiguratiebestanden verwijderen
Web.config-bestanden van de toepassing bevinden zich in de inhoudsmap voor de toepassing. Hoewel web.config-bestanden van de toepassing niet door ASP.NET worden aangeboden, is het beter om beveiligingsgevoelige informatie als computersleutelinstellingen en verbindingsreeksen in een configuratiebestand te plaatsen dat zich buiten de toepassingslocatie bevindt. Dit vormt een extra beveiliging tegen het vrijgeven van informatie.
Het is niet verstandig gegevens van verschillende sites te isoleren door beveiligingsgevoelige configuratie-informatie op te slaan in het hoofdbestand web.config, omdat alle sites leesmachtigingen hebben tot dit bestand. Sla in IIS 6 beveiligingsgevoelige configuratie-informatie daarom op in het web.config-bestand van de toepassing. Hierdoor kan gevoelige configuratie-informatie van verschillende sites worden geïsoleerd. Uw toepassing vertrouwt dan op ASP.NET-beveiliging om te voorkomen dat het web.config-bestand van de toepassing wordt aangeboden en om te waarborgen dat gevoelige informatie niet wordt vrijgegeven.
In IIS 7 en latere versies verplaatst u de gevoelige configuratie-informatie die zich in het IIS-bestand applicationHost.config bevindt, naar een <location>-element waarmee de configuratie-informatie wordt beperkt tot de site waarop deze van toepassing is. Zie Vergrendelen gebruiken in een IIS 7.0-configuratie voor meer informatie. Microsoft bedankt de volgende mensen voor hun bijdrage aan het verbeteren van de beveiliging voor onze klanten: