Dela via


Säkerhetsbegrepp för program och kluster i AKS (Azure Kubernetes Service)

Containersäkerhet skyddar hela slut-till-slut-processen från uppbyggnad till applikationsarbetsbelastningar som körs i Azure Kubernetes Service (AKS).

Den säkra leveranskedjan innehåller byggmiljön och registret.

Kubernetes innehåller säkerhetskomponenter, till exempel poddsäkerhetsstandarder och hemligheter. Azure innehåller komponenter som Active Directory, Microsoft Defender för containrar, Azure Policy, Azure Key Vault, nätverkssäkerhetsgrupper och orkestrerade klusteruppgraderingar. AKS kombinerar dessa säkerhetskomponenter för att:

  • Ange en fullständig autentiserings- och auktoriseringsberättelse.
  • Använd AKS inbyggd Azure Policy för att skydda dina program.
  • Insikter från början till slut från byggprocess till din applikation med Microsoft Defender för containrar.
  • Se till att AKS-klustret kör de senaste säkerhetsuppdateringarna för operativsystemet och Kubernetes-versionerna.
  • Ge säker poddtrafik och åtkomst till känsliga autentiseringsuppgifter.

Den här artikeln beskriver de grundläggande begreppen som skyddar dina program i AKS.

Skapa säkerhet

Som ingångspunkt för leveranskedjan är det viktigt att utföra statisk analys av bildbyggen innan de befordras längs rörledningen. Detta omfattar sårbarhets- och efterlevnadsbedömning. Det handlar inte om att misslyckas med ett bygge eftersom det har en säkerhetsrisk, eftersom det bryter utvecklingen. Det handlar om att granska leverantörsstatus för att segmentera baserat på sårbarheter som kan åtgärdas av utvecklingsteamen. Använd även respitperioder för att ge utvecklare tid att åtgärda identifierade problem.

Registersäkerhet

Att utvärdera sårbarhetstillståndet för avbildningen i registret identifierar drift och fångar även avbildningar som inte kom från din byggmiljö. Använd Notary V2 för att bifoga signaturer till dina avbildningar för att säkerställa att distributionerna kommer från en betrodd plats.

Klustersäkerhet

I AKS ingår Kubernetes-huvudkomponenterna i den hanterade tjänsten som tillhandahålls, hanteras och underhålls av Microsoft. Varje AKS-kluster har en egen, dedikerad Kubernetes-huvudserver för att tillhandahålla API Server, Scheduler osv. Mer information finns i Sårbarhetshantering för Azure Kubernetes Service.

Som standard använder Kubernetes API-servern en offentlig IP-adress och ett fullständigt kvalificerat domännamn (FQDN). Du kan begränsa åtkomsten till API-serverslutpunkten med hjälp av auktoriserade IP-intervall. Du kan också skapa ett helt privat kluster för att begränsa API-serveråtkomsten till ditt virtuella nätverk.

Du kan styra åtkomsten till API-servern med rollbaserad åtkomstkontroll i Kubernetes (Kubernetes RBAC) och Azure RBAC. Mer information finns i Microsoft Entra-integrering med AKS.

Nodsäkerhet

AKS-noder är virtuella Azure-datorer som du hanterar och underhåller.

  • Linux-noder kör optimerade versioner av Ubuntu eller Azure Linux.
  • Windows Server-noder kör en optimerad Windows Server 2022-version med containerkörningen containerd .

När ett AKS-kluster skapas eller skalas upp distribueras noderna automatiskt med de senaste os-säkerhetsuppdateringarna och konfigurationerna.

Anteckning

AKS-kluster som för närvarande körs:

  • Kubernetes version 1.19 och senare – Linux-nodpooler använder containerd som containerkörning. Windows Server 2019- och Windows Server 2022-nodpooler använder containerd som sin container-runtime. Mer information finns i Lägga till en Windows Server-nodpool med containerd.
  • Kubernetes version 1.19 och tidigare – Linux-nodpooler använder Docker som containerkörning.

Mer information om säkerhetsuppgraderingsprocessen för Linux- och Windows-arbetsnoder finns i Säkerhetskorrigeringsnoder.

AKS-kluster som kör virtuella Azure Generation 2-datorer har stöd för Trusted Launch, som skyddar mot avancerade och beständiga attacktekniker genom att kombinera tekniker som kan aktiveras oberoende av varandra, till exempel säker start och virtualiserad version av den betrodda plattformsmodulen (vTPM). Administratörer kan distribuera AKS-arbetsnoder med verifierade och signerade startladdare, OS-kernels och drivrutiner för att säkerställa integriteten för hela startkedjan för den underliggande virtuella datorn.

Nodauktorisering

Nodauktorisering är ett särskilt auktoriseringsläge som specifikt auktoriserar kubelet API-begäranden för att skydda mot attacker mellan öst och väst. Nodauktorisering är aktiverat som standard i AKS 1.24 + kluster.

Noddistribution

Noder distribueras till ett privat virtuellt nätverksundernät, utan att några offentliga IP-adresser har tilldelats. För felsökning och hantering är SSH aktiverat som standard och endast tillgängligt med hjälp av den interna IP-adressen. Att inaktivera SSH när kluster och nodpool skapas, eller för ett befintligt kluster eller en befintlig nodpool, är i förhandsgranskning. Mer information finns i Hantera SSH-åtkomst .

Nodlagring

För att tillhandahålla lagring använder noderna Azure Managed Disks. För de flesta VM-nodstorlekar är Azure Managed Disks Premium-diskar som backas upp av högpresterande SSD:er. Data som lagras på hanterade diskar krypteras automatiskt i vila på Azure-plattformen. För att förbättra redundansen replikeras Azure Managed Disks på ett säkert sätt i Azure-datacentret.

Fientliga multitenantarbetsbelastningar

För närvarande är Kubernetes-miljöer inte säkra för fientlig användning av flera klientorganisationer. Extra säkerhetsfunktioner, till exempel poddsäkerhetsprinciper eller Kubernetes RBAC för noder, blockerar effektivt kryphål. För att uppnå verklig säkerhet när du kör fientliga delade arbetsbelastningar, lita bara på en hypervisor. Säkerhetsdomänen för Kubernetes blir hela klustret, inte en enskild nod.

För dessa typer av fientliga multitenantarbetsbelastningar bör du använda fysiskt isolerade kluster. Mer information om hur du isolerar arbetsbelastningar finns i Metodtips för klusterisolering i AKS.

Beräkningsisolering

På grund av efterlevnads- eller regelkrav kan vissa arbetsbelastningar kräva en hög grad av isolering från andra kundarbetsbelastningar. För dessa arbetsbelastningar tillhandahåller Azure:

  • Kernel-isolerade containrar som ska användas som agentnoder i ett AKS-kluster. Dessa containrar är helt isolerade till en specifik maskinvarutyp och isolerade från Azure Host Fabric, värdoperativsystemet och hypervisor-programmet. De är dedikerade till en enda kund. Välj en av de isolerade virtuella datorernas storlek som nodstorlek när du skapar ett AKS-kluster eller lägger till en nodpool.
  • Konfidentiella containrar (förhandsversion), även baserade på Kata Confidential Containers, krypterar containerminnet och förhindrar att data i minnet under beräkningen är i klartext, läsbart format och manipulering. Det hjälper till att isolera dina containrar från andra containergrupper/poddar samt VM-nodens OS-kernel. Konfidentiella containrar (förhandsversion) använder maskinvarubaserad minneskryptering (SEV-SNP).
  • Podsandboxning (förhandsversion) skapar en isoleringsbarriär mellan containerapplikationen och de delade resurserna från kerneln och beräkningsresurserna (CPU, minne och nätverk) för containervärden.

Nätverkssäkerhet

För anslutning och säkerhet med lokala nätverk kan du distribuera ditt AKS-kluster till befintliga virtuella Azure-nätverksundernät. Dessa virtuella nätverk ansluter tillbaka till ditt lokala nätverk med hjälp av Azure Site-to-Site VPN eller Express Route. Definiera Kubernetes-ingresskontrollanter med privata, interna IP-adresser för att begränsa tjänsternas åtkomst till den interna nätverksanslutningen.

Azure-nätverkssäkerhetsgrupper

För att filtrera trafikflödet för virtuella nätverk använder Azure regler för nätverkssäkerhetsgrupper. Dessa regler definierar käll- och mål-IP-intervall, portar och protokoll som tillåts eller nekas åtkomst till resurser. Standardregler skapas för att tillåta TLS-trafik till Kubernetes API-servern. Du skapar tjänster med lastbalanserare, portmappningar eller ingressvägar. AKS ändrar automatiskt nätverkssäkerhetsgruppen för att möjliggöra trafikflöde.

Om du anger ett eget undernät för ditt AKS-kluster (oavsett om du använder Azure CNI eller Kubenet) ändrar du inte nätverkssäkerhetsgruppen på NIC-nivå som hanteras av AKS. Skapa i stället fler nätverkssäkerhetsgrupper på undernätsnivå om du vill ändra trafikflödet. Se till att de inte stör nödvändig trafik som hanterar klustret, till exempel åtkomst till lastbalanserare, kommunikation med kontrollplanet eller utgående trafik.

Kubernetes-nätverksprincip

För att begränsa nätverkstrafiken mellan poddar i klustret erbjuder AKS stöd för Kubernetes-nätverksprinciper. Med nätverksprinciper kan du tillåta eller neka specifika nätverkssökvägar i klustret baserat på namnområden och etikettväljare.

Programsäkerhet

För att skydda poddar som körs på AKS kan du överväga att använda Microsoft Defender för containrar för att identifiera och begränsa cyberattacker mot dina program som körs i dina poddar. Kör kontinuerlig genomsökning för att identifiera avvikelse i programmets sårbarhetstillstånd och implementera en "blå/grön/kanarie"-process för att korrigera och ersätta de sårbara bilderna.

Skydda containeråtkomst till resurser

På samma sätt som du bör ge användare eller grupper de minsta behörigheter som krävs bör du också begränsa containrar till endast nödvändiga åtgärder och processer. Undvik att konfigurera program och containrar som kräver eskalerade privilegier eller rotåtkomst för att minimera risken för angrepp. Inbyggda Linux-säkerhetsfunktioner som AppArmor och seccomp rekommenderas som metodtips för att [skydda containeråtkomst till resurser][secure-container-access].

Kubernetes-hemligheter

Med en Kubernetes-hemlighet matar du in känsliga data i poddar, till exempel åtkomstautentiseringsuppgifter eller nycklar.

  1. Skapa en hemlighet med kubernetes-API:et.
  2. Definiera din podd eller distribution och begär en specifik hemlighet.
    • Hemligheter tillhandahålls endast till noder med en schemalagd pod som kräver dem.
    • Hemligheten lagras i tmpfs, inte skrivs till disk.
  3. När du tar bort den sista podden på en nod som kräver en hemlighet tas hemligheten bort från nodens tmpfs.
    • Hemligheter lagras i ett angivet namnområde och är endast tillgängliga från poddar inom samma namnområde.

Genom att använda Secrets minskar den känsliga informationen som definieras i YAML-manifestet för en pod eller tjänst. I stället begär du hemligheten som lagras i Kubernetes API Server som en del av YAML-manifestet. Den här metoden ger endast den specifika podd åtkomst till hemlighet.

Anteckning

De rå hemliga manifestfilerna innehåller hemliga data i base64-format. Mer information finns i den officiella dokumentationen. Behandla dessa filer som känslig information och lägg aldrig upp dem i källkontrollen.

Kubernetes-hemligheter lagras i etcd, ett distribuerat nyckelvärdeslager. AKS tillåter kryptering i resten av hemligheter i etcd med hjälp av kundhanterade nycklar.

Nästa steg

Information om hur du kommer igång med att skydda dina AKS-kluster finns i Uppgradera ett AKS-kluster.

För tillhörande metodtips, se Metodtips för klustersäkerhet och uppgraderingar i AKS och Metodtips för poddsäkerhet i AKS.

Mer information om viktiga Kubernetes- och AKS-begrepp finns i: