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

Containersäkerhet skyddar hela pipelinen från version till programarbetsbelastningar som körs i Azure Kubernetes Service (AKS).

Säker leveranskedja innehåller byggmiljön och registret.

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

  • Ange en fullständig information om autentisering och auktorisering.
  • Använd inbyggda AKS-Azure Policy för att skydda dina program.
  • Insikter från slutanvändare från att bygga genom ditt program med Microsoft Defender för containrar.
  • Se till att AKS-klustret kör de senaste os-säkerhetsuppdateringarna och Kubernetes-versionerna.
  • Tillhandahålla säker poddtrafik och åtkomst till känsliga autentiseringsuppgifter.

Den här artikeln beskriver de grundläggande begrepp som skyddar dina program i AKS:

Skapa säkerhet

Som startpunkt för leveranskedjan är det viktigt att utföra statisk analys av avbildningsbyggen innan de befordras nedåt i pipelinen. Detta inkluderar sårbarhets- och efterlevnadsbedömning. Det handlar inte om att misslyckas med en version eftersom den har en hög säkerhetsrisk, eftersom det kommer att bryta utvecklingen. Det handlar om att titta på "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

Genom att utvärdera sårbarhetstillståndet för avbildningen i registret identifieras ä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 distributioner kommer från en betrodd plats.

Klustersäkerhet

I AKS är Kubernetes-huvudkomponenterna en del av den hanterade tjänsten som tillhandahålls, hanteras och underhålls av Microsoft. Varje AKS-kluster har en egen dedikerad Kubernetes-huvudserver med en klientorganisation som tillhandahåller API-servern, Scheduler osv.

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 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 kubernetes rollbaserad åtkomstkontroll (Kubernetes RBAC) och Azure RBAC. Mer information finns i Azure AD-integrering med AKS.

Nodsäkerhet

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

  • Linux-noder kör en optimerad Ubuntu-distribution med containerd hjälp av eller Docker-containerkörningen.
  • Windows Server-noder kör en optimerad version Windows Server 2019 med containerd eller Docker-containerkörningen.

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

Anteckning

AKS-kluster med:

  • Kubernetes version 1.19 och senare för Linux-nodpooler containerd används som containerkörning. Användning containerd med Windows Server 2019-nodpooler är för närvarande i förhandsversion. Mer information finns i Lägga till en Windows containerd servernodpool med .
  • Kubernetes före v1.19 för Linux-nodpooler använder Docker som containerkörning. För Windows Server 2019-nodpooler är Docker standardkörningen för containrar.

Nodsäkerhetskorrigeringar

Linux-noder

Varje kväll får Linux-noder i AKS säkerhetskorrigeringar via sin distributionskanal för säkerhetsuppdateringar. Det här beteendet konfigureras automatiskt när noderna distribueras i ett AKS-kluster. Noderna startas inte om automatiskt om en säkerhetskorrigering eller kerneluppdatering kräver det för att minimera avbrott och potentiell påverkan på arbetsbelastningar som körs. Mer information om hur du hanterar omstarter av noder finns i Tillämpa säkerhets- och kerneluppdateringar på noder i AKS.

Nattliga uppdateringar tillämpar säkerhetsuppdateringar på operativsystemet på noden, men nodavbildningen som används för att skapa noder för klustret förblir oförändrad. Om en ny Linux-nod läggs till i klustret används den ursprungliga avbildningen för att skapa noden. Den här nya noden får alla säkerhets- och kerneluppdateringar som är tillgängliga under den automatiska kontrollen varje natt, men förblir oplanerade tills alla kontroller och omstarter har slutförts. Du kan använda nodavbildningsuppgradering för att söka efter och uppdatera nodavbildningar som används av klustret. Mer information om uppgradering av nodavbildning finns i Azure Kubernetes Service avbildningsuppgradering av nod (AKS).

Windows Server-noder

För Windows Server-noder körs Windows Update inte automatiskt och tillämpar de senaste uppdateringarna. Schemalägg Windows uppgraderingar av servernodpoolen i ditt AKS-kluster runt den vanliga Windows uppdateringscykeln och din egen verifieringsprocess. Den här uppgraderingsprocessen skapar noder som kör den senaste Windows Server-avbildningen och korrigeringarna och tar sedan bort de äldre noderna. Mer information om den här processen finns i Uppgradera en nodpool i AKS.

Noddistribution

Noder distribueras i ett privat virtuellt undernät utan tilldelade offentliga IP-adresser. För felsöknings- och hanteringsändamål är SSH aktiverat som standard och endast tillgängligt med den interna IP-adressen.

