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:

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:

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å:

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:

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:

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