Dela via


Säkerhetsöversikt

Säkerhetsramverket i Windows Web Services API (WWSAPI) tillhandahåller:

  • Meddelandeintegritet, konfidentialitet, upprepningsidentifiering och serverautentisering med transportsäkerhet.
  • Klientautentisering, till exempel verifiering av säkerhetstoken, certifikatförtroende och återkallningskontroller osv. med hjälp av SOAP-meddelandesäkerhet eller transportsäkerhet.

Säkerhetsprogrammeringsmodellen

Säkerhet är associerad med kommunikationskanaler. Att skydda en kanal består av följande steg.

  • Skapa och initiera en eller flera säkerhetsbindningar lämpliga för programmets säkerhetskrav.
  • Skapa en säkerhetsbeskrivning som innehåller dessa säkerhetsbindningar.
  • Skapa en kanal eller tjänstproxy (på klientsidan) eller skapa en lyssnare eller tjänstvärd (på serversidan) som skickar den säkerhetsbeskrivningen.
  • Utför de normala kanalprogrammeringsstegen i Öppna, Acceptera, Skicka, Ta emot, Stäng osv.

Meddelanden som skickas och tas emot på kanalen skyddas av systemet automatiskt enligt den angivna säkerhetsbeskrivningen. Du kan också finjustera de här stegen genom att ange en eller flera kanalomfattande säkerhetsinställningar i säkerhetsbeskrivningen eller bindningsomfattande säkerhetsinställningar i en säkerhetsbindning.

All nödvändig auktorisering av avsändaridentiteter måste utföras av programmet med hjälp av säkerhetsbearbetningsresultat kopplade till varje mottaget meddelande. Auktoriseringssteg anges inte i säkerhetsbeskrivningen och utförs inte heller automatiskt av körmiljön.

Fel i säkerhetsbeskrivningen, såsom bindningar som inte stöds, ej tillämpliga egenskaper/fält, brist på obligatoriska egenskaper/fält eller ogiltiga egenskaps-/fältvärden, kommer att orsaka att kanal- eller lyssnarskapande misslyckas.

Välja säkerhetsbindningar

När du utformar säkerhet för ett program är det primära beslutet valet av de säkerhetsbindningar som ska ingå i säkerhetsbeskrivningen. Följande är några riktlinjer för att välja säkerhetsbindningar som är lämpliga för ett programs säkerhetsscenario. En användbar heuristik är att först förstå vilka typer av säkerhetsautentiseringsuppgifter (till exempel X.509-certifikat, användarnamn/lösenord för Windows-domänen, programdefinierade användarnamn/lösenord) kommer att vara tillgängliga för programmet och sedan välja en säkerhetsbindning som kan använda den typen av autentiseringsuppgifter.

Kanaler och säkerhet

Som nämnts ovan är säkerheten begränsad till kanaler. Dessutom mappas kanalåtgärder till säkerhetssteg konsekvent i alla säkerhetsbindningar.

  • Skapa kanal: Den uppsättning säkerhetsbindningar som anges i säkerhetsbeskrivningen verifieras och förblir fast för kanalen därefter. Formen på kanalstacken, inklusive alla sidokanaler som ska användas för WS-Trust baserade förhandlingar, bestäms också.
  • Öppen kanal: Alla autentiseringsuppgifter som anges som en del av säkerhetsinställningar läses in och säkerhetssessioner upprättas. I allmänhet innehåller en öppen kanal ett aktivt säkerhetsstatus. När du öppnar en klientkanal anges också serverns slutpunktadress mot vilken serverautentiseringen kommer att utföras av körningen.
  • Mellan kanalen öppen och stäng: Meddelanden kan skickas och tas emot på ett säkert sätt under den här fasen.
  • Skicka meddelande: Säkerhetskontexttoken hämtas eller förnyas efter behov och säkerheten tillämpas på varje överfört meddelande enligt säkerhetsbeskrivningen. Fel som påträffas vid tillämpning av säkerhet returneras till programmet som skickfel.
  • Ta emot meddelande: Säkerheten verifieras för varje mottaget meddelande enligt säkerhetsbeskrivningen. Eventuella verifieringsfel för meddelandesäkerhet returneras till programmet som mottagna fel. Dessa fel för varje meddelande påverkar inte kanalens tillstånd eller efterföljande mottagningar av meddelanden. Programmet kan ta bort en misslyckad mottagning och starta om en mottagning för ett annat meddelande.
  • Avbryt kanal: Kanalen kan avbrytas när som helst för att avbryta all I/O på kanalen. När den avbryts hamnar kanalen i ett felaktigt tillstånd och tillåter inte fler sändningar eller mottagningar. Kanalen kan dock fortfarande behålla vissa aktiva säkerhetstillstånd, så en efterföljande stängning av kanalen kommer att vara nödvändig för att ta bort alla tillstånd ordentligt.
  • Stängning av kanal: Det säkerhetstillstånd som skapades vid öppning tas bort och sessioner avslutas. Säkerhetskontexttokens annulleras. Kanalstacken finns kvar, men innehåller inget "aktivt" säkerhetstillstånd eller inlästa inloggningsuppgifter.
  • Kanalfri: Kanalstacken som skapas vid skapande, tillsammans med alla säkerhetsresurser, frigörs.

Säkerhets-API:er

API-dokumentationen för säkerhet är grupperad i följande avsnitt.

Säkerhet

När du använder WWSAPI-säkerhets-API:et står program inför flera säkerhetsrisker:

oavsiktlig felkonfiguration

WWSAPI stöder en rad säkerhetsrelaterade konfigurationsalternativ. Se till exempel WS_SECURITY_BINDING_PROPERTY_ID. Vissa av dessa alternativ, till exempel WS_SECURITY_BINDING_PROPERTY_ALLOW_ANONYMOUS_CLIENTS, tillåter att programmet sänker standardnivån för den säkerhet som de olika säkerhetsbindningarna tillhandahåller. Användningen av sådana alternativ bör noggrant utvärderas för att säkerställa att det inte finns några resulterande attackvektorer.

Enligt beskrivningen ovan tillåter WWSAPI dessutom att ett program avsiktligt inaktiverar vissa steg som krävs för att helt skydda ett meddelandeutbyte, till exempel att tillåta att kryptering inaktiveras trots att säkerhetsautentiseringsuppgifter överförs. Detta är tillåtet att aktivera vissa specifika scenarier och bör inte användas för allmän kommunikation. Den WS_PROTECTION_LEVEL måste sänkas specifikt för att aktivera dessa scenarier, och program bör inte ändra det värdet om det inte är absolut nödvändigt, eftersom det inaktiverar många kontroller som är utformade för att säkerställa en säker konfiguration.

lagra konfidentiell information i minnet

Konfidentiell information, till exempel lösenord, som lagras i minnet är sårbar för att extraheras av en privilegierad angripare med hjälp av till exempel sidfilen. WWSAPI gör en kopia av angivna autentiseringsuppgifter och krypterar den kopian, vilket lämnar ursprungliga data oskyddade. Det är programmets ansvar att skydda den ursprungliga instansen. Dessutom dekrypteras den krypterade kopian kort när den används, vilket skapar en möjlighet att extrahera den.

Överbelastningsattack

Säkerhetsbearbetning kan förbruka betydande resurser. Varje ytterligare säkerhetsbindning ökar dessa kostnader. WWSAPI avbryter säkerhetsbearbetningen så snart ett säkerhetsverifieringsfel påträffas, men vissa kontroller, till exempel auktoriseringsbeslut, får inte äga rum förrän betydande arbete har utförts.

När ett meddelande bearbetas på servern lagras säkerhetstillståndet på meddelandehögen. Programmet kan begränsa minnesförbrukningen under säkerhetsbearbetningen genom att minska storleken på heapen via WS_MESSAGE_PROPERTY_HEAP_PROPERTIES. Dessutom kan vissa säkerhetsbindningar som WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING göra så att servern allokerar resurser för klientens räkning. Gränserna för dessa resurser kan konfigureras med hjälp av följande WS_SECURITY_BINDING_PROPERTY_ID värden:

  • WS_SÄKERHETSBINDNINGSEGENSKAP_SÄKERHETSKONTEXT_MAX_ANTAL_OAVSLUTADE_KONTEXTS
  • WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_MAX_ACTIVE_CONTEXTS
  • WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_RENEWAL_INTERVAL
  • WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_ROLLOVER_INTERVAL

Om du ställer in dessa gränser på låga värden minskar den maximala minnesförbrukningen, men kan leda till att legitima klienter avvisas när kvoten nås.