Node Storage

Noderna använder Azure Managed Disks för att tillhandahålla lagring. För de flesta VM-nodstorlekar Managed Disks Azure Premium diskar som backas upp av högpresterande STANDARD-DISKAR. 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.

Använda arbetsbelastningar med flera innehavare

Kubernetes-miljöer är för närvarande inte säkra för användning med flera innehavare. Extra säkerhetsfunktioner som poddsäkerhetsprinciper eller Kubernetes RBAC för noder blockerar effektivt sårbarheter. För verklig säkerhet när du kör arbetsbelastning med flera innehavare är det bara att lita på ett hypervisor-program. Säkerhetsdomänen för Kubernetes blir hela klustret, inte en enskild nod.

Du bör använda fysiskt isolerade kluster för dessa typer av hotande arbetsbelastningar för flera innehavare. 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 isolerade virtuella datorer som ska användas som agentnoder i ett AKS-kluster. Dessa virtuella datorer är isolerade till en specifik maskinvarutyp och 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.

Klusteruppgraderingar

Azure tillhandahåller verktyg för uppgraderingsorkestrering för att uppgradera ett AKS-kluster och -komponenter, upprätthålla säkerhet och efterlevnad och få åtkomst till de senaste funktionerna. Den här uppgraderingsorkestreringen innehåller både Huvud- och agentkomponenterna för Kubernetes.

Starta uppgraderingsprocessen genom att ange en av de tillgängliga Kubernetes-versionerna i listan. Azure avspärrar och tömmer sedan varje AKS-nod och uppgraderingar på ett säkert sätt.

Avspärrning och tömning

Under uppgraderingsprocessen blir AKS-noder individuellt avspärrade från klustret för att förhindra att nya poddar schemaläggs på dem. Noderna töms och uppgraderas sedan på följande sätt:

  1. En ny nod distribueras till nodpoolen.
    • Den här noden kör den senaste os-avbildningen och korrigeringarna.
  2. En av de befintliga noderna identifieras för uppgradering.
  3. Poddar på den identifierade noden avslutas korrekt och schemaläggs på de andra noderna i nodpoolen.
  4. Den tömda noden tas bort från AKS-klustret.
  5. Steg 1–4 upprepas tills alla noder har ersatts som en del av uppgraderingsprocessen.

Mer information finns i Uppgradera ett AKS-kluster.

Nätverkssäkerhet

För anslutning och säkerhet med lokala nätverk kan du distribuera ditt AKS-kluster till befintliga undernät för virtuella Azure-nätverk. De här virtuella nätverken ansluter tillbaka till ditt lokala nätverk med hjälp av Azures VPN för plats-till-plats eller Express Route. Definiera Kubernetes-indatastyrenheter 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äkerhetsgrupp. Dessa regler definierar källans och målets 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 trafikflödet.

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

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 använder du Microsoft Defender för Kubernetes för att identifiera och begränsa cyberattacker mot program som körs i dina poddar. Kör kontinuerlig genomsökning för att identifiera drift i sårbarhetstillståndet för ditt program och implementera en "blå/grön/kanarieprocess" för att korrigera och ersätta sårbara avbildningar.

Kubernetes-hemligheter

Med en Kubernetes-hemlighet matar du in känsliga data i poddar, till exempel autentiseringsuppgifter eller nycklar för åtkomst.

  1. Skapa en hemlighet med kubernetes-API:et.
  2. Definiera podden eller distributionen och begär en specifik hemlighet.
    • Hemligheter tillhandahålls endast till noder med en schemalagd podd som kräver dem.
    • Hemligheten lagras i tmpfs, skrivs inte 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 inom ett visst namnområde och kan bara användas av poddar inom samma namnområde.

Användningen av hemligheter minskar den känsliga information som definieras i YAML-manifestet för podden eller tjänsten. I stället begär du hemligheten som lagras i Kubernetes API-servern som en del av ditt YAML-manifest. Den här metoden ger endast den specifika poddåtkomsten till hemligheten.

Anteckning

Manifestfilerna för den råa hemligheten innehåller hemliga data i base64-format (mer information finns i den officiella dokumentationen). Hantera de här filerna som känslig information och spara dem aldrig till källkontrollen.

Kubernetes-hemligheter lagras i etcd, ett distribuerat nyckel/värde-lager. Etcd-lagring hanteras helt av AKS 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.

Associerade metodtips finns i Metodtips för klustersäkerhet och uppgraderingar i AKS och Metodtips för poddsäkerhet i AKS.

Mer information om grundläggande Kubernetes- och AKS-begrepp finns i: