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 kullanarak az 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
    

    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 kullanarak az aks show mevcut yetkili IP aralıklarını apiServerAccessProfile.authorizedIpRangesbulun.

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

Dahil --api-server-authorized-ip-rangesetmek 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.

  1. Aşağıdaki komutu kullanarak IP adresinizi alın:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. 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.

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.