Säker åtkomst till API-servern med hjälp av auktoriserade IP-adressintervall i Azure Kubernetes Service (AKS)

Den här artikeln visar hur du använder funktionen FÖR API-serverauktoriserade IP-adressintervall för att begränsa vilka IP-adresser och CIDR:er som kan komma åt kontrollplanet.

Kubernetes API-servern är kärnan i Kubernetes-kontrollplanet och är det centrala sättet att interagera med och hantera dina kluster. För att förbättra säkerheten för dina kluster och minimera risken för attacker rekommenderar vi att du begränsar DE IP-adressintervall som kan komma åt API-servern. För att göra detta kan du använda funktionen API-serverauktoriserade IP-intervall .

Innan du börjar

  • Du behöver Azure CLI version 2.0.76 eller senare installerad och konfigurerad. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.
  • Information om vilka IP-adresser som ska inkluderas när du integrerar ditt AKS-kluster med Azure DevOps finns i artikeln Tillåtna IP-adresser och domän-URL:er för Azure DevOps.

Begränsningar

Funktionen API-serverauktoriserade IP-intervall har följande begränsningar:

  • Api-serverns auktoriserade IP-intervallfunktion flyttades från förhandsversionen i oktober 2019. För kluster som skapats efter att funktionen har flyttats från förhandsversionen stöds den här funktionen endast på Standard SKU-lastbalanseraren. Alla befintliga kluster på Basic SKU-lastbalanseraren med funktionen API-serverauktoriserade IP-intervall aktiverad fortsätter att fungera som den är. Dessa kluster kan dock inte migreras till en Standard SKU-lastbalanserare. Befintliga kluster fortsätter att fungera om Kubernetes-versionen och kontrollplanet uppgraderas.
  • Funktionen FÖR API-serverauktoriserade IP-intervall stöds inte i privata kluster.
  • När du använder den här funktionen med kluster som använder nod offentlig IP måste nodpoolerna med nod offentlig IP använda offentliga IP-prefix. De offentliga IP-prefixen måste läggas till som auktoriserade intervall.

Översikt över API-serverauktoriserade IP-intervall

Kubernetes API-servern exponerar underliggande Kubernetes-API:er och tillhandahåller interaktion för hanteringsverktyg som kubectl och Kubernetes-instrumentpanelen. AKS tillhandahåller ett klusterkontrollplan med en enda klientorganisation med en dedikerad API-server. API-servern tilldelas som standard en offentlig IP-adress. Du kan styra åtkomsten med rollbaserad åtkomstkontroll i Kubernetes (Kubernetes RBAC) eller Azure RBAC.

För att skydda åtkomsten till det annars offentligt tillgängliga AKS-kontrollplanet/API-servern kan du aktivera och använda auktoriserade IP-intervall. Dessa auktoriserade IP-intervall tillåter endast att definierade IP-adressintervall kommunicerar med API-servern. Alla begäranden som görs till API-servern från en IP-adress som inte ingår i dessa auktoriserade IP-intervall blockeras.

Skapa ett AKS-kluster med API-serverauktoriserade IP-intervall aktiverade

Viktigt!

Som standard använder klustret standard-SKU-lastbalanseraren som du kan använda för att konfigurera den utgående gatewayen. När du aktiverar API-serverauktoriserade IP-intervall när klustret skapas tillåts den offentliga IP-adressen för klustret som standard utöver de intervall som du anger. Om du anger "" eller inget värde för --api-server-authorized-ip-rangesinaktiveras API-serverauktoriserade IP-intervall. Observera att om du använder PowerShell använder du --api-server-authorized-ip-ranges="" (med likhetstecken) för att undvika parsningsproblem.

Kommentar

Du bör lägga till dessa intervall i en lista över tillåtna:

  • Klustrets utgående IP-adress (brandvägg, NAT-gateway eller annan adress, beroende på din utgående typ).
  • Alla intervall som representerar nätverk som du ska administrera klustret från.

Den övre gränsen för antalet IP-intervall som du kan ange är 200.

Det kan ta upp till två minuter att sprida reglerna. Tillåt upp till den tiden när du testar anslutningen.

När du skapar ett kluster med API-serverauktoriserade IP-intervall aktiverade använder du parametern --api-server-authorized-ip-ranges för att ange en lista över auktoriserade offentliga IP-adressintervall. När du anger ett CIDR-intervall börjar du med den första IP-adressen i intervallet. Till exempel är 137.117.106.90/29 ett giltigt intervall, men se till att du anger den första IP-adressen i intervallet, till exempel 137.117.106.88/29.

  • Skapa ett AKS-kluster med API-serverauktoriserade IP-intervall aktiverade med kommandot az aks create med parametern --api-server-authorized-ip-ranges . I följande exempel skapas ett kluster med namnet myAKSCluster i resursgruppen myResourceGroup med API-serverauktoriserade IP-intervall aktiverade. Tillåtna IP-adressintervall är 73.140.245.0/24:

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --generate-ssh-keys
    

Ange utgående IP-adresser för en Standard SKU-lastbalanserare

När du skapar ett kluster med API-serverauktoriserade IP-intervall aktiverade kan du även ange utgående IP-adresser eller prefix för klustret med hjälp av parametrarna --load-balancer-outbound-ips eller --load-balancer-outbound-ip-prefixes . Alla IP-adresser som anges i parametrarna tillåts tillsammans med IP-adresserna i parametern --api-server-authorized-ip-ranges .

  • Skapa ett AKS-kluster med API-serverns auktoriserade IP-intervall aktiverade och ange utgående IP-adresser för Standard SKU-lastbalanseraren med hjälp av parametern --load-balancer-outbound-ips . I följande exempel skapas ett kluster med namnet myAKSCluster i resursgruppen myResourceGroup med API-serverauktoriserade IP-intervall aktiverade och utgående IP-adresser <public-ip-id-1> och <public-ip-id-2>:

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --load-balancer-outbound-ips <public-ip-id-1>,<public-ip-id-2> --generate-ssh-keys
    

Tillåt endast den utgående offentliga IP-adressen för Standard SKU-lastbalanseraren

När du aktiverar API-serverauktoriserade IP-intervall när klustret skapas tillåts även den utgående offentliga IP-adressen för Standard SKU-lastbalanseraren för klustret som standard utöver de intervall som du anger. Om du bara vill tillåta den utgående offentliga IP-adressen för Standard SKU-lastbalanseraren använder du 0.0.0.0/32 när du anger parametern --api-server-authorized-ip-ranges .

  • Skapa ett AKS-kluster med API-serverns auktoriserade IP-intervall aktiverade och tillåt endast den utgående offentliga IP-adressen för Standard SKU-lastbalanseraren med hjälp av parametern --api-server-authorized-ip-ranges . I följande exempel skapas ett kluster med namnet myAKSCluster i resursgruppen myResourceGroup med API-serverauktoriserade IP-intervall aktiverade och tillåter endast den utgående offentliga IP-adressen för Standard SKU-lastbalanseraren:

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 0.0.0.0/32 --generate-ssh-keys
    

Uppdatera ett befintligt klusters API-serverauktoriserade IP-intervall

  • Uppdatera ett befintligt klusters API-serverauktoriserade IP-intervall med hjälp av az aks update kommandot med parametern --api-server-authorized-ip-ranges . I följande exempel uppdateras API-serverns auktoriserade IP-intervall i klustret med namnet myAKSCluster i resursgruppen med namnet myResourceGroup. IP-adressintervallet som ska auktoriseras är 73.140.245.0/24:

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges 73.140.245.0/24
    

    Du kan också använda 0.0.0.0/32 när du anger parametern --api-server-authorized-ip-ranges för att endast tillåta den offentliga IP-adressen för Standard SKU-lastbalanseraren.

Inaktivera auktoriserade IP-intervall

  • Inaktivera auktoriserade IP-intervall med kommandot az aks update och ange ett tomt intervall "" för parametern --api-server-authorized-ip-ranges .

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges ""
    

Hitta befintliga auktoriserade IP-intervall

  • Hitta befintliga auktoriserade IP-intervall med kommandot az aks show med parametern inställd på --queryapiServerAccessProfile.authorizedIpRanges.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query apiServerAccessProfile.authorizedIpRanges
    

Så här hittar du min IP-adress som ska ingå i --api-server-authorized-ip-ranges?

Du måste lägga till dina utvecklingsdatorer, verktyg eller automations-IP-adresser i AKS-klusterlistan över godkända IP-intervall för att få åtkomst till API-servern därifrån.

Ett annat alternativ är att konfigurera en jumpbox med nödvändiga verktyg i ett separat undernät i brandväggens virtuella nätverk. Detta förutsätter att din miljö har en brandvägg med respektive nätverk och att du har lagt till brandväggs-IP-adresserna i auktoriserade intervall. På samma sätt, om du har tvingat tunneltrafik från AKS-undernätet till brandväggsundernätet, är det också okej att ha jumpboxen i klustrets undernät.

  1. Hämta DIN IP-adress med hjälp av följande kommando:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. Lägg till din IP-adress i den godkända listan med hjälp av Azure CLI eller Azure PowerShell:

    # Add to AKS approved list using Azure CLI
    az aks update --resource-group $RG --name $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/24,73.140.245.0/24
    
    # Add to AKS approved list using Azure PowerShell
    Set-AzAksCluster -ResourceGroupName $RG -Name $AKSNAME -ApiServerAccessAuthorizedIpRange '$CURRENT_IP/24,73.140.245.0/24'
    

Kommentar

Exemplet ovan lägger till ytterligare en IP-adress till de godkända intervallen. Observera att den fortfarande innehåller IP-adressen från Uppdatera ett klusters API-serverauktoriserade IP-intervall. Om du inte inkluderar din befintliga IP-adress ersätter det här kommandot den med den nya i stället för att lägga till den i de auktoriserade intervallen. Om du vill inaktivera auktoriserade IP-intervall använder az aks update du och anger ett tomt intervall .

Ett annat alternativ är att använda följande kommando i Windows-system för att hämta den offentliga IPv4-adressen, eller så kan du följa stegen i Hitta din IP-adress.

Invoke-RestMethod http://ipinfo.io/json | Select -exp ip

Du kan också hitta den här adressen genom att söka efter vad som är min IP-adress i en webbläsare.

Nästa steg

I den här artikeln har du aktiverat API-serverauktoriserade IP-intervall. Den här metoden är en del av hur du kan köra ett AKS-kluster på ett säkert sätt. Mer information finns i Säkerhetsbegrepp för program och kluster i AKS och Metodtips för klustersäkerhet och uppgraderingar i AKS.