Dela via


Kryptering vid överföring med WireGuard (offentlig förhandsversion)

Eftersom organisationer i allt högre grad förlitar sig på Azure Kubernetes Service (AKS) för att köra containerbaserade arbetsbelastningar blir det viktigt att säkerställa säkerheten för nätverkstrafik mellan program och tjänster, särskilt i reglerade eller säkerhetskänsliga miljöer. Kryptering under överföring med WireGuard skyddar data när de flyttas mellan poddar och noder, vilket minskar risken för avlyssning eller manipulering. WireGuard är känt för sin enkelhet och robusta kryptografi och erbjuder en kraftfull lösning för att skydda kommunikationen i AKS-kluster.

WireGuard-kryptering för AKS är en del av acns-funktionsuppsättningen (Advanced Container Networking Services) och implementeringen baseras på Cilium.

Viktigt!

AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och frivillig registrering. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. AKS-förhandsversioner stöds delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:

WireGuard-krypteringsomfång

WireGuard-kryptering under överföring i AKS är utformat för att skydda specifika trafikflöden i ditt Kubernetes-kluster. I det här avsnittet beskrivs vilka trafiktyper som är krypterade och vilka som för närvarande inte stöds via Advanced Container Networking Services (ACNS).

Trafikflöden som stöds/krypteras:

  • Inter-node podtrafik: Trafik som lämnar en pod från en nod och skickas till en pod på en annan nod.

Ej stödda/okrypterade trafikflöden

  • Poddtrafik med samma nod: Trafik mellan poddar på samma nod
  • Nodnätverkstrafik: trafik som genereras av själva noden som är avsedd för en annan nod

Översikt över arkitektur

WireGuard-kryptering förlitar sig på Azure CNI som drivs av cilium för att skydda kommunikation mellan noder i ett distribuerat system. Arkitekturen använder en dedikerad WireGuard-agent som samordnar nyckelhantering, gränssnittskonfiguration och dynamiska peer-uppdateringar. Det här avsnittet försöker ge en detaljerad förklaring

Diagram över WireGuard-design.

WireGuard-agent

Vid start utvärderar Cilium-agenten sin konfiguration för att avgöra om kryptering är aktiverat. När WireGuard har valts som krypteringsläge initierar agenten ett dedikerat WireGuard-undersystem. Wireguard-agenten ansvarar för att konfigurera och initiera komponenter som krävs för att framtvinga WireGuard-kryptering.

Nyckelgenerering

Ett grundläggande krav för att skydda kommunikationen är genereringen av kryptografiska nyckelpar. Varje nod i Kubernetes-klustret genererar automatiskt ett unikt WireGuard-nyckelpar under initieringsfasen och distribuerar sin offentliga nyckel via kommentaren "network.cilium.io/wg-pub-key" i det anpassade resursobjektet Kubernetes CiliumNode. Nyckelparen lagras i minnet och roteras var 120:e sekund. Den privata nyckeln fungerar som nodens konfidentiella identitet. Den offentliga nyckeln delas med peer-noderna i klustret för att dekryptera och kryptera trafik från och till Cilium-hanterade slutpunkter som körs på den noden. Dessa nycklar hanteras helt av Azure, inte av kunden, vilket säkerställer säker och automatiserad hantering utan att kräva manuella åtgärder. Den här mekanismen säkerställer att endast noder med verifierade autentiseringsuppgifter kan delta i det krypterade nätverket.

Skapa gränssnitt

När nyckelgenereringsprocessen är avslutad konfigurerar WireGuard-agenten ett dedikerat nätverksgränssnitt (cilium_wg0). Den här processen omfattar skapande och konfiguration av gränssnitt med den tidigare genererade privata nyckeln.

Jämförelse med kryptering för virtuellt nätverk

