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

I Kubernetes tar API-servern emot begäranden om att utföra åtgärder i klustret, till exempel att skapa resurser eller skala antalet noder. API-servern är det centrala sättet att interagera med och hantera ett kluster. För att förbättra klustersäkerheten och minimera attacker bör API-servern endast vara tillgänglig från en begränsad uppsättning IP-adressintervall.

Den här artikeln visar hur du använder API-serverns auktoriserade IP-adressintervall för att begränsa vilka IP-adresser och CIDR som kan komma åt kontrollplanet.

Innan du börjar

Den här artikeln visar hur du skapar ett AKS-kluster med hjälp av Azure CLI.

Azure CLI version 2.0.76 eller senare måste vara installerat och konfigurerat. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Begränsningar

Funktionen auktoriserat IP-intervall för API-servern har följande begränsningar:

  • I kluster som skapades efter att API-serverns auktoriserade IP-adressintervall flyttades utanför förhandsversionen i oktober 2019 stöds endast API-serverns auktoriserade IP-adressintervall i standard-SKU-lastbalanseraren. Befintliga kluster med Basic SKU-lastbalanseraren och API-serverns auktoriserade IP-adressintervall som konfigurerats fortsätter att fungera som de är, men kan inte migreras till en standard-SKU-lastbalanserare. Dessa befintliga kluster fortsätter också att fungera om deras Kubernetes-version eller kontrollplan uppgraderas. API-serverns auktoriserade IP-adressintervall stöds inte för privata kluster.
  • När du använder den här funktionen med kluster som använder offentlig IP pernod måste de nodpooler med offentlig IP per nod aktiverat använda offentliga IP-prefix och dessa prefix måste läggas till som auktoriserade intervall.

Översikt över API-server-auktoriserade IP-intervall

Kubernetes API-servern är hur de underliggande Kubernetes-API:erna exponeras. Den här komponenten ger interaktion för hanteringsverktyg, till exempel kubectl eller Kubernetes-instrumentpanelen. AKS tillhandahåller ett kontrollplan för en enda klient med en dedikerad API-server. Som standard tilldelas API-servern en offentlig IP-adress och du bör styra åtkomsten med hjälp av rollbaserad åtkomstkontroll (Kubernetes RBAC) eller Azure RBAC.

Om du vill skydda åtkomsten till den 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. En begäran som görs till API-servern från en IP-adress som inte är en del av dessa auktoriserade IP-intervall blockeras. Fortsätt att använda Kubernetes RBAC eller Azure RBAC för att auktorisera användare och de åtgärder som de begär.

Mer information om API-servern och andra klusterkomponenter finns i Kubernetes core concepts for AKS (Kubernetes-kärnbegrepp för AKS).

Skapa ett AKS-kluster med API-serverns auktoriserade IP-intervall aktiverade

Skapa ett kluster med az aks create och ange --api-server-authorized-ip-ranges parametern för att tillhandahålla en lista över auktoriserade IP-adressintervall. Dessa IP-adressintervall är vanligtvis adressintervall som används av dina lokala nätverk eller offentliga IP-adresser. 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.

Viktigt

Som standard använder klustret standard-SKU:n för lastbalanserare som du kan använda för att konfigurera den utgående gatewayen. När du aktiverar API-serverns auktoriserade IP-intervall när klustret skapas tillåts även 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-ranges inaktiveras API-serverns auktoriserade IP-intervall. Observera att om du använder PowerShell använder du --api-server-authorized-ip-ranges="" (med likhetstecken) för att undvika parsningsproblem.

I följande exempel skapas ett kluster med en nod med namnet myAKSCluster i resursgruppen med namnet myResourceGroup med API-serverns auktoriserade IP-intervall aktiverade. Ip-adressintervallen som tillåts är 73.140.245.0/24:

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

Anteckning

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

  • Den offentliga IP-adressen för brandväggen
  • 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 2 min att sprida reglerna. Tillåt fram till den tiden när du testar anslutningen.

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

Om du anger utgående IP-adresser eller prefix för klustret när du skapar ett AKS-kluster tillåts även dessa adresser eller prefix. Ett exempel:

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

I exemplet ovan tillåts alla IP-adresser som anges i --load-balancer-outbound-ip-prefixes parametern tillsammans med IP-adresser i --api-server-authorized-ip-ranges parametern .

I stället kan du ange parametern --load-balancer-outbound-ip-prefixes för att tillåta utgående IP-prefix för lastbalanseraren.

Tillåt endast den utgående offentliga IP-adressen för standard-SKU-lastbalanserare

När du aktiverar API-serverns auktoriserade 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 --api-server-authorized-ip-ranges parametern.

I följande exempel tillåts endast den utgående offentliga IP-adressen för standard-SKU:ns lastbalanserare och du kan bara komma åt API-servern från noderna i klustret.

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

Uppdatera ett klusters API-server-auktoriserade IP-intervall

Om du vill uppdatera API-serverns auktoriserade IP-intervall i ett befintligt kluster använder du kommandot az aks update och använder parametrarna --api-server-authorized-ip-ranges ,--load-balancer-outbound-ip-prefixes , --load-balancer-outbound-ips eller--load-balancer-outbound-ip-prefixes.

I följande exempel uppdateras API-serverns auktoriserade IP-intervall i klustret med namnet myAKSCluster i resursgruppen med namnet myResourceGroup. IP-adressintervallet som ska godkännas ä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 så att endast den offentliga IP-adressen för --api-server-authorized-ip-ranges standard-SKU-lastbalanseraren tillåts.

Inaktivera auktoriserade IP-intervall

Om du vill inaktivera auktoriserade IP-intervall använder du az aks update och anger ett tomt intervall för att inaktivera API-serverns auktoriserade IP-intervall. Ett exempel:

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

Hitta befintliga auktoriserade IP-intervall

Om du vill hitta IP-intervall som har auktoriserats använder du az aks show och anger klustrets namn och resursgrupp. Ett exempel:

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

Uppdatera, inaktivera och hitta auktoriserade IP-intervall med hjälp av Azure Portal

Ovanstående åtgärder för att lägga till, uppdatera, hitta och inaktivera auktoriserade IP-intervall kan också utföras i Azure Portal. Du kommer åt genom att till Nätverk Inställningar på menybladet för klusterresursen.

I en webbläsare visas klusterresursens nätverksinställningar på Azure Portal sidan. Alternativen &quot;Ange angivet IP-intervall&quot; och &quot;Angivna IP-intervall&quot; är markerade.

Hur hittar jag min IP-adress som ska inkluderas i --api-server-authorized-ip-ranges ?

Du måste lägga till dina utvecklingsdatorer, verktygs- eller automatiserings-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. Om du har tvingad tunnel från AKS-undernätet till brandväggsundernätet går det också bra att ha jumpboxen i klustrets undernät.

Lägg till ytterligare en IP-adress till de godkända intervallen med följande kommando.

# Retrieve your IP address
CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
# Add to AKS approved list
az aks update -g $RG -n $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/32

Anteckning

Exemplet ovan lägger till API-serverns auktoriserade IP-intervall i klustret. Om du vill inaktivera auktoriserade IP-intervall använder du az aks update och anger ett tomt intervall "".

Ett annat alternativ är att använda kommandot nedan på Windows-system för att hämta den offentliga IPv4-adressen, eller så kan du använda 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 "what is my IP address" (vad är min IP-adress) i en webbläsare.

Nästa steg

I den här artikeln har du aktiverat API-serverns auktoriserade IP-intervall. Den här metoden är en del av hur du kan köra ett säkert AKS-kluster.

Mer information finns i Säkerhetsbegrepp för program och kluster i AKS och Metodtips för klustersäkerhet och uppgraderingar i AKS.