Azure Örnek Meta Veri Hizmeti (IMDS) uç noktasına pod erişimini engelleme (önizleme)

Varsayılan olarak, Azure Kubernetes Service (AKS) kümesinde çalışan tüm podlar Azure Örnek Meta Veri Hizmeti (IMDS) uç noktasına erişebilir. Artık güvenliği (önizleme) geliştirmek için isteğe bağlı olarak Azure Kubernetes Service (AKS) kümelerinizden IMDS uç noktasına erişimi kısıtlayabilirsiniz.

Ö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 mümkün olan en iyi şekilde kısmen 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:

AKS kümeleri için IMDS kısıtlaması hakkında

Azure IMDS, şu anda çalışan sanal makine örnekleri hakkında bilgi sağlayan bir REST API'dir. Bu bilgiler, SKU, depolama, ağ yapılandırmaları ve yaklaşan bakım olaylarını içerir.

IMDS REST API, AKS kümesinde çalışan tüm podlardan varsayılan olarak erişilebilen bilinen, yönlendirilemeyen bir IP adresinde (169.254.169.254) mevcuttur. Bu varsayılan erişim, AKS kümesi için belirli güvenlik risklerini getirir:

  • Kötü amaçlı kullanıcılar, belirteçler ve diğer platform bilgileri gibi hassas bilgileri almak için hizmetlerden yararlanabilir ve bu da bilgi sızıntısına neden olabilir.
  • Uygulamalar bu kimlik bilgilerini kötüye kullanabileceğinden olası kimlik doğrulama güvenlik açıkları ortaya çıkar.

Artık kümenizde çalışan konak dışı ağ podları için IMDS uç noktasına erişimi kısıtlamayı tercih edebilirsiniz. Ana bilgisayar olmayan ağ podlarıhostNetwork, belirtimlerinde false olarak ayarlanmıştır. IMDS kısıtlaması etkinleştirildiğinde, konak olmayan ağ podları IMDS uç noktasına erişemez veya yönetilen kimlik tarafından yetkilendirme için OAuth 2.0 belirteçleri alamaz. IMDS kısıtlaması etkinleştirildikten sonra host olmayan ağ podları Microsoft Entra İş Yükü Kimliği'ne güvenmelidir.

Ana bilgisayar ağ kapsüllerinde hostNetwork belirtimlerde true olarak ayarlanmıştır. Ana bilgisayar ağı podları, ana bilgisayar işlemleriyle aynı ağ ad alanını paylaştığından, IMDS kısıtlaması etkinleştirildikten sonra IMDS uç noktasına erişmeye devam edebilir. Düğümlerdeki yerel işlemler örnek meta verilerini almak için IMDS uç noktasını kullanabilir, böylece IMDS kısıtlaması etkinleştirildikten sonra uç noktaya erişmelerine izin verilir.

Başlamadan önce

  1. Azure CLI sürüm 2.61.0 veya üzerinin yüklü olduğundan emin olun. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

  2. aks-preview Azure CLI uzantısı sürüm 7.0.0b2 veya üzerini yükleyin.

    • Eğer aks-preview uzantısına henüz sahip değilseniz, az extension add komutunu kullanarak yükleyin.

      az extension add --name aks-preview
      
    • Uzantıya aks-preview zaten sahipseniz, komutunu kullanarak en son sürüme sahip olduğunuzdan emin olmak için uzantıyı güncelleştirin az extension update .

      az extension update --name aks-preview
      
  3. IMDSRestrictionPreview az feature register komutunu kullanarak özellik bayrağını kaydedin.

    az feature register --namespace Microsoft.ContainerService --name IMDSRestrictionPreview
    

    az feature show komutunu kullanarak kayıt durumunu doğrulayın. Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer:

    az feature show --namespace Microsoft.ContainerService --name IMDSRestrictionPreview
    

    Durum Kayıtlı olarak gösterildiğinde, az provider register komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyin.

    az provider register --namespace Microsoft.ContainerService
    
  4. AKS kümenizde OIDC Veren'i etkinleştirin. Yeni bir küme oluşturmak veya mevcut bir kümeyi güncelleştirmek için bkz. OIDC Issuer ile bir AKS kümesini yapılandırma.

Sınırlamalar

IMDS uç noktasına erişmesi gereken bazı eklentiler IMDS kısıtlaması ile desteklenmez. Kümenizde bu eklentiler yüklüyse IMDS kısıtlamasını etkinleştiremezsiniz. Buna karşılık, IMDS kısıtlaması etkinse bu eklentileri yükleyemezsiniz. Desteklenmeyen eklentiler şunlardır:

  • Uygulama ağ geçidi giriş denetleyicisi
  • Kapsayıcılar için Azure İzleyici (Kapsayıcı İçgörüleri)
  • Sanal düğümler
  • Azure İlkesi
  • Küme uzantıları: Flux (GitOps), Dapr, Azure Uygulaması Yapılandırması, Azure Machine Learning, Azure Container Storage, Azure Backup
  • Yapay zeka araç zinciri operatörü (önizleme)
  • Başvuru rotası
  • HTTP uygulaması yönlendirme
  • Web uygulaması yönlendirme
  • Azure maliyet analizi

Azure Key Vault sağlayıcısı, Gizli Dizi Mağazası Kapsayıcı Depolama Arabirimi (CSI) sürücüsü için artık iş yükü kimliği kimlik doğrulama modunu destekliyor ve bu nedenle IMDS kısıtlaması etkinleştirildiğinde çalışabiliyor.

Ayrıca, Windows düğüm havuzları şu anda IMDS kısıtlaması ile desteklenmemektedir.

Dikkat

Desteklenmeyen eklentiler kullanan bir küme için IMDS kısıtlamalarının etkinleştirilmesi hatayla sonuçlanır.

Dikkat edilmesi gereken önemli hususlar

IMDS kısıtlaması etkinleştirildiğinde AKS düğümdeki iptables kurallarını yönetir. Iptables kurallarının yanlışlıkla kaldırılmasını veya üzerinde oynanmasını önlemek için aşağıdaki noktaları aklınızda bulundurun:

  • Iptables kuralları SSH veya node-shell ile değiştirilebilir, bu yüzden SSH'yi devre dışı bırak veya ayrıcalıklı podları devre dışı bırakacak bir ilke kullanmanızı öneririz.
  • Düğüm yeniden görüntülendiğinde veya yeniden başlatıldığında, IMDS'ye erişimi kısıtlayan iptables kuralları geri yüklenir.

Yeni kümede IMDS kısıtlamasını etkinleştirme

Yeni bir kümede IMDS kısıtlamasını etkinleştirmek ve konak ağı dışında kalan ağ podlarından IMDS uç noktasına gelen tüm trafiği engellemek için, az aks create komutunu --enable-imds-restriction parametresiyle çalıştırın.

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --enable-imds-restriction

Mevcut kümede IMDS kısıtlamasını etkinleştirme

Mevcut bir kümede IMDS kısıtlamasını etkinleştirmek ve konak olmayan ağ podlarından IMDS uç noktasına gelen tüm trafiği engellemek için komutunu parametresiyle az aks update çalıştırın--enable-imds-restriction.

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --enable-imds-restriction

Kümeyi güncelleştirdikten sonra, kümenin podlarına gelen trafiği engellemeye başlamak için ile kümenizdeki düğümleri yenidenaz aks upgrade --node-image-only.

IMDS kısıtlaması etkin bir kümedeki trafiği doğrulama

IMDS kısıtlamasının geçerli olduğunu doğrulamak için hem konak hem de konak olmayan ağ podlarına yönelik trafiği test edin.

Ana bilgisayar ağına bağlı olmayan bir ağ podunun trafiğini doğrula

  1. ile hostNetwork: falsebir pod oluşturun. ile hostNetwork: falsebir test pod'nuz yoksa aşağıdaki komutu çalıştırarak bir tane oluşturabilirsiniz.

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
         name: non-host-nw
    spec:
      hostNetwork: false
      containers:
      - name: non-host-nw
        image: mcr.microsoft.com/azurelinux/base/nginx:1
        command: ["sleep", "infinity"]
    EOF
    
  2. kubectl exec ile poddaki kabuğa bağlanın.

    kubectl exec -it non-host-nw -- /bin/bash
    
  3. Poddan IMDS uç noktasına gelen trafiği test edin.

    curl -s -H Metadata:true --connect-timeout 10 --noproxy "*" "http://169.254.169.254/metadata/instance?api-version=2023-11-15" 
    

Yaklaşık 10 saniye bekleyin ve komutun hiçbir şey döndürmediğini gözlemleyin; bu da bağlantının zaman aşımına uğradı ve pod'un IMDS uç noktasına erişemediği anlamına gelir.

Bundan sonra kubectl delete pod non-host-nw ile podu temizleyin.

Ana bilgisayar ağ podundaki trafiği doğrula

  1. ile hostNetwork: truebir pod oluşturun. ile hostNetwork: truebir test pod'nuz yoksa aşağıdaki komutu çalıştırarak bir tane oluşturabilirsiniz.

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: host-nw
    spec:
      hostNetwork: true
      containers:
      - name: host-nw
        image: mcr.microsoft.com/azurelinux/base/nginx:1
        command: ["sleep", "infinity"]
    EOF
    
  2. kubectl exec ile poddaki kabuğa bağlanın.

    kubectl exec -it host-nw -- /bin/bash
    
  3. Poddan IMDS uç noktasına gelen trafiği test etme

    curl -s -H Metadata:true --noproxy "*" "http://169.254.169.254/metadata/instance?api-version=2023-11-15" 
    

Komutun sonuçları döndürdüğünü, yani pod'un IMDS uç noktalarına beklendiği gibi erişebildiğini gözlemleyin.

Bundan sonra kubectl delete pod host-nw ile podu temizleyin.

Küme için IMDS kısıtlamasını devre dışı bırakma

Mevcut bir kümede IMDS kısıtlamasını devre dışı bırakmak ve herhangi bir poddan IMDS uç noktasına giden tüm trafiğe izin vermek için parametresiyle az aks update komutunu çalıştırın--disable-imds-restriction.

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --disable-imds-restriction

Kümeyi güncelleştirdikten sonra kümenin podlarına giden tüm trafiğe izin vermek için kümenizdeki düğümleri yeniden oluşturmanız gerekir.

Ayrıca bkz.

Sanal makineler için Azure Örnek Meta Veri Hizmeti