Azure erbjuder flera alternativ för att skydda trafik under överföring i AKS, inklusive kryptering på virtuell nätverksnivå och WireGuard-baserad kryptering. Båda metoderna förbättrar konfidentialiteten och integriteten för nätverkstrafiken, men de skiljer sig åt vad gäller omfång, flexibilitet och distributionskrav. Det här avsnittet hjälper dig att förstå när du ska använda varje lösning.

Använd kryptering för virtuellt nätverk när

  • Du behöver fullständig nätverksnivåkryptering för all trafik i det virtuella nätverket: Kryptering av virtuella nätverk säkerställer att all trafik oavsett arbetsbelastning eller orkestreringslager krypteras automatiskt när den passerar det virtuella Azure-nätverket.

  • Du behöver minimala prestandakostnader: Kryptering i virtuella nätverk använder maskinvaruacceleration i vm-SKU:er som stöds och avlastar kryptering från operativsystemet till den underliggande maskinvaran. Den här designen ger högt dataflöde med låg CPU-användning.

  • Alla dina virtuella datorer stöder kryptering av virtuella nätverk: Kryptering av virtuellt nätverk beror på vm-SKU:er som stöder nödvändig maskinvaruacceleration. Om infrastrukturen helt består av SKU:er som stöds kan kryptering av virtuella nätverk aktiveras sömlöst.

  • Dina AKS-nätverkskonfigurationer stöder kryptering av virtuella nätverk: Kryptering av virtuella nätverk har vissa begränsningar när det gäller aks-poddnätverk. Mer information finns i Scenarier med kryptering i virtuellt nätverk som stöds

Använd WireGuard-kryptering när

  • Du vill se till att din programtrafik är krypterad över alla virtuella nätverksnoder virtuella nätverkskryptering krypterar inte trafik mellan noder på samma fysiska värd.

  • Du vill förena kryptering i miljöer med flera moln eller hybridmiljöer: WireGuard erbjuder en molnagnostisk lösning som möjliggör konsekvent kryptering mellan kluster som körs i olika molnleverantörer eller lokalt.

  • Du behöver inte eller vill kryptera all trafik i det virtuella nätverket: WireGuard möjliggör en mer målinriktad krypteringsstrategi som är idealisk för att skydda känsliga arbetsbelastningar utan att medföra att all trafik krypteras.

  • Vissa av dina VM-SKU:er stöder inte kryptering av virtuella nätverk: WireGuard implementeras i programvara och fungerar oavsett maskinvarustöd för virtuella datorer, vilket gör det till ett praktiskt alternativ för heterogena miljöer.

Överväganden och begränsningar &

• WireGuard är inte FIPS-kompatibelt . • WireGuard-kryptering gäller inte för poddar som använder värdnätverk (spec.hostNetwork: true) eftersom dessa poddar använder värdidentiteten i stället för att ha enskilda identiteter.

Viktigt!

WireGuard-kryptering fungerar på programvarunivå, vilket kan ge svarstider och påverka dataflödesprestanda. Omfattningen av den här effekten beror på olika faktorer, inklusive VM-storlek (nod-SKU), nätverkskonfiguration och programtrafikmönster. Vår benchmarking anger att dataflödet är begränsat till 1,5 Gbit/s med en MTU på 1 500; Resultaten kan dock variera beroende på arbetsbelastningsegenskaper och klusterkonfiguration. Användning av en SKU som stöder MTU 3900 resulterade i cirka 2,5 gånger högre dataflöde. Även om WireGuard-kryptering kan användas tillsammans med nätverksprinciper kan detta leda till ytterligare prestandaförsämring, med minskat dataflöde och ökad svarstid. För program som är känsliga för svarstid eller dataflöde rekommenderar vi starkt att du först utvärderar WireGuard i en icke-produktionsmiljö. Som alltid kan resultaten variera beroende på arbetsbelastningsegenskaper och klusterkonfiguration.

Pricing

Viktigt!

Avancerade nätverkstjänster för containrar är ett avgiftsbelagt erbjudande. Mer information om priser finns i Advanced Container Networking Services – Prissättning.

Nästa steg