Säkerhetsöverväganden för Azure Container Instances

Den här artikeln beskriver säkerhetsöverväganden när du använder 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 distributionens säkerhetsstatus finns i Azures säkerhetsbaslinje för Container Instances.

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 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 stöder Azure Container Registry tjänstens huvudnamnsbaserad autentisering via Azure Active Directory 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 i hotidentifieringen 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 avbildningar, klassificerar dem och ger vägledning om reparation.

Säkerhetsövervaknings- och bildgenomsökningslösningar som Twistlock och Aqua Security finns också tillgängliga via Azure Marketplace.

Skydda autentiseringsuppgifter

Containrar kan spridas över flera kluster och Azure-regioner. Därför måste du skydda de 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 dessa containrar 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 din lösning innehåller krypterade databaser, TLS-kryptering för hemligheter under överföring och rollbaserad åtkomstkontroll med lägsta behörighet i Azure (Azure RBAC). Azure 密钥保管库 är en molntjänst som skyddar krypteringsnycklar och hemligheter (till exempel certifikat, anslutningssträngar 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 sårbarhetshantering som en del av livscykeln för containerutveckling

Genom att använda effektiv sårbarhetshantering 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äkerhetsrisker 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 lösas.

Se till att endast godkända avbildningar används i din miljö

Det finns tillräckligt med förändringar och volatilitet i ett containerekosystem utan att även tillåta okända containrar. 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 i stället för 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. Till exempel stöder Azure Container Registry Docker innehållsförtroendemodell, som gör att avbildningsutgivare kan signera avbildningar som push-överförs till ett register och avbildningskonsumenter endast hämtar 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 exponeringen för risker genom att begränsa risken för att okända säkerhetsrisker eller säkerhetsproblem införs.

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.

  • Avbildningar med sårbarheter, ä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 ett fåtal utvalda. Håll antalet produktionsbilder litet för att säkerställa att de kan hanteras effektivt.

  • Eftersom det är svårt att fastställa ursprunget för programvara från en offentligt tillgänglig containeravbildning skapar du avbildningar från källan för att säkerställa kunskap om lagrets ursprung. 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 garanterat uppdaterad under programmets livslängd. Säkerhetsproblem kan rapporteras för lager i avbildningen som inte tidigare var kända eller som uppstått efter distributionen i produktionsmiljön.

    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 avbildningar 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 push-överföra 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 registret som används för distribution av produktionsarbetsbelastningar. Det automatiserar också genomsökning av avbildningssä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örighet i 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 programmet eller processen. Att se till att containrar fungerar med de lägsta behörigheter och den åtkomst som krävs för att få jobbet gjort minskar exponeringen för risker.

Minska risken för containerangrepp genom att ta bort onödiga privilegier

Du kan också minimera risken för angrepp 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 sedan som rot i systemet.

Förhandsgodkänna filer och körbara filer som containern har behörighet att komma åt 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 scenarierna "bullrig granne" och containerutbrott.

Framtvinga nätverkssegmentering för containrar som körs

För att skydda containrar i ett undernät från säkerhetsrisker i ett annat undernät kan du upprätthålla nätverkssegmentering (eller nanosegmentering) eller uppdelning mellan containrar som körs. Underhåll av nätverkssegmentering kan också vara nödvändigt 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 i körningen. 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 övervakningslösningar för containrar, inklusive:

  • Azure Monitor för containrar övervakar prestandan för dina arbetsbelastningar som distribueras till Kubernetes-miljöer på 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. Ett 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ärrvya Docker- eller Windows-värdar.
    • Hitta containrar som kan vara bullriga och förbruka överskjutande resurser på en värd.
    • Visa centraliserad PROCESSOR, minne, lagring 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 kärnö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.

Tillgängliga mått 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 Portal och skapa aviseringar som baseras på måtten. Azure Monitor ger den snabbaste måttpipelinen (från 5 minuter ned till 1 minut), så du bör använda det för tidskritiska aviseringar och meddelanden.

Logga all administrativ anvä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:

Nästa steg