Azure Kubernetes Service (AKS) içinde yetkili IP adresi aralıklarını kullanarak API sunucusuna güvenli erişim

Kubernetes'te API sunucusu, kümede kaynak oluşturma veya düğüm sayısını ölçeklendirme gibi eylemleri gerçekleştirmeye yönelik istekler alır. API sunucusu, kümeyle etkileşim kurmanın ve kümeyi yönetmenin merkezi yoludur. Küme güvenliğini geliştirmek ve saldırıları en aza indirmek için API sunucusuna yalnızca sınırlı bir IP adresi aralığı kümesinden erişilebilir olması gerekir.

Bu makalede, hangi IP adreslerinin ve CIDR'lerin denetim düzlemi erişimine sahip olduğunu sınırlamak için API sunucusu tarafından yetkilendirilen IP adresi aralıklarını nasıl kullanabileceğiniz açıklanmıştır.

Başlamadan önce

Bu makalede, Azure CLI kullanarak AKS kümesi oluşturma açıklanmıştır.

Azure CLI 2.0.76 veya sonraki bir sürümün yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Sınırlamalar

API sunucusu Yetkili IP aralıkları özelliği aşağıdaki sınırlamalara sahiptir:

  • API sunucusu yetkili IP adresi aralıkları Ekim 2019'da önizlemeden kaldırıldıktan sonra oluşturulan kümelerde, API sunucusu tarafından yetkilendirilmiş IP adresi aralıkları yalnızca Standart SKU yük dengeleyicide de desteklenmemektedir. Temel SKU yük dengeleyicisi ve API sunucusu tarafından yetkilendirilmiş IP adresi aralıkları yapılandırılmış mevcut kümeler olduğu gibi çalışmaya devam eder ancak Standart SKU yük dengeleyiciye geçirilmez. Kubernetes sürümü veya denetim düzlemi yükseltilirse mevcut kümeler de çalışmaya devam eder. API sunucusu yetkili IP adresi aralıkları özel kümeler için desteklenmemektedir.
  • Bu özelliği Düğüm başına Genel IP kullanan kümelerle kullanırken, düğüm başına genel IPetkin olan bu düğüm havuzları genel IP ön eklerini kullanmalıdır ve bu ön ekler yetkili aralıklar olarak ekilmelidir.

API sunucusu yetkili IP aralıklarını genel bakış

Kubernetes API sunucusu, temel alınan Kubernetes API'leri tarafından ortaya çıkar. Bu bileşen, veya Kubernetes panosu gibi kubectl yönetim araçları için etkileşim sağlar. AKS, ayrılmış bir API sunucusuna sahip tek kiracılı bir küme denetim düzlemi sağlar. Varsayılan olarak API sunucusuna bir genel IP adresi atanır ve erişimi Kubernetes rol tabanlı erişim denetimi (Kubernetes RBAC) veya Azure RBAC kullanarak denetlemeniz gerekir.

Genel olarak erişilebilen AKS denetim düzlemi/API sunucusuna erişimin güvenliğini sağlamak için yetkili IP aralıklarını etkinleştirebilirsiniz ve kullanabilirsiniz. Bu yetkili IP aralıkları yalnızca tanımlı IP adresi aralıklarının API sunucusuyla iletişim kurmasına izin verir. API sunucusuna bu yetkili IP aralıklarının parçası olmayan bir IP adresi üzerinden yapılan istek engellenir. Kullanıcıları ve isteklerini yetkilendirmek için Kubernetes RBAC veya Azure RBAC kullanmaya devam edin.

API sunucusu ve diğer küme bileşenleri hakkında daha fazla bilgi için bkz. AKS için Kubernetes temel kavramları.

API sunucusu tarafından yetkilendirilmiş IP aralıkları etkinleştirilmiş bir AKS kümesi oluşturma

az aks create kullanarak bir küme oluşturun ve yetkili IP adresi --api-server-authorized-ip-ranges aralıklarının listesini sağlamak için parametresini belirtin. Bu IP adresi aralıkları genellikle şirket içi ağlarınız veya genel IP'ler tarafından kullanılan adres aralıklarıdır. Bir CIDR aralığı belirttiğinizde, aralıkta ilk IP adresiyle başlar. Örneğin, 137.117.106.90/29 geçerli bir aralıktır, ancak aralıkta 137.117.106.88/29 gibi ilk IP adresini belirttiğinizden emin olun.

Önemli

Varsayılan olarak, kümeniz giden ağ geçidini yapılandırmak için kullanabileceğiniz Standart SKU yük dengeleyiciyi kullanır. Küme oluşturma sırasında API sunucusu tarafından yetkilendirilmiş IP aralıklarını etkinleştirerek kümenizin genel IP adresine belirttiğiniz aralıklara ek olarak varsayılan olarak izin verilir. için "" belirtir veya hiçbir değer belirtmezseniz, --api-server-authorized-ip-ranges API sunucusu tarafından yetkilendirilmiş IP aralıkları devre dışı bırakılır. PowerShell kullanıyorsanız ayrıştırma sorunlarından kaçınmak için --api-server-authorized-ip-ranges="" (eşittir işaretiyle) kullanın.

Aşağıdaki örnek, API sunucusu tarafından yetkilendirilmiş IP aralıklarının etkin olduğu myResourceGroup adlı kaynak grubunda myAKSCluster adlı tek düğümlü bir küme oluşturur. İzin verilen IP adresi aralıkları 73.140.245.0/24'tir:

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

Not

Bu aralıkları bir izin verme listesine eklemeniz gerekir:

  • Güvenlik duvarı genel IP adresi
  • Kümeyi yönetecekleri ağları temsil eden herhangi bir aralık

Belirtebilirsiniz IP aralığı sayısı için üst sınır 200'dır.

Kuralların yayılması 2 dakika kadar zaman alır. Bağlantıyı test etmek için lütfen bu süreye kadar izin ver.

Standart SKU yük dengeleyici için giden IP'leri belirtme

AKS kümesi oluştururken, küme için giden IP adreslerini veya ön eklerini belirtirsiniz, bu adreslere veya ön eklere de izin verilir. Örneğin:

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

Yukarıdaki örnekte, parametresinde sağlanan tüm IP'lere parametresinde yer --load-balancer-outbound-ip-prefixes alan IP'lerle birlikte izin --api-server-authorized-ip-ranges verilir.

Bunun yerine, giden yük --load-balancer-outbound-ip-prefixes dengeleyici IP ön eklerine izin vermek için parametresini belirtebilirsiniz.

Standart SKU yük dengeleyicinin yalnızca giden genel IP'sine izin ver

Küme oluşturma sırasında API sunucusu tarafından yetkilendirilmiş IP aralıklarını etkinleştirerek kümeniz için Standart SKU yük dengeleyici için giden genel IP'ye belirttiğiniz aralıklara ek olarak varsayılan olarak izin verilir. Standart SKU yük dengeleyicinin yalnızca giden genel IP'sine izin vermek için parametresini belirtirken 0.0.0.0/32 --api-server-authorized-ip-ranges kullanın.

Aşağıdaki örnekte, Standart SKU yük dengeleyicinin yalnızca giden genel IP'sine izin verilir ve API sunucusuna yalnızca küme içindeki düğümlerden erişebilirsiniz.

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

Kümenin API sunucusunun yetkilendirilmiş IP aralıklarını güncelleştirme

Mevcut bir kümede API sunucusu tarafından yetkilendirilmiş IP aralıklarını güncelleştirmek için az aks update komutunu kullanın ve --api-server-authorized-ip-ranges ,--load-balancer-outbound-ip-prefixes , --load-balancer-outbound-ips veya--load-balancer-outbound-ip-prefixes parametrelerini kullanın.

Aşağıdaki örnek, myResourceGroup adlı kaynak grubunda myAKSCluster adlı kümede API sunucusu tarafından yetkilendirilmiş IP aralıklarını günceller. Yetkilendirilen IP adresi aralığı: 73.140.245.0/24:

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

Ayrıca, yalnızca Standart SKU yük dengeleyicinin genel IP'sine izin vermek için parametresini belirtirken 0.0.0.0/32 --api-server-authorized-ip-ranges kullanabilirsiniz.

Yetkili IP aralıklarını devre dışı bırakma

Yetkili IP aralıklarını devre dışı bırakmak için az aks update kullanın ve BOŞ bir aralık belirterek API sunucusu tarafından yetkilendirilmiş IP aralıklarını devre dışı bırakın. Örneğin:

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

Mevcut yetkili IP aralıklarını bulma

Yetkilendirilmiş IP aralıklarını bulmak için az aks show kullanın ve kümenin adını ve kaynak grubunu belirtin. Örneğin:

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

Yetkili IP aralıklarını kullanarak güncelleştirme, devre dışı bırakma ve Azure portal

Yukarıdaki yetkili IP aralıklarını ekleme, güncelleştirme, bulma ve devre dışı bırakma işlemleri de Azure portal. Erişmek için, küme kaynağınıza Ayarlar dikey penceresindeki Ağ İletişimi'ne gidin.

Tarayıcıda, küme kaynağının ağ ayarlarını Azure portal gösterir. 'Belirtilen IP aralığını ayarla' ve 'Belirtilen IP aralıkları' seçenekleri vurgulanır.

'a dahil etmek için IP'mi nasıl --api-server-authorized-ip-ranges bulamıyorum?

API sunucusuna buradan erişmek için geliştirme makinelerinizi, araç veya otomasyon IP adreslerinizi onaylı IP aralıklarının AKS kümesi listesine eklemeniz gerekir.

Bir diğer seçenek de Güvenlik Duvarı'nın sanal ağı içindeki ayrı bir alt ağ içinde gerekli araçla bir sıçrama kutusu yapılandırmaktır. Bu, ortamınız için ilgili ağa sahip bir Güvenlik Duvarı olduğunu ve güvenlik duvarı IP'lerini yetkili aralıklara ekleyebilirsiniz. Benzer şekilde, AKS alt a ağından Güvenlik Duvarı alt ağına zorlamalı tünel kullandıysanız, küme alt ağın içinde sıçrama kutusuna sahip olmak da sorun değil.

Aşağıdaki komutla onaylı aralıklara başka bir IP adresi ekleyin.

# 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

Not

Yukarıdaki örnek, kümeye API sunucusu tarafından yetkilendirilmiş IP aralıklarını ekler. Yetkili IP aralıklarını devre dışı bırakmak için az aks update kullanın ve boş bir "" aralığı belirtin.

Bir diğer seçenek de genel IPv4 Windows için aşağıdaki komutu kullanmaktır veya IP adresinizi bulma adımlarını kullanabilirsiniz.

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

İnternet tarayıcısında "IP adresim nedir" ifadesini arayarak da bu adresi bulabilirsiniz.

Sonraki adımlar

Bu makalede API sunucusunun yetkilendirilmiş IP aralıklarını etkinleştirmişsinizdir. Bu yaklaşım, güvenli bir AKS kümesi çalıştırmanın bir parçasıdır.

Daha fazla bilgi için bkz. AKS'de uygulamalar ve kümeler için güvenlik kavramları ve AKS'de küme güvenliği ve yükseltmeleri için en iyi yöntemler.