Azure Kubernetes Service'te (AKS) yetkili IP adresi aralıklarını kullanarak API sunucusuna güvenli erişim
Bu makalede, hangi IP adreslerinin ve CIDR'lerin denetim düzlemine erişebileceğini sınırlamak için API sunucusu yetkili IP adresi aralıkları özelliğinin nasıl kullanılacağı gösterilmektedir.
Kubernetes API sunucusu, Kubernetes denetim düzleminin çekirdeğidir ve kümelerinizle etkileşim kurmanın ve kümelerinizi yönetmenin merkezi yoludur. Kümelerinizin güvenliğini artırmak ve saldırı riskini en aza indirmek için API sunucusuna erişebilecek IP adresi aralıklarını sınırlamanızı öneririz. Bunu yapmak için API sunucusu yetkili IP aralıkları özelliğini kullanabilirsiniz.
Başlamadan önce
- Azure CLI sürüm 2.0.76 veya üzerinin 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. - AKS kümenizi Azure DevOps ile tümleştirdiğinizde hangi IP adreslerinin dahil edilmesi gerektiğini öğrenmek için Azure DevOps İzin Verilen IP adresleri ve etki alanı URL'leri makalesine bakın.
Sınırlamalar
API sunucusu yetkili IP aralıkları özelliği aşağıdaki sınırlamalara sahiptir:
- API sunucusu yetkili IP aralıkları özelliği Ekim 2019'da önizleme dışına taşındı. Özellik önizleme dışına taşındıktan sonra oluşturulan kümeler için bu özellik yalnızca Standart SKU yük dengeleyicide desteklenir. API sunucusu yetkili IP aralıkları özelliği etkinleştirilmiş Temel SKU yük dengeleyicide mevcut tüm kümeler olduğu gibi çalışmaya devam eder. Ancak, bu kümeler Standart SKU yük dengeleyiciye geçirilemez. Kubernetes sürümü ve denetim düzlemi yükseltilirse mevcut kümeler çalışmaya devam eder.
- API sunucusu yetkili IP aralıkları özelliği özel kümelerde desteklenmez.
- Bu özelliği Node Genel IP kullanan kümelerle kullanırken , Düğüm Genel IP'sini kullanan düğüm havuzlarının genel IP ön eklerini kullanması gerekir. Genel IP ön ekleri yetkili aralıklar olarak eklenmelidir.
API sunucusu yetkili IP aralıklarına genel bakış
Kubernetes API sunucusu temel Kubernetes API'lerini kullanıma sunar ve ve kubernetes panosu gibi kubectl
yönetim araçları için etkileşim sağlar. AKS, ayrılmış bir API sunucusu ile tek kiracılı bir küme denetim düzlemi sağlar. API sunucusuna varsayılan olarak bir genel IP adresi atanır. Kubernetes rol tabanlı erişim denetimi (Kubernetes RBAC) veya Azure RBAC kullanarak erişimi denetleyebilirsiniz.
Aksi takdirde genel olarak erişilebilen AKS denetim düzlemine /API sunucusuna erişimin güvenliğini sağlamak için yetkili IP aralıklarını etkinleştirebilir 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. Bu yetkili IP aralıklarının parçası olmayan bir IP adresinden API sunucusuna yapılan tüm istekler engellenir.
API sunucusu yetkili IP aralıkları etkinleştirilmiş bir AKS kümesi oluşturma
Önemli
Varsayılan olarak, kümeniz giden ağ geçidini yapılandırmak için kullanabileceğiniz Standart SKU yük dengeleyicisini kullanır. Küme oluşturma sırasında API sunucusu yetkili IP aralıklarını etkinleştirdiğinizde, belirttiğiniz aralıklara ek olarak kümenizin genel IP'sine varsayılan olarak izin verilir. için --api-server-authorized-ip-ranges
"" belirtirseniz veya değer belirtmezseniz, API sunucusu yetkili IP aralıkları devre dışı bırakılır. PowerShell kullanıyorsanız ayrıştırma sorunlarını önlemek için (eşittir işaretleriyle) kullanın --api-server-authorized-ip-ranges=""
.
Not
Bu aralıkları bir izin verme listesine eklemelisiniz:
- Küme çıkış IP adresi (giden türünüz bağlı olarak güvenlik duvarı, NAT ağ geçidi veya başka bir adres).
- Kümeyi yöneteceğimiz ağları temsil eden herhangi bir aralık.
Belirtebileceğiniz IP aralığı sayısı için üst sınır 200'dür.
Kuralların yayılması iki dakika kadar sürebilir. Lütfen bağlantıyı test ederken bu saate kadar izin verin.
API sunucusu yetkili IP aralıkları etkin bir küme oluştururken, yetkili genel IP adresi aralıklarının listesini sağlamak için parametresini kullanırsınız --api-server-authorized-ip-ranges
. Bir CIDR aralığı belirttiğinizde, aralıktaki ilk IP adresiyle başlayın. Örneğin, 137.117.106.90/29 geçerli bir aralıktır, ancak aralıktaki 137.117.106.88/29 gibi ilk IP adresini belirttiğinizden emin olun.
parametresiyle
--api-server-authorized-ip-ranges
komutunu kullanarakaz aks create
API sunucusu yetkili IP aralıkları etkinleştirilmiş bir AKS kümesi oluşturun. Aşağıdaki örnek, API sunucusu yetkili IP aralıkları etkin olan myResourceGroup adlı kaynak grubunda myAKSCluster adlı 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 --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --generate-ssh-keys
Standart SKU yük dengeleyici için giden IP'leri belirtme
API sunucusu yetkili IP aralıkları etkin bir küme oluştururken, veya --load-balancer-outbound-ip-prefixes
parametrelerini kullanarak --load-balancer-outbound-ips
küme için giden IP adreslerini veya ön eklerini de belirtebilirsiniz. Parametrelerde sağlanan tüm IP'lere, parametresindeki IP'lerle --api-server-authorized-ip-ranges
birlikte izin verilir.
API sunucusu yetkili IP aralıkları etkinleştirilmiş bir AKS kümesi oluşturun ve parametresini kullanarak
--load-balancer-outbound-ips
Standart SKU yük dengeleyici için giden IP adreslerini belirtin. Aşağıdaki örnek, API sunucusu yetkili IP aralıkları etkin ve giden IP adresleri<public-ip-id-2>
<public-ip-id-1>
ve ile myResourceGroup adlı kaynak grubunda myAKSCluster adlı bir küme oluşturur: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
Standart SKU yük dengeleyicinin yalnızca giden genel IP'sine izin ver
Küme oluşturma sırasında API sunucusu yetkili IP aralıklarını etkinleştirdiğinizde, belirttiğiniz aralıklara ek olarak kümeniz için Standart SKU yük dengeleyicinin giden genel IP'sine de varsayılan olarak izin verilir. Standart SKU yük dengeleyicinin yalnızca giden genel IP'sine izin vermek için parametresini belirtirken --api-server-authorized-ip-ranges
0.0.0.0/32 kullanırsınız.
API sunucusu yetkili IP aralıkları etkinleştirilmiş bir AKS kümesi oluşturun ve parametresini kullanarak Standart SKU yük dengeleyicinin yalnızca giden genel IP'sine
--api-server-authorized-ip-ranges
izin verin. Aşağıdaki örnek, API sunucusu yetkili IP aralıkları etkinleştirilmiş myResourceGroup adlı kaynak grubunda myAKSCluster adlı bir küme oluşturur ve Standart SKU yük dengeleyicinin yalnızca giden genel IP'sine izin verir: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
Mevcut kümenin API sunucusu yetkili IP aralıklarını güncelleştirme
parametresiyle komutunu kullanarak mevcut kümenin
az aks update
API sunucusu yetkili IP aralıklarını güncelleştirin--api-server-authorized-ip-ranges
. Aşağıdaki örnek, myResourceGroup adlı kaynak grubundaki myAKSCluster adlı kümede API sunucusu yetkili IP aralıklarını güncelleştirir. Yetkilendirilecek IP adresi aralığı 73.140.245.0/24'dür:az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges 73.140.245.0/24
Birden çok IP adresi aralığına izin vermek için, birkaç IP adresini virgülle ayırarak listeleyebilirsiniz.
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
Standart SKU yük dengeleyicinin yalnızca genel IP'sine izin vermek için parametresini belirtirken
--api-server-authorized-ip-ranges
0.0.0.0/32 de kullanabilirsiniz.
Yetkili IP aralıklarını devre dışı bırakma
komutunu kullanarak
az aks update
yetkili IP aralıklarını devre dışı bırakın ve parametresi için--api-server-authorized-ip-ranges
boş bir aralık""
belirtin.az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges ""
Mevcut yetkili IP aralıklarını bulma
parametresi olarak ayarlanmış komutunu
--query
kullanarakaz aks show
mevcut yetkili IP aralıklarınıapiServerAccessProfile.authorizedIpRanges
bulun.az aks show --resource-group myResourceGroup --name myAKSCluster --query apiServerAccessProfile.authorizedIpRanges
Dahil --api-server-authorized-ip-ranges
etmek için IP'mi nasıl bulabilirim?
API sunucusuna buradan erişmek için geliştirme makinelerinizi, araçlarınızı veya otomasyon IP adreslerinizi onaylanan IP aralıklarının AKS kümesi listesine eklemeniz gerekir.
Bir diğer seçenek de, güvenlik duvarının sanal ağında ayrı bir alt ağ içinde gerekli araçlarla bir sıçrama kutusu yapılandırmaktır. Bu, ortamınızda ilgili ağa sahip bir güvenlik duvarı olduğunu ve güvenlik duvarı IP'lerini yetkili aralıklara eklediğinizi varsayar. Benzer şekilde, AKS alt ağından güvenlik duvarı alt ağından tünel oluşturmak zorunda kaldıysanız küme alt ağından sıçrama kutusuna sahip olmak da sorun olmaz.
Aşağıdaki komutu kullanarak IP adresinizi alın:
# Retrieve your IP address CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
Azure CLI veya Azure PowerShell kullanarak IP adresinizi onaylananlar listesine ekleyin:
# 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'
Not
Yukarıdaki örnek, onaylanan aralıklara başka bir IP adresi ekler. Kümenin API sunucusu yetkili IP aralıklarını güncelleştirme işleminin IP adresini içerdiğini unutmayın. Mevcut IP adresinizi eklemezseniz, bu komut bunu yetkili aralıklara eklemek yerine yenisiyle değiştirir. Yetkili IP aralıklarını devre dışı bırakmak için boş bir "" aralığı kullanın az aks update
ve belirtin.
Diğer bir seçenek, genel IPv4 adresini almak için Windows sistemlerinde aşağıdaki komutu kullanmaktır veya IP adresinizi bulma sayfasındaki adımları izleyebilirsiniz.
Invoke-RestMethod http://ipinfo.io/json | Select -exp ip
Bu adresi, internet tarayıcısında IP adresimin ne olduğunu arayarak da bulabilirsiniz.
API Server yetkili IP aralıkları için Hizmet Etiketlerini kullanma - (Önizleme)
Hizmet etiketleri, Kubernetes Service'e karşılık gelen bir IP adresi grubu belirtmenin kullanışlı bir yoludur. Kubernetes hizmetlerinin IP adreslerini ve API sunucusunun yetkili IP aralıklarındaki belirli IP adreslerini virgülle ayırarak belirtmek için hizmet etiketlerini kullanabilirsiniz.
Sınırlamalar
- Bu özellik API Server Sanal Ağ Tümleştirmesi ile uyumlu değildir.
Önemli
AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinin ve sınırlı garantinin dışında tutulur. AKS önizlemeleri, müşteri desteği tarafından kısmen en iyi çaba temelinde ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:
Azure CLI önizleme uzantısını yükleme
[az extension add][az-extension-add] komutunu kullanarak Azure CLI önizleme uzantısını yükleyin.
az extension add --name aks-preview
[az extension update][az-extension-update] komutunu kullanarak en son sürüme sahip olduğunuzdan emin olmak için uzantıyı güncelleştirin.
az extension update --name aks-preview
Hizmet Etiketi Yetkili IP özellik bayrağını kaydetme
az feature register komutunu kullanarak EnableServiceTagAuthorizedIPPreview özellik bayrağını kaydedin .
az feature register --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
Kaydın tamamlanması birkaç dakika sürer.
az feature show komutunu kullanarak kaydı doğrulayın.
az feature show --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
Hizmet Etiketi yetkili IP aralıkları ile AKS kümesi oluşturma
Tüm Azure hizmetlerinin API sunucusuna erişmesine izin vermek ve ek bir IP adresi belirtmek için hizmet etiketiyle AzureCloud
parametresini kullanarak --api-server-authorized-ip-ranges
Hizmet Etiketi yetkili IP aralıklarıyla bir küme oluşturun.
Not
Parametresinde yalnızca bir hizmet etiketine --api-server-authorized-ip-ranges
izin verilir. Birden çok hizmet etiketi belirtemezsiniz.
az aks create --resource-group myResourceGroup \
--name myAKSCluster \
--api-server-authorized-ip-ranges AzureCloud,20.20.20.20
API sunucusunu hizmet etiketinin parçası olan bir Azure VM'sinden veya Azure hizmetinden AzureCloud
kıvırabilmeniz gerekir.
Sonraki adımlar
Bu makalede API sunucusu yetkili IP aralıklarını etkinleştirmişsiniz. Bu yaklaşım, AKS kümesini güvenli bir şekilde ç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.
Azure Kubernetes Service