Säkerhet för serverlösa funktioner
Den här artikeln beskriver Azure-tjänster och aktiviteter som säkerhetspersonal kan implementera för serverlösa functions. Dessa riktlinjer och resurser hjälper till att utveckla säker kod och distribuera säkra program till molnet.
Planerad
De främsta målen med en säker serverlös Azure Functions-programmiljö är att skydda program som körs, snabbt identifiera och åtgärda säkerhetsproblem och förhindra framtida liknande problem.
OWASP Serverless Top 10 beskriver de vanligaste säkerhetsriskerna för serverlösa program och tillhandahåller grundläggande tekniker för att identifiera och skydda mot dem.
På många sätt är planeringen för säker utveckling, distribution och drift av serverlösa funktioner ungefär densamma som för alla webbaserade program eller molnbaserade program. Azure App Service tillhandahåller värdinfrastrukturen för dina funktionsappar. Artikeln Skydda Azure Functions innehåller säkerhetsstrategier för att köra funktionskoden och hur App Service kan hjälpa dig att skydda dina funktioner.
Mer information om Säkerhet i Azure, metodtips och delat ansvar finns i:
- Säkerhet i Azure App Service
- Inbyggda säkerhetskontroller
- Säkra metodtips för utveckling i Azure.
- Metodtips för säkerhet för Azure-lösningar (PDF-rapport)
- Delat ansvar för molnbaserad databehandling
Distribution
För att förbereda serverlösa Functions-program för produktion bör säkerhetspersonalen:
- Utför regelbundna kodgranskningar för att identifiera säkerhetsrisker för kod och bibliotek.
- Definiera resursbehörigheter som Functions måste köra.
- Konfigurera nätverkssäkerhetsregler för inkommande och utgående kommunikation.
- Identifiera och klassificera åtkomst till känsliga data.
Artikeln Azure Security Baseline for Azure Functions innehåller fler rekommendationer som hjälper dig att förbättra säkerhetsstatusen för din distribution.
Skydda koden
Hitta säkerhetsrisker och fel i kod och hantera säkerhetsrisker i projekt och beroenden.
Mer information finns i:
Utföra indataverifiering
Olika händelsekällor som Blob Storage, Azure Cosmos DB NoSQL-databaser, händelsehubbar, köer eller Graph-händelser kan utlösa serverlösa funktioner. Inmatningar är inte strikt begränsade till indata som kommer direkt från API-anropen. Funktioner kan använda andra indata från möjliga händelsekällor.
I allmänhet ska du inte lita på indata eller göra några antaganden om dess giltighet. Använd alltid säkra API:er som sanerar eller verifierar indata. Om möjligt använder du API:er som binder eller parameteriserar variabler, som att använda förberedda instruktioner för SQL-frågor.
Mer information finns i:
- Azure Functions-indataverifiering med FluentValidation
- Säkerhetsram: Åtgärder för validering av indata
- Verifiering av HTTP-utlösare för funktionsbegäran
- Så här validerar du begäran för Azure Functions
Skydda HTTP-slutpunkter för utveckling, testning och produktion
Med Azure Functions kan du använda nycklar för att göra det svårare att komma åt http-funktionsslutpunkterna. Om du vill skydda funktionsslutpunkterna fullständigt i produktion kan du överväga att implementera något av följande säkerhetsalternativ på funktionsappnivå:
- Aktivera App Service-autentisering och auktorisering för din Functions-app. Se Auktoriseringsnycklar.
- Använd Azure API Management (APIM) för att autentisera begäranden. Se Importera en Azure-funktionsapp som ett API i Azure API Management.
- Distribuera din Functions-app till en Azure App Service-miljön (ASE).
- Använd en App Service-plan som begränsar åtkomsten och implementerar Azure Front Door + WAF för att hantera dina inkommande begäranden. Se Skapa en Front Door för ett globalt webbprogram med hög tillgänglighet.
Mer information finns i Skydda en HTTP-slutpunkt i produktion.
Konfigurera rollbaserad åtkomstkontroll i Azure (Azure RBAC)
Rollbaserad åtkomstkontroll i Azure (Azure RBAC) har flera inbyggda Azure-roller som du kan tilldela användare, grupper, tjänstens huvudnamn och hanterade identiteter för att styra åtkomsten till Azure-resurser. Om de inbyggda rollerna inte uppfyller organisationens behov kan du skapa egna anpassade Azure-roller.
Granska varje Functions-app före distributionen för att identifiera överdrivna behörigheter. Granska funktionerna noggrant för att tillämpa behörigheter med "lägsta behörighet", vilket ger varje funktion endast vad den behöver för att köras korrekt.
Använd Azure RBAC för att tilldela behörigheter till användare, grupper och program i ett visst omfång. Omfånget för en rolltilldelning kan vara en prenumeration, en resursgrupp eller en enskild resurs. Undvik att använda jokertecken när det är möjligt.
Mer information om Azure RBAC finns i:
- Vad är rollbaserad åtkomstkontroll i Azure (Azure RBAC)?
- Inbyggda roller i Azure
- Anpassade roller i Azure
Använda hanterade identiteter och nyckelvalv
En vanlig utmaning när du skapar molnprogram är hur du hanterar autentiseringsuppgifter för autentisering till molntjänster i din kod. Autentiseringsuppgifter bör aldrig visas i programkod, arbetsstationer för utvecklare eller källkontroll. Använd i stället ett nyckelvalv för att lagra och hämta nycklar och autentiseringsuppgifter. Azure Key Vault är ett sätt att lagra autentiseringsuppgifter, hemligheter och andra nycklar på ett säkert sätt. Koden autentiserar till Key Vault för att hämta autentiseringsuppgifterna.
Mer information finns i Använda Key Vault-referenser för App Service och Azure Functions.
Med hanterade identiteter kan Functions-appar komma åt resurser som nyckelvalv och lagringskonton utan att kräva specifika åtkomstnycklar eller anslutningssträng. En fullständig spårningslogg i loggarna visar vilka identiteter som kör begäranden till resurser. Använd Azure RBAC och hanterade identiteter för att kontrollera exakt vilka resurser Azure Functions-program kan komma åt.
Mer information finns i:
- Vad är hanterade identiteter för Azure-resurser?
- Så här använder du hanterade identiteter för App Service och Azure Functions
Använda SAS-token (signatur för delad åtkomst) för att begränsa åtkomsten till resurser
En signatur för delad åtkomst (SAS) ger säker delegerad åtkomst till resurser i ditt lagringskonto, utan att äventyra säkerheten för dina data. Med en SAS har du detaljerad kontroll över hur en klient kan komma åt dina data. Du kan styra vilka resurser klienten kan komma åt, vilka behörigheter de har för dessa resurser och hur länge SAS är giltigt, bland andra parametrar.
Mer information finns i Bevilja begränsad åtkomst till Azure Storage-resurser med hjälp av signaturer för delad åtkomst (SAS).
Säker bloblagring
Identifiera och klassificera känsliga data och minimera känslig datalagring till endast det som är nödvändigt. För känslig datalagring lägger du till multifaktorautentisering och datakryptering under överföring och i vila. Bevilja begränsad åtkomst till Azure Storage-resurser med hjälp av SAS-token.
Mer information finns i Säkerhetsrekommendationer för Blob Storage.
Optimering
När ett program är i produktion kan säkerhetspersonal hjälpa till att optimera arbetsflödet och förbereda för skalning.
Använda Microsoft Defender för molnet och tillämpa säkerhetsrekommendationer
Microsoft Defender för molnet är en säkerhetsgenomsökningslösning för ditt program som identifierar potentiella säkerhetsrisker och skapar rekommendationer. Rekommendationerna hjälper dig att konfigurera nödvändiga kontroller för att härda och skydda dina resurser.
Mer information finns i:
Tillämpa principer för programstyrning
Tillämpa centraliserade, konsekventa tillämpningsåtgärder och skyddsåtgärder för ditt program i stor skala. Mer information finns i Inbyggda principdefinitioner för Azure Policy.
Nästa steg
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för