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-ranges
inaktiveras 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
Om du vill tillåta flera IP-adressintervall kan du lista flera IP-adresser, avgränsade med kommatecken.
az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges 73.140.245.0/24,193.168.1.0/24,194.168.1.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å--query
apiServerAccessProfile.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.
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")
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.
Använda tjänsttaggar för API Server-auktoriserade IP-intervall – (förhandsversion)
Tjänsttaggar är ett praktiskt sätt att ange en grupp MED IP-adresser som motsvarar en Kubernetes-tjänst. Du kan använda tjänsttaggar för att ange IP-adresserna för Kubernetes-tjänster och specifika IP-adresser i de auktoriserade IP-intervallen för API-servern genom att avgränsa dem med kommatecken.
Begränsningar
- Den här funktionen är inte kompatibel med API Server VNet-integrering.
Viktigt!
AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och anmäl dig. Förhandsversioner tillhandahålls "som är" och "som tillgängliga", och de undantas från serviceavtalen och den begränsade garantin. AKS-förhandsversioner omfattas delvis av kundsupport på bästa sätt. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:
Installera azure CLI-förhandsgranskningstillägget
Installera azure CLI-förhandsgranskningstillägget med kommandot [az extension add][az-extension-add].
az extension add --name aks-preview
Uppdatera tillägget så att du har den senaste versionen med kommandot [az extension update][az-extension-update].
az extension update --name aks-preview
Registrera flaggan För auktoriserad IP-funktion för tjänsttagg
Registrera funktionsflaggan EnableServiceTagAuthorizedIPPreview med kommandot az feature register .
az feature register --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
Det tar några minuter innan registreringen har slutförts.
Kontrollera registreringen med kommandot az feature show .
az feature show --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
Skapa ett AKS-kluster med auktoriserade IP-intervall för tjänsttagg
Skapa ett kluster med servicetaggens auktoriserade IP-intervall med hjälp av parametern --api-server-authorized-ip-ranges
med tjänsttaggen AzureCloud
så att alla Azure-tjänster kan komma åt API-servern och ange ytterligare en IP-adress.
Kommentar
Endast en tjänsttagg tillåts i parametern --api-server-authorized-ip-ranges
. Du kan inte ange flera tjänsttaggar.
az aks create --resource-group myResourceGroup \
--name myAKSCluster \
--api-server-authorized-ip-ranges AzureCloud,20.20.20.20
Du bör kunna curla API-servern från en virtuell Azure-dator eller Azure-tjänst som ingår i AzureCloud
tjänsttaggen.
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.
Azure Kubernetes Service