Utforma säkra program i Azure

I den här artikeln presenterar vi säkerhetsaktiviteter och kontroller att tänka på när du utformar program för molnet. Utbildningsresurser tillsammans med säkerhetsfrågor och begrepp att tänka på under kraven och designfaserna i Microsoft Security Development Lifecycle (SDL) omfattas. Målet är att hjälpa dig att definiera aktiviteter och Azure-tjänster som du kan använda för att utforma ett säkrare program.

Följande SDL-faser beskrivs i den här artikeln:

  • Utbildning
  • Behov
  • Designa

Utbildning

Innan du börjar utveckla ditt molnprogram bör du ta dig tid att förstå säkerhet och sekretess i Azure. Genom att ta det här steget kan du minska antalet och allvarlighetsgraden för sårbarheter som kan utnyttjas i ditt program. Du kommer att vara mer beredd att reagera på lämpligt sätt på det ständigt föränderliga hotlandskapet.

Använd följande resurser under utbildningssteget för att bekanta dig med de Azure-tjänster som är tillgängliga för utvecklare och med metodtips för säkerhet i Azure:

  • Utvecklarguiden till Azure visar hur du kommer igång med Azure. Guiden visar vilka tjänster du kan använda för att köra dina program, lagra dina data, införliva intelligens, skapa IoT-appar och distribuera dina lösningar på ett effektivare och säkrare sätt.

  • Kom igång-guiden för Azure-utvecklare ger viktig information för utvecklare som vill komma igång med azure-plattformen för sina utvecklingsbehov.

  • SDK:er och verktyg beskriver de verktyg som är tillgängliga i Azure.

  • Azure DevOps Services tillhandahåller samarbetsverktyg för utveckling. Verktygen omfattar högpresterande pipelines, kostnadsfria Git-lagringsplatser, konfigurerbara Kanban-tavlor och omfattande automatiserad och molnbaserad belastningstestning. DevOps Resource Center kombinerar våra resurser för att lära sig DevOps-metoder, Git-versionskontroll, agila metoder, hur vi arbetar med DevOps på Microsoft och hur du kan utvärdera din egen DevOps-utveckling.

  • De fem viktigaste säkerhetsobjekten att tänka på innan du skickar till produktion visar hur du skyddar dina webbprogram i Azure och skyddar dina appar mot de vanligaste och farligaste webbprogramattackerna.

  • Secure DevOps Kit för Azure är en samling skript, verktyg, tillägg och automatiseringar som tillgodoser de omfattande Azure-prenumerations- och resurssäkerhetsbehoven för DevOps-team som använder omfattande automatisering. Secure DevOps Kit för Azure kan visa hur du smidigt integrerar säkerhet i dina interna DevOps-arbetsflöden. Paketet hanterar verktyg som säkerhetsverifieringstester (SVT), som kan hjälpa utvecklare att skriva säker kod och testa den säkra konfigurationen av sina molnprogram i kodnings- och tidiga utvecklingsstadier.

  • Metodtips och mönster för Azure-säkerhet – En samling metodtips för säkerhet som du kan använda när du utformar, distribuerar och hanterar molnlösningar med hjälp av Azure. Vägledning är avsedd att vara en resurs för IT-proffs. Detta kan omfatta designers, arkitekter, utvecklare och testare som skapar och distribuerar säkra Azure-lösningar.

Behov

Kravdefinitionsfasen är ett viktigt steg för att definiera vad ditt program är och vad det gör när det släpps. Kravfasen är också en tid att tänka på de säkerhetskontroller som du skapar i ditt program. Under den här fasen påbörjar du också de steg som du vidtar i hela SDL:et för att se till att du släpper och distribuerar ett säkert program.

Överväg säkerhets- och sekretessproblem

Den här fasen är den bästa tiden att överväga grundläggande säkerhets- och sekretessproblem. Genom att definiera godtagbara säkerhets- och sekretessnivåer i början av ett projekt kan ett team:

  • Förstå risker som är kopplade till säkerhetsproblem.
  • Identifiera och åtgärda säkerhetsbuggar under utvecklingen.
  • Tillämpa etablerade säkerhets- och sekretessnivåer i hela projektet.

När du skriver kraven för ditt program bör du tänka på säkerhetskontroller som kan hjälpa dig att skydda ditt program och dina data.

Ställ säkerhetsfrågor

Ställ säkerhetsfrågor som:

  • Innehåller mitt program känsliga data?

  • Samlar mitt program in eller lagrar data som kräver att jag följer branschstandarder och efterlevnadsprogram som Federal Financial Institution Examination Council (FFIEC) eller Payment Card Industry Data Security Standards (PCI DSS)?

  • Samlar mitt program in eller innehåller känsliga personliga data eller kunddata som kan användas, antingen på egen hand eller med annan information, för att identifiera, kontakta eller hitta en enskild person?

  • Samlar mitt program in eller innehåller data som kan användas för att få åtkomst till en individs medicinska, utbildningsmässiga, ekonomiska eller anställningsinformation? Genom att identifiera känsligheten för dina data under kravfasen kan du klassificera dina data och identifiera den dataskyddsmetod som du använder för ditt program.

  • Var och hur lagras mina data? Överväg hur du övervakar de lagringstjänster som programmet använder för oväntade ändringar (till exempel långsammare svarstider). Kan du påverka loggning för att samla in mer detaljerade data och analysera ett problem på djupet?

  • Är mitt program tillgängligt för allmänheten (på Internet) eller endast internt? Hur skyddar du de data som kan samlas in från att användas på fel sätt om programmet är tillgängligt för allmänheten? Om ditt program endast är tillgängligt internt bör du överväga vem i din organisation som ska ha åtkomst till programmet och hur länge de ska ha åtkomst.

  • Förstår du din identitetsmodell innan du börjar utforma ditt program? Kan du fastställa att användarna är de som de säger att de är och vad en användare har behörighet att göra?

  • Utför mitt program känsliga eller viktiga uppgifter (som att överföra pengar, låsa upp dörrar eller leverera medicin)? Överväg hur du verifierar att användaren som utför en känslig uppgift har behörighet att utföra uppgiften och hur du autentiserar att personen är den de säger att de är. Auktorisering (AuthZ) är att bevilja autentiserade säkerhetsobjekt behörighet att göra något. Autentisering (AuthN) handlar om att utmana en part om legitima autentiseringsuppgifter.

  • Utför mitt program några riskfyllda programvaruaktiviteter, som att tillåta användare att ladda upp eller ladda ned filer eller andra data? Om ditt program utför riskfyllda aktiviteter bör du överväga hur programmet skyddar användare från att hantera skadliga filer eller data.

Granska OWASP topp 10

Överväg att granska OWASP:s 10 främsta programsäkerhetsrisker. OWASP Top 10 hanterar kritiska säkerhetsrisker för webbprogram. Medvetenhet om dessa säkerhetsrisker kan hjälpa dig att fatta krav och designbeslut som minimerar dessa risker i ditt program.

Det är viktigt att tänka på säkerhetskontroller för att förhindra överträdelser. Men du vill också anta att ett intrång inträffar. Förutsatt att ett intrång hjälper till att besvara några viktiga frågor om säkerhet i förväg, så att de inte behöver besvaras i en nödsituation:

  • Hur ska jag identifiera en attack?
  • Vad ska jag göra om det sker en attack eller ett intrång?
  • Hur ska jag återställa mig från attacken som att data läcker eller manipuleras?

Designa

Designfasen är viktig för att upprätta metodtips för design och funktionella specifikationer. Det är också viktigt för att utföra riskanalyser som hjälper till att minska säkerhets- och sekretessproblem i ett projekt.

När du har säkerhetskrav på plats och använder säkra designbegrepp kan du undvika eller minimera möjligheter till säkerhetsbrister. En säkerhetsbrist är ett förbiseende i utformningen av programmet som kan göra det möjligt för en användare att utföra skadliga eller oväntade åtgärder när programmet har släppts.

Under designfasen bör du även tänka på hur du kan tillämpa säkerhet i lager. en nivå av försvar är inte nödvändigtvis tillräckligt. Vad händer om en angripare kommer förbi brandväggen för webbprogram (WAF)? Du vill ha en annan säkerhetskontroll på plats för att försvara dig mot attacken.

Med detta i åtanke diskuterar vi följande säkra designkoncept och de säkerhetskontroller som du bör hantera när du utformar säkra program:

  • Använd ett säkert kodningsbibliotek och ett programvaruramverk.
  • Sök efter sårbara komponenter.
  • Använd hotmodellering under programdesignen.
  • Minska attackytan.
  • Anta en identitetsprincip som primär säkerhetsperimeter.
  • Kräv omautentisering för viktiga transaktioner.
  • Använd en nyckelhanteringslösning för att skydda nycklar, autentiseringsuppgifter och andra hemligheter.
  • Skydda känsliga data.
  • Implementera felsäkra mått.
  • Dra nytta av fel- och undantagshantering.
  • Använd loggning och aviseringar.

Använda ett säkert kodningsbibliotek och ett programvaruramverk

För utveckling använder du ett säkert kodningsbibliotek och ett programvaruramverk som har inbäddad säkerhet. Utvecklare kan använda befintliga, beprövade funktioner (kryptering, sanitet för indata, kodning av utdata, nycklar eller anslutningssträng och allt annat som skulle betraktas som en säkerhetskontroll) i stället för att utveckla säkerhetskontroller från grunden. Detta skyddar mot säkerhetsrelaterade design- och implementeringsfel.

Se till att du använder den senaste versionen av ramverket och alla säkerhetsfunktioner som är tillgängliga i ramverket. Microsoft erbjuder en omfattande uppsättning utvecklingsverktyg för alla utvecklare som arbetar på valfri plattform eller språk för att leverera molnprogram. Du kan koda med det språk du väljer genom att välja bland olika SDK:er. Du kan dra nytta av fullständiga integrerade utvecklingsmiljöer (IDE:er) och redigerare som har avancerade felsökningsfunktioner och inbyggt Azure-stöd.

Microsoft erbjuder olika språk, ramverk och verktyg som du kan använda för att utveckla program i Azure. Ett exempel är Azure för .NET- och .NET Core-utvecklare. För varje språk och ramverk som vi erbjuder hittar du snabbstarter, självstudier och API-referenser som hjälper dig att komma igång snabbt.

Azure erbjuder olika tjänster som du kan använda för att vara värd för webbplatser och webbprogram. Med de här tjänsterna kan du utveckla på ditt favoritspråk, oavsett om det är .NET, .NET Core, Java, Ruby, Node.js, PHP eller Python. Azure App Service Web Apps (Web Apps) är en av dessa tjänster.

Web Apps lägger till kraften i Microsoft Azure i ditt program. Den innehåller säkerhet, belastningsutjämning, automatisk skalning och automatiserad hantering. Du kan också dra nytta av DevOps-funktioner i Web Apps, till exempel pakethantering, mellanlagringsmiljöer, anpassade domäner, SSL/TLS-certifikat och kontinuerlig distribution från Azure DevOps, GitHub, Docker Hub och andra källor.

Azure erbjuder andra tjänster som du kan använda för att vara värd för webbplatser och webbprogram. I de flesta fall är Web Apps det bästa alternativet. För en mikrotjänstarkitektur bör du överväga Azure Service Fabric. Om du behöver större kontroll över de virtuella datorer koden körs på kan du använda Azure Virtual Machines. Mer information om hur du väljer mellan dessa Azure-tjänster finns i en jämförelse av Azure App Service, Virtual Machines, Service Fabric och Cloud Services.

Tillämpa uppdateringar på komponenter

För att förhindra sårbarheter bör du kontinuerligt inventera både komponenter på klientsidan och på serversidan (till exempel ramverk och bibliotek) och deras beroenden för uppdateringar. Nya sårbarheter och uppdaterade programvaruversioner släpps kontinuerligt. Se till att du har en pågående plan för att övervaka, sortera och tillämpa uppdateringar eller konfigurationsändringar på de bibliotek och komponenter som du använder.

Se sidan Open Web Application Security Project (OWASP) om hur du använder komponenter med kända sårbarheter för verktygsförslag. Du kan också prenumerera på e-postaviseringar för säkerhetsrisker som är relaterade till komponenter som du använder.

Använda hotmodellering under programdesignen

Hotmodellering är en process för att identifiera potentiella säkerhetshot mot ditt företag och program och sedan säkerställa att lämpliga åtgärder finns på plats. SDL anger att teamen ska delta i hotmodellering under designfasen, när det är relativt enkelt och kostnadseffektivt att lösa potentiella problem. Om du använder hotmodellering i designfasen kan du minska den totala utvecklingskostnaden avsevärt.

För att underlätta hotmodelleringsprocessen har vi utformat SDL Threat Modeling Tool med icke-säkerhetsexperter i åtanke. Det här verktyget gör hotmodellering enklare för alla utvecklare genom att ge tydlig vägledning om hur du skapar och analyserar hotmodeller.

Modellering av programdesign och uppräkning av STRIDE-hot-förfalskning , manipulering, avvisning, avslöjande av information, Denial of Service och utökade privilegier över alla förtroendegränser har visat sig vara ett effektivt sätt att fånga designfel tidigt. I följande tabell visas STRIDE-hoten och några exempel på åtgärder som använder funktioner som tillhandahålls av Azure. Dessa åtgärder fungerar inte i alla situationer.

Hot Säkerhetsegenskap Potentiell azure-plattformsreducering
Förfalskning Autentisering Kräv HTTPS-anslutningar.
Manipulering Integritet Verifiera SSL/TLS-certifikat. Program som använder SSL/TLS måste fullständigt verifiera X.509-certifikaten för de entiteter som de ansluter till. Använd Azure Key Vault-certifikat för att hantera dina x509-certifikat.
Avvislighet Oavvislighet Aktivera Azure-övervakning och diagnostik.
Avslöjande av information Sekretess Kryptera känsliga data i vila och under överföring.
Denial of Service Tillgänglighet Övervaka prestandamått för potentiella denial of service-villkor. Implementera anslutningsfilter. Azure DDoS-skydd kombinerat med metodtips för programdesign ger skydd mot DDoS-attacker.
Höjning av privilegier Auktorisering Använd Microsoft Entra ID Privileged Identity Management.

Minska attackytan

En attackyta är den totala summan av var potentiella sårbarheter kan uppstå. I det här dokumentet fokuserar vi på ett programs attackyta. Fokus ligger på att skydda ett program från angrepp. Ett enkelt och snabbt sätt att minimera attackytan är att ta bort oanvända resurser och kod från ditt program. Ju mindre ditt program, desto mindre attackyta. Ta till exempel bort:

  • Kod för funktioner som du inte har släppt ännu.
  • Felsökning av stödkod.
  • Nätverksgränssnitt och protokoll som inte används eller som har blivit inaktuella.
  • Virtuella datorer och andra resurser som du inte använder.

Att regelbundet rensa dina resurser och se till att du tar bort oanvänd kod är bra sätt att se till att det finns färre möjligheter för skadliga aktörer att attackera.

Ett mer detaljerat och djupgående sätt att minska din attackyta är att slutföra en analys av attackytan. En analys av attackytan hjälper dig att mappa de delar av ett system som behöver granskas och testas för säkerhetsrisker.

Syftet med en analys av attackytan är att förstå riskområdena i ett program så att utvecklare och säkerhetsspecialister är medvetna om vilka delar av programmet som är öppna för angrepp. Sedan kan du hitta sätt att minimera den här potentialen, spåra när och hur attackytan ändras och vad detta innebär ur ett riskperspektiv.

En analys av attackytan hjälper dig att identifiera:

  • Funktioner och delar av systemet som du behöver granska och testa för säkerhetsrisker.
  • Högriskområden med kod som kräver skydd på djupet (delar av systemet som du behöver försvara).
  • När du ändrar attackytan och behöver uppdatera en hotbedömning.

För att minska risken för angripare att utnyttja en potentiell svag punkt eller sårbarhet måste du noggrant analysera programmets övergripande attackyta. Den omfattar även inaktivering eller begränsning av åtkomst till systemtjänster, tillämpning av principen om lägsta behörighet och användning av skydd på flera nivåer där det är möjligt.

Vi diskuterar att utföra en granskning av attackytan under verifieringsfasen av SDL.

Kommentar

Vad är skillnaden mellan hotmodellering och analys av attackytan? Hotmodellering är en process för att identifiera potentiella säkerhetshot mot ditt program och se till att lämpliga åtgärder mot hoten finns på plats. Analys av attackytan identifierar högriskområden med kod som är öppna för angrepp. Det handlar om att hitta sätt att försvara högriskområden i ditt program och granska och testa dessa kodområden innan du distribuerar programmet.

Anta en identitetsprincip som primär säkerhetsperimeter

När du utformar molnprogram är det viktigt att utöka säkerhetsperimeterns fokus från en nätverkscentrerad metod till en identitetscentrerad metod. Historiskt sett var den primära lokala säkerhetsperimetern en organisations nätverk. De flesta lokala säkerhetsdesigner använder nätverket som primär säkerhets pivot. För molnprogram får du bättre hjälp genom att betrakta identitet som den primära säkerhetsperimetern.

Saker du kan göra för att utveckla en identitetscentrerad metod för att utveckla webbprogram:

  • Framtvinga multifaktorautentisering för användare.
  • Använd starka autentiserings- och auktoriseringsplattformar.
  • Tillämpa principen om lägsta behörighet.
  • Implementera just-in-time-åtkomst.

Framtvinga multifaktorautentisering för användare

Använd tvåfaktorautentisering. Tvåfaktorsautentisering är den aktuella standarden för autentisering och auktorisering eftersom den undviker de säkerhetsbrister som är inneboende i användarnamn och lösenordstyper för autentisering. Åtkomst till Azure-hanteringsgränssnitten (Azure-portalen/fjärranslutna PowerShell) och till kundinriktade tjänster bör utformas och konfigureras för användning av Microsoft Entra multifaktorautentisering.

Använda starka autentiserings- och auktoriseringsplattformar

Använd autentiserings- och auktoriseringsmekanismer som tillhandahålls av plattformen i stället för anpassad kod. Det beror på att utveckling av anpassad autentiseringskod kan vara felbenägen. Kommersiell kod (till exempel från Microsoft) granskas ofta i stor utsträckning för säkerhet. Microsoft Entra ID (Microsoft Entra ID) är Azure-lösningen för identitets- och åtkomsthantering. Dessa Microsoft Entra-verktyg och -tjänster hjälper till med säker utveckling:

  • Microsofts identitetsplattform är en uppsättning komponenter som utvecklare använder för att skapa appar som loggar in användare på ett säkert sätt. Plattformen hjälper utvecklare som skapar appar med en enda klientorganisation, verksamhetsspecifika appar (LOB) och utvecklare som vill utveckla appar för flera klienter. Förutom grundläggande inloggning kan appar som skapats med hjälp av Microsofts identitetsplattform anropa Microsoft-API:er och anpassade API:er. Microsofts identitetsplattform stöder branschstandardprotokoll som OAuth 2.0 och OpenID Anslut.

  • Azure Active Directory B2C (Azure AD B2C) är en identitetshanteringstjänst som du använder för att anpassa och styra hur kunder registrerar sig, loggar in och hanterar sina profiler när de använder dina program. Detta inkluderar program som har utvecklats för bland annat iOS, Android och .NET. Azure AD B2C möjliggör dessa åtgärder samtidigt som kundidentiteter skyddas.

Tillämpa principen om lägsta behörighet

Begreppet minsta behörighet innebär att ge användarna den exakta åtkomst- och kontrollnivå de behöver för att utföra sina jobb och inget mer.

Skulle en programutvecklare behöva domänadministratörsrättigheter? Skulle en administrativ assistent behöva åtkomst till administrativa kontroller på sin personliga dator? Utvärdering av åtkomst till programvara är inte annorlunda. Om du använder rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att ge användarna olika funktioner och auktoriteter i ditt program skulle du inte ge alla åtkomst till allt. Genom att begränsa åtkomsten till vad som krävs för varje roll begränsar du risken för att ett säkerhetsproblem uppstår.

Se till att programmet tillämpar minsta möjliga behörighet i sina åtkomstmönster.

Kommentar

Reglerna för lägsta behörighet måste gälla för programvaran och för de personer som skapar programvaran. Programvaruutvecklare kan utgöra en stor risk för IT-säkerheten om de får för mycket åtkomst. Konsekvenserna kan bli allvarliga om en utvecklare har skadliga avsikter eller får för mycket åtkomst. Vi rekommenderar att reglerna för lägsta behörighet tillämpas på utvecklare under hela utvecklingslivscykeln.

Implementera just-in-time-åtkomst

Implementera just-in-time-åtkomst (JIT) för att ytterligare sänka exponeringstiden för privilegier. Använd Microsoft Entra Privileged Identity Management för att:

  • Ge användarna de behörigheter de bara behöver JIT.
  • Tilldela roller för en kortare varaktighet med förtroende för att behörigheterna återkallas automatiskt.

Kräv omautentisering för viktiga transaktioner

Förfalskning av begäranden mellan webbplatser (även kallat XSRF eller CSRF) är en attack mot webbaserade appar där en skadlig webbapp påverkar interaktionen mellan en klientwebbläsare och en webbapp som litar på webbläsaren. Förfalskningsattacker mellan webbplatser är möjliga eftersom webbläsare skickar vissa typer av autentiseringstoken automatiskt med varje begäran till en webbplats. Den här typen av utnyttjande kallas även för en attack med ett klick eller sessionsridning eftersom attacken utnyttjar användarens tidigare autentiserade session.

Det bästa sättet att försvara sig mot den här typen av angrepp är att be användaren om något som bara användaren kan tillhandahålla före varje viktig transaktion, till exempel ett köp, kontoinaktivering eller en lösenordsändring. Du kan be användaren att ange sitt lösenord igen, slutföra en captcha eller skicka en hemlig token som endast användaren skulle ha. Den vanligaste metoden är den hemliga token.

Använda en nyckelhanteringslösning för att skydda nycklar, autentiseringsuppgifter och andra hemligheter

Att förlora nycklar och autentiseringsuppgifter är ett vanligt problem. Det enda som är värre än att förlora dina nycklar och autentiseringsuppgifter är att en obehörig part får åtkomst till dem. Angripare kan dra nytta av automatiserade och manuella tekniker för att hitta nycklar och hemligheter som lagras i kodlagringsplatser som GitHub. Placera inte nycklar och hemligheter i dessa offentliga kodlagringsplatser eller på någon annan server.

Placera alltid dina nycklar, certifikat, hemligheter och anslutningssträng i en nyckelhanteringslösning. Du kan använda en centraliserad lösning där nycklar och hemligheter lagras i maskinvarusäkerhetsmoduler (HSM). Azure tillhandahåller en HSM i molnet med Azure Key Vault.

Key Vault är ett hemligt arkiv: det är en centraliserad molntjänst för lagring av programhemligheter. Key Vault skyddar dina konfidentiella data genom att lagra programhemligheter på en enda central plats och ge säker åtkomst, behörighetskontroll och åtkomstloggning.

Hemligheter lagras i enskilda valv. Varje valv har sina egna konfigurations- och säkerhetsprinciper för att kontrollera åtkomsten. Du kommer till dina data via ett REST API eller via en klient-SDK som är tillgänglig för de flesta programmeringsspråk.

Viktigt!

Azure Key Vault är utformat för att lagra konfigurationshemligheter för serverprogram. Den är inte avsedd för lagring av data som tillhör appanvändare. Det återspeglas i dess prestandaegenskaper, API och kostnadsmodell.

Användardata bör lagras någon annanstans, till exempel i en Azure SQL Database-instans som har transparent datakryptering (TDE) eller i ett lagringskonto som använder Azure Storage Service Encryption. Hemligheter som används av ditt program för att komma åt dessa datalager kan lagras i Azure Key Vault.

Skydda känsliga data

Att skydda data är en viktig del av din säkerhetsstrategi. Genom att klassificera dina data och identifiera dina dataskyddsbehov kan du utforma din app med datasäkerhet i åtanke. Genom att klassificera (kategorisera) lagrade data efter känslighet och affärspåverkan kan utvecklare avgöra vilka risker som är associerade med data.

Märka alla tillämpliga data som känsliga när du utformar dina dataformat. Se till att programmet behandlar tillämpliga data som känsliga. Dessa metoder kan hjälpa dig att skydda känsliga data:

  • Använd kryptering.
  • Undvik hårdkodande hemligheter som nycklar och lösenord.
  • Se till att åtkomstkontroller och granskning är på plats.

Använda kryptering

Att skydda data bör vara en viktig del av din säkerhetsstrategi. Om dina data lagras i en databas eller om de flyttas fram och tillbaka mellan platser använder du kryptering av vilande data (i databasen) och kryptering av data under överföring (på väg till och från användaren, databasen, ett API eller tjänstslutpunkten). Vi rekommenderar att du alltid använder SSL/TLS-protokoll för att utbyta data. Se till att du använder den senaste versionen av TLS för kryptering (för närvarande är det version 1.2).

Undvik hårdkodning

Vissa saker bör aldrig hårdkodas i din programvara. Några exempel är värdnamn eller IP-adresser, URL:er, e-postadresser, användarnamn, lösenord, lagringskontonycklar och andra kryptografiska nycklar. Överväg att implementera krav kring vad som kan eller inte kan hårdkodas i koden, inklusive i kommentarsavsnitten i koden.

När du lägger till kommentarer i koden ser du till att du inte sparar känslig information. Detta inkluderar din e-postadress, lösenord, anslutningssträng, information om ditt program som bara skulle vara känd av någon i din organisation och allt annat som kan ge en angripare en fördel när det gäller att attackera ditt program eller din organisation.

Anta i princip att allt i ditt utvecklingsprojekt är allmänt känt när det distribueras. Undvik att inkludera känsliga data av något slag i projektet.

Tidigare diskuterade vi Azure Key Vault. Du kan använda Key Vault för att lagra hemligheter som nycklar och lösenord i stället för att hårdkoda dem. När du använder Key Vault i kombination med hanterade identiteter för Azure-resurser kan din Azure-webbapp enkelt och säkert komma åt hemliga konfigurationsvärden utan att lagra några hemligheter i källkontrollen eller konfigurationen. Mer information finns i Hantera hemligheter i dina serverappar med Azure Key Vault.

Implementera felsäkra åtgärder

Programmet måste kunna hantera fel som inträffar under körningen på ett konsekvent sätt. Programmet bör fånga upp alla fel och antingen felsäkra eller stängda.

Du bör också se till att fel loggas med tillräcklig användarkontext för att identifiera misstänkt eller skadlig aktivitet. Loggar bör behållas under en tillräckligt lång tid för att möjliggöra fördröjd kriminalteknisk analys. Loggar bör vara i ett format som enkelt kan användas av en logghanteringslösning. Se till att aviseringar om fel som rör säkerhet utlöses. Otillräcklig loggning och övervakning gör det möjligt för angripare att ytterligare attackera system och upprätthålla beständighet.

Dra nytta av fel- och undantagshantering

Att implementera korrekt fel- och undantagshantering är en viktig del av defensiv kodning. Fel- och undantagshantering är viktiga för att göra systemet tillförlitligt och säkert. Felhanteringsfel kan leda till olika typer av säkerhetsrisker, till exempel läcka information till angripare och hjälpa angripare att förstå mer om din plattform och design.

Se till att du har gjort följande:

  • Du hanterar undantag på ett centraliserat sätt för att undvika duplicerade try/catch-block i koden.

  • Alla oväntade beteenden hanteras i programmet.

  • Meddelanden som visas för användare läcker inte viktiga data men ger tillräckligt med information för att förklara problemet.

  • Undantag loggas och att de ger tillräckligt med information för att kriminaltekniker eller incidenthanteringsteam ska kunna undersöka dem.

Azure Logic Apps ger en förstklassig upplevelse för att hantera fel och undantag som orsakas av beroende system. Du kan använda Logic Apps för att skapa arbetsflöden för att automatisera uppgifter och processer som integrerar appar, data, system och tjänster i företag och organisationer.

Använda loggning och aviseringar

Logga dina säkerhetsproblem för säkerhetsutredningar och utlös aviseringar om problem för att säkerställa att personer känner till problem i tid. Aktivera granskning och loggning av alla komponenter. Granskningsloggar bör avbilda användarkontext och identifiera alla viktiga händelser.

Kontrollera att du inte loggar känsliga data som en användare skickar till din webbplats. Exempel på känsliga data är:

  • Användarautentiseringsuppgifter
  • Personnummer eller annan identifierande information
  • Kreditkortsnummer eller annan finansiell information
  • Hälsoinformation
  • Privata nycklar eller andra data som kan användas för att dekryptera krypterad information
  • System- eller programinformation som kan användas för att mer effektivt attackera programmet

Se till att programmet övervakar användarhanteringshändelser som lyckade och misslyckade användarinloggningar, lösenordsåterställningar, lösenordsändringar, kontoutelåsning och användarregistrering. Loggning för dessa händelser hjälper dig att identifiera och reagera på potentiellt misstänkt beteende. Du kan också samla in driftdata, till exempel vem som har åtkomst till programmet.

Nästa steg

I följande artiklar rekommenderar vi säkerhetskontroller och aktiviteter som kan hjälpa dig att utveckla och distribuera säkra program.