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 gå till Nätverk Inställningar på menybladet för klusterresursen.
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.