Säkerhetsöverväganden för Azure Container Instances
Den här artikeln beskriver säkerhetsöverväganden för att använda Azure Container Instances för att köra containerprogram. Ämnena omfattar:
- Säkerhetsrekommendationer för hantering av avbildningar och hemligheter för Azure Container Instances
- Överväganden för containerekosystemet under hela containerns livscykel, för alla containerplattformar
Omfattande rekommendationer som hjälper dig att förbättra säkerhetsstatusen för distributionen finns i Azure-säkerhetsbaslinjen för containerinstanser.
Säkerhetsrekommendationer för Azure Container Instances
Använda ett privat register
Container skapas från avbildningar som lagras i en eller flera databaser. Dessa lagringsplatser kan tillhöra ett offentligt register, till exempel Docker Hub, eller till ett privat register. Ett exempel på ett privat register är Docker Trusted Registry, som kan installeras lokalt eller i ett virtuellt privat moln. Du kan också använda molnbaserade privata containerregistertjänster, inklusive Azure Container Registry.
En offentligt tillgänglig containeravbildning garanterar inte säkerhet. Containeravbildningar består av flera programvarulager och varje programvarulager kan ha säkerhetsrisker. För att minska risken för attacker bör du lagra och hämta avbildningar från ett privat register, till exempel Azure Container Registry eller Docker Trusted Registry. Förutom att tillhandahålla ett hanterat privat register har Azure Container Registry stöd för tjänstens huvudnamnsbaserad autentisering via Microsoft Entra-ID för grundläggande autentiseringsflöden. Den här autentiseringen omfattar rollbaserad åtkomst för skrivskyddad (pull), skrivning (push) och andra behörigheter.
Övervaka och skanna containeravbildningar
Dra nytta av lösningar för att skanna containeravbildningar i ett privat register och identifiera potentiella sårbarheter. Det är viktigt att förstå djupet av hotidentifiering som de olika lösningarna tillhandahåller.
Azure Container Registry kan till exempel integreras med Microsoft Defender för molnet för att automatiskt genomsöka alla Linux-avbildningar som skickas till ett register. Microsoft Defender för molnets integrerade Qualys-skanner identifierar sårbarheter i avbildningen, klassificerar dem och ger vägledning om reparation.
Säkerhetsövervaknings- och bildgenomsökningslösningar som Twistlock och Aqua Security är också tillgängliga via Azure Marketplace.
Skydda autentiseringsuppgifter
Containrar kan spridas över flera kluster och Azure-regioner. Därför måste du skydda autentiseringsuppgifter som krävs för inloggningar eller API-åtkomst, till exempel lösenord eller token. Se till att endast privilegierade användare kan komma åt containrarna under överföring och i vila. Inventera alla hemligheter för autentiseringsuppgifter och kräva sedan att utvecklare använder nya verktyg för hantering av hemligheter som är utformade för containerplattformar. Se till att lösningen innehåller krypterade databaser, TLS-kryptering för hemligheter under överföring och rollbaserad åtkomstkontroll i Azure (Azure RBAC) med minst behörighet. Azure Key Vault är en molntjänst som skyddar krypteringsnycklar och hemligheter (till exempel certifikat, niska veze och lösenord) för containerbaserade program. Eftersom dessa data är känsliga och affärskritiska kan du skydda åtkomsten till dina nyckelvalv så att endast auktoriserade program och användare kan komma åt dem.
Överväganden för containerekosystemet
Följande säkerhetsåtgärder, som implementeras väl och hanteras effektivt, kan hjälpa dig att skydda ditt containerekosystem. Dessa åtgärder gäller under hela containerns livscykel, från utveckling till produktionsdistribution och till en rad containerorkestrerare, värdar och plattformar.
Använda upravljanje ranjivostima som en del av livscykeln för containerutveckling
Genom att använda effektiva upravljanje ranjivostima under hela livscykeln för containerutveckling kan du förbättra oddsen för att identifiera och lösa säkerhetsproblem innan de blir ett allvarligare problem.
Sök efter sårbarheter
Nya sårbarheter identifieras hela tiden, så genomsökning efter och identifiering av sårbarheter är en kontinuerlig process. Införliva sårbarhetsgenomsökning under hela containerns livscykel:
- Som en sista kontroll i utvecklingspipelinen bör du utföra en sårbarhetssökning på containrar innan du skickar avbildningarna till ett offentligt eller privat register.
- Fortsätt att skanna containeravbildningar i registret både för att identifiera eventuella fel som på något sätt missades under utvecklingen och för att åtgärda eventuella nyligen identifierade säkerhetsrisker som kan finnas i koden som används i containeravbildningarna.
Mappa sårbarheter för avbildningar till containrar som körs
Du måste ha ett sätt att mappa sårbarheter som identifieras i containeravbildningar till containrar som körs, så att säkerhetsproblem kan åtgärdas eller åtgärdas.
Se till att endast godkända avbildningar används i din miljö
Det finns tillräckligt med förändring och volatilitet i ett containerekosystem utan att tillåta okända containrar också. Tillåt endast godkända containeravbildningar. Ha verktyg och processer på plats för att övervaka och förhindra användning av icke godkända containeravbildningar.
Ett effektivt sätt att minska attackytan och hindra utvecklare från att göra kritiska säkerhetsmisstag är att kontrollera flödet av containeravbildningar till utvecklingsmiljön. Du kan till exempel sanktionera en enskild Linux-distribution som en basavbildning, helst en som är mager (Alpine eller CoreOS snarare än Ubuntu), för att minimera ytan för potentiella attacker.
Bildsignering eller fingeravtryck kan ge en kedja av vårdnad som gör att du kan verifiera containrarnas integritet. Azure Container Registry har till exempel stöd för Docker-innehållsförtroendemodellen, som gör det möjligt för bildutgivare att signera avbildningar som skickas till ett register och bildkonsumenter att endast hämta signerade avbildningar.
Tillåt endast godkända register
Ett tillägg för att säkerställa att din miljö endast använder godkända avbildningar är att endast tillåta användning av godkända containerregister. Om du kräver användning av godkända containerregister minskar din riskexponering genom att begränsa risken för att okända säkerhetsrisker eller säkerhetsproblem kan införas.
Säkerställa integriteten för bilder under hela livscykeln
En del av att hantera säkerheten under hela containerns livscykel är att säkerställa integriteten för containeravbildningarna i registret och när de ändras eller distribueras till produktion.
Bilder med säkerhetsrisker, även mindre, bör inte tillåtas köras i en produktionsmiljö. Helst bör alla avbildningar som distribueras i produktion sparas i ett privat register som är tillgängligt för några få utvalda. Håll antalet produktionsbilder litet för att säkerställa att de kan hanteras effektivt.
Eftersom det är svårt att hitta ursprunget till programvara från en offentligt tillgänglig containeravbildning skapar du avbildningar från källan för att säkerställa kunskap om ursprunget till lagret. När en säkerhetsrisk identifieras i en egenutvecklad containeravbildning är det lättare för kunderna att snabbt komma fram till en lösning. Med en offentlig avbildning skulle kunderna behöva hitta roten för en offentlig avbildning för att åtgärda den eller få en annan säker avbildning från utgivaren.
En genomsökt avbildning som distribueras i produktion är inte garanterad att vara uppdaterad under programmets livslängd. Säkerhetsrisker kan rapporteras för lager av avbildningen som inte tidigare var kända eller som introducerades efter produktionsdistributionen.
Granska regelbundet avbildningar som distribuerats i produktion för att identifiera avbildningar som är inaktuella eller inte har uppdaterats på ett tag. Du kan använda blågröna distributionsmetoder och mekanismer för löpande uppgradering för att uppdatera containeravbildningar utan driftstopp. Du kan skanna bilder med hjälp av verktyg som beskrivs i föregående avsnitt.
Använd en pipeline för kontinuerlig integrering (CI) med integrerad säkerhetsgenomsökning för att skapa säkra avbildningar och skicka dem till ditt privata register. Den inbyggda säkerhetsgenomsökningen i CI-lösningen ser till att avbildningar som klarar alla testerna skickas till det privata registret som produktionsarbetsbelastningarna distribueras från.
Ett CI-pipelinefel säkerställer att sårbara avbildningar inte skickas till det privata register som används för distribution av produktionsarbetsbelastningar. Det automatiserar även genomsökning av bildsäkerhet om det finns ett stort antal bilder. Att manuellt söka efter säkerhetsrisker i avbildningar kan vara en enormt tidskrävande och felbenägen uppgift.
Framtvinga lägsta behörigheter under körning
Begreppet lägsta behörighet är en grundläggande metod för säkerhet som även gäller för containrar. När en säkerhetsrisk utnyttjas ger den vanligtvis angriparen åtkomst och behörigheter som är lika med det komprometterade programmets eller processens. Att se till att containrar fungerar med de lägsta behörigheter och åtkomst som krävs för att få jobbet gjort minskar din riskexponering.
Minska containerattackytan genom att ta bort onödiga privilegier
Du kan också minimera den potentiella attackytan genom att ta bort oanvända eller onödiga processer eller privilegier från containerkörningen. Privilegierade containrar körs som rot. Om en obehörig användare eller arbetsbelastning kommer undan i en privilegierad container körs containern som rot i systemet.
Förgodkänna filer och körbara filer som containern får åtkomst till eller köra
Genom att minska antalet variabler eller okända kan du upprätthålla en stabil och tillförlitlig miljö. Att begränsa containrar så att de bara kan komma åt eller köra förgodkända eller säkra listade filer och körbara filer är en beprövad metod för att begränsa exponeringen för risker.
Det är mycket enklare att hantera en säker lista när den implementeras från början. En säker lista innehåller ett mått på kontroll och hanterbarhet när du lär dig vilka filer och körbara filer som krävs för att programmet ska fungera korrekt.
En säker lista minskar inte bara attackytan utan kan också ge en baslinje för avvikelser och förhindra användningsfall för scenarier med "bullriga grannar" och containerutbrott.
Framtvinga nätverkssegmentering på containrar som körs
För att skydda containrar i ett undernät från säkerhetsrisker i ett annat undernät, upprätthålla nätverkssegmentering (eller nanosegmentering) eller segregering mellan containrar som körs. Det kan också vara nödvändigt att upprätthålla nätverkssegmentering för att använda containrar i branscher som krävs för att uppfylla efterlevnadsmandat.
Partnerverktyget Aqua tillhandahåller till exempel en automatiserad metod för nanosegmentering. Aqua övervakar containernätverksaktiviteter under körning. Den identifierar alla inkommande och utgående nätverksanslutningar till/från andra containrar, tjänster, IP-adresser och det offentliga Internet. Nanosegmentering skapas automatiskt baserat på övervakad trafik.
Övervaka containeraktivitet och användaråtkomst
Precis som med alla IT-miljöer bör du konsekvent övervaka aktivitet och användaråtkomst till ditt containerekosystem för att snabbt identifiera misstänkt eller skadlig aktivitet. Azure tillhandahåller lösningar för containerövervakning, inklusive:
Azure Monitor för containrar övervakar prestandan för dina arbetsbelastningar som distribueras till Kubernetes-miljöer som finns i Azure Kubernetes Service (AKS). Azure Monitor för containrar ger dig prestandasynlighet genom att samla in minnes- och processormått från kontrollanter, noder och containrar som är tillgängliga i Kubernetes via Mått-API:et.
Azure Container Monitoring-lösningen hjälper dig att visa och hantera andra Docker- och Windows-containervärdar på en enda plats. Till exempel:
- Visa detaljerad granskningsinformation som visar kommandon som används med containrar.
- Felsöka containrar genom att visa och söka i centraliserade loggar utan att behöva fjärransluta Docker- eller Windows-värdar.
- Hitta containrar som kan vara bullriga och förbruka överskottsresurser på en värd.
- Visa centraliserad processor-, minnes-, lagrings- och nätverksanvändning och prestandainformation för containrar.
Lösningen stöder containerorkestrerare som Docker Swarm, DC/OS, ohanterade Kubernetes, Service Fabric och Red Hat OpenShift.
Övervaka containerresursaktivitet
Övervaka resursaktiviteten, till exempel filer, nätverk och andra resurser som dina containrar har åtkomst till. Övervakning av resursaktivitet och förbrukning är användbart både för prestandaövervakning och som ett säkerhetsmått.
Azure Monitor möjliggör grundläggande övervakning för Azure-tjänster genom att tillåta insamling av mått, aktivitetsloggar och diagnostikloggar. Aktivitetsloggen ger dig t.ex. information om när nya resurser skapas eller ändras.
Det finns mått som tillhandahåller prestandastatistik för olika resurser och även för operativsystemet i en virtuell dator. Du kan visa dessa data med någon av utforskarna i Azure-portalen och skapa aviseringar baserat på dessa mått.
Logga all administratörsanvändaråtkomst för containrar för granskning
Upprätthålla en korrekt spårningslogg för administrativ åtkomst till ditt containerekosystem, inklusive ditt Kubernetes-kluster, containerregister och containeravbildningar. Dessa loggar kan vara nödvändiga i granskningssyfte och är användbara som kriminaltekniska bevis efter eventuella säkerhetsincidenter. Azure-lösningar omfattar:
- Integrering av Azure Kubernetes Service med Microsoft Defender för molnet för att övervaka säkerhetskonfigurationen för klustermiljön och generera säkerhetsrekommendationer
- Azure Container Monitoring-lösning
- Resursloggar för Azure Container Instances och Azure Container Registry
Nästa steg
Se Azure-säkerhetsbaslinjen för Container Instances för omfattande rekommendationer som hjälper dig att förbättra säkerhetsstatusen för din distribution.
Läs mer om hur du använder Microsoft Defender för molnet för identifiering av hot i realtid i dina containerbaserade miljöer.
Läs mer om att hantera sårbarheter i containrar med lösningar från Twistlock och Aqua Security.