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

Containersäkerhet skyddar hela pipelinen från slutpunkt till slutpunkt från bygge till programarbetsbelastningar 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 auktoriseringsartikel.
  • Använd AKS inbyggd Azure Policy för att skydda dina program.
  • Insikter från slutpunkt till slutpunkt från kompilering via ditt program 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 startpunkt för leveranskedjan är det viktigt att utföra statisk analys av avbildningsversioner innan de flyttas ned i pipelinen. 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 titta på leverantörsstatus till segment 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 2019-version med hjälp av Docker-containerkörningen containerd eller .

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

Kommentar

AKS-kluster som körs:

  • Kubernetes version 1.19 och senare – Linux-nodpooler använder containerd som containerkörning. Windows Server 2019-nodpooler använder containerd som sin containerkörning, som för närvarande är i förhandsversion. 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. Windows Server 2019-nodpooler använder Docker för standardcontainerkörningen.

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 betrodd start (förhandsversion), 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 nodpoolen skapas, eller för ett befintligt kluster eller en befintlig nodpool, är i förhandsversion. 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 sann säkerhet när du kör fientliga multitenantarbetsbelastningar litar du bara på ett hypervisor-program. 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).
  • Poddsandboxning (förhandsversion) ger en isoleringsgräns mellan containerprogrammet och den delade 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 inkommande vägar. AKS ändrar automatiskt nätverkssäkerhetsgruppen för trafikflödet.

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.

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 podd 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 Hemligheter minskar den känsliga information som definierats i podden eller yaml-manifestet för tjänsten. 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åtkomsten till hemligheten.

Kommentar

Manifestfilerna för rådata innehåller hemliga data i base64-format. Mer information finns i den officiella dokumentationen. Behandla dessa filer som känslig information och checka aldrig in dem till källkontrollen.

Kubernetes-hemligheter lagras i etcd, ett distribuerat nyckelvärdeslager. AKS hanterar lagringen etcd fullständigt och data krypteras i vila på Azure-plattformen.

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: