Azure Kubernetes Service (AKS) düğümlerine güvenli erişim için SSH'yi yönetme

Bu makalede, ilk dağıtım sırasında veya daha sonra AKS kümelerinizde veya düğüm havuzlarınızda SSH anahtarlarının (önizleme) nasıl yapılandırıldığı açıklanır.

AKS, küme düğümlerinde SSH anahtarlarını yönetmek için aşağıdaki yapılandırma seçeneklerini destekler:

  • SSH anahtarlarıyla küme oluşturma
  • Mevcut aks kümesinde SSH anahtarlarını güncelleştirme
  • SSH hizmetini devre dışı bırakma ve etkinleştirme

Ö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:

Başlamadan önce

  • Update'i kullanmak için 0.5.116 veya sonraki bir sürümü kullanmanız gerekiraks-preview.
  • Devre Dışı Bırak'ı kullanmak için sürüm 1.0.0b6 veya üzeri gerekiraks-preview.
  • SSH Oluşturma ve Güncelleştirme özelliği, mevcut kümelerdeki Linux, Windows ve Azure Linux düğüm havuzlarını destekler.
  • SSH'yi Devre Dışı Bırak özelliği, Windows Server işletim sistemini çalıştıran düğüm havuzlarında bu önizleme sürümünde desteklenmez.

Azure CLI uzantısını aks-preview yükleme

  1. komutunu kullanarak aks-preview uzantısını az extension add yükleyin.

    az extension add --name aks-preview
    
  2. komutunu kullanarak uzantının en son sürümüne güncelleştirin az extension update .

    az extension update --name aks-preview
    

Özellik bayrağını DisableSSHPreview kaydetme

SSH'yi Devre Dışı Bırak özelliğini kullanmak için aşağıdaki adımları gerçekleştirerek aboneliğinize kaydedin ve etkinleştirin.

  1. DisableSSHPreview komutunu kullanarak özellik bayrağını az feature register kaydedin.

    az feature register --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
    

    Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer.

  2. komutunu kullanarak az feature show kayıt durumunu doğrulayın.

    az feature show --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
    
  3. Durum Kayıtlı olarak yansıtıldığında, komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyinaz provider register.

    az provider register --namespace Microsoft.ContainerService
    

SSH anahtarlarıyla AKS kümesi oluşturma

Aks kümesini SSH ortak anahtarıyla dağıtmak için az aks create komutunu kullanın. Bağımsız değişkenini kullanarak --ssh-key-value anahtarı veya anahtar dosyasını belirtebilirsiniz.

SSH parametresi Açıklama Default value
--generate-ssh-key Kendi SSH anahtarlarınız yoksa belirtin --generate-ssh-key. Azure CLI otomatik olarak bir dizi SSH anahtarı oluşturur ve bunları varsayılan dizinine ~/.ssh/kaydeder.
--ssh-key-value SSH erişimi için düğüm VM'lerine yüklenecek ortak anahtar yolu veya anahtar içeriği. Örneğin, ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm. ~/.ssh/id_rsa.pub
--no-ssh-key SSH anahtarları gerekmiyorsa bu bağımsız değişkeni belirtin. Ancak Azure Sanal Makine kaynak bağımlılığı boş bir SSH anahtarları dosyasını desteklemediğinden AKS otomatik olarak bir SSH anahtarları kümesi oluşturur. Sonuç olarak anahtarlar döndürülür ve düğüm VM'lerinde SSH için kullanılamaz. Özel anahtar atılır ve kaydedilmez.

Not

Parametre belirtilmezse, Azure CLI varsayılan olarak dosyada depolanan SSH anahtarlarına başvurur ~/.ssh/id_rsa.pub . Anahtarlar bulunamazsa, komut iletisini An RSA key file or key value must be supplied to SSH Key Valuedöndürür.

Bu komutun örnekleri aşağıda verilmiştir:

  • Küme oluşturmak ve varsayılan olarak oluşturulan SSH anahtarlarını kullanmak için:

    az aks create --name myAKSCluster --resource-group MyResourceGroup --generate-ssh-key
    
  • SSH ortak anahtar dosyası belirtmek için bağımsız değişkenini --ssh-key-value ekleyin:

    az aks create --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
    

Mevcut AKS kümesinde SSH ortak anahtarını güncelleştirme

az aks update Kümenizdeki SSH ortak anahtarını (önizleme) güncelleştirmek için komutunu kullanın. Bu işlem anahtarı tüm düğüm havuzlarında güncelleştirir. Bağımsız değişkenini --ssh-key-value kullanarak bir anahtar veya anahtar dosyası belirtebilirsiniz.

Not

AKS kümeleri ile Azure sanal makine ölçek kümelerinde SSH anahtarlarının güncelleştirilmesi desteklenir.

Bu komutun örnekleri aşağıda verilmiştir:

  • Yeni bir SSH ortak anahtar değeri belirtmek için bağımsız değişkenini --ssh-key-value ekleyin:

    az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
    
  • Bir SSH ortak anahtar dosyası belirtmek için bunu bağımsız değişkeniyle --ssh-key-value belirtin:

    az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
    

Önemli

SSH anahtarını güncelleştirdikten sonra AKS düğüm havuzunuzu otomatik olarak güncelleştirmez. İstediğiniz zaman bir nodepool güncelleştirme işlemi gerçekleştirmeyi seçebilirsiniz. Bir düğüm görüntüsü güncelleştirmesi tamamlandıktan sonra güncelleştirme SSH anahtarları işlemi etkinleşir.

SSH'yi devre dışı bırakma genel bakışı

Güvenliği geliştirmek ve kurumsal güvenlik gereksinimlerinizi veya stratejinizi desteklemek için AKS, hem kümede hem de düğüm havuzu düzeyinde SSH'yi (önizleme) devre dışı bırakmayı destekler. SSH'yi devre dışı bırakma, AKS alt ağı/düğüm ağ arabirimi kartında (NIC) ağ güvenlik grubu kurallarının yapılandırılmasını gerektiren desteklenen tek çözümle karşılaştırıldığında basitleştirilmiş bir yaklaşım sunar.

Küme oluşturma zamanında SSH'yi devre dışı bırakırsanız, küme oluşturulduktan sonra geçerli olur. Ancak mevcut bir kümede veya düğüm havuzunda SSH'yi devre dışı bırakırsanız AKS, SSH'yi otomatik olarak devre dışı bırakmaz. İstediğiniz zaman bir düğüm havuzu yükseltme işlemi gerçekleştirmeyi seçebilirsiniz. Düğüm görüntüsü güncelleştirmesi tamamlandıktan sonra SSH anahtarlarını devre dışı bırakma/etkinleştirme işlemi etkinleşir.

SSH parametresi Açıklama
disabled SSH hizmeti devre dışı bırakıldı.
localuser SSH hizmeti etkinleştirilir ve SSH anahtarları olan kullanıcılar düğüme güvenli bir şekilde erişebilir.

Not

kubectl hata ayıklama düğümü , SSH hizmetine bağlı olmadığından SSH'yi devre dışı bırakdıktan sonra çalışmaya devam eder.

Yeni küme dağıtımında SSH'yi devre dışı bırakma

Varsayılan olarak, AKS kümesi düğümlerindeki SSH hizmeti kümede çalışan tüm kullanıcılara ve podlara açıktır. Poddaki bir kapsayıcının güvenliği aşılırsa saldırı vektörü sınırlamaya yardımcı olmak için herhangi bir ağdan küme düğümlerine doğrudan SSH erişimini engelleyebilirsiniz. az aks create Komutunu kullanarak yeni bir küme oluşturun ve küme oluşturma sırasında tüm düğüm havuzlarında SSH'yi (önizleme) devre dışı bırakmak için bağımsız değişkenini ekleyin--ssh-access disabled.

Önemli

SSH hizmetini devre dışı bırakdıktan sonra, yönetim görevlerini gerçekleştirmek veya sorun gidermek için kümede SSH yapamazsınız.

az aks create -g myResourceGroup -n myManagedCluster --ssh-access disabled

Birkaç dakika sonra komut tamamlanıp kümeyle ilgili JSON biçimli bilgileri döndürür. Aşağıdaki örnek, çıktıya ve SSH'yi devre dışı bırakmayla ilgili sonuçlara benzer:

"securityProfile": {
"sshAccess": "Disabled"
},

Mevcut kümede SSH'yi devre dışı bırakma

az aks update Komutunu kullanarak mevcut bir kümeyi güncelleştirin ve kümedeki --ssh-access disabled tüm düğüm havuzlarında SSH'yi (önizleme) devre dışı bırakmak için bağımsız değişkenini ekleyin.

az aks update -g myResourceGroup -n myManagedCluster --ssh-access disabled

Birkaç dakika sonra komut tamamlanıp kümeyle ilgili JSON biçimli bilgileri döndürür. Aşağıdaki örnek, çıktıya ve SSH'yi devre dışı bırakmayla ilgili sonuçlara benzer:

"securityProfile": {
"sshAccess": "Disabled"
},

Değişikliğin etkili olması için komutunu kullanarak az aks nodepool upgrade tüm düğüm havuzlarını yeniden oluşturmanız gerekir.

az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only

Önemli

Bu işlem sırasında tüm Sanal Makine Ölçek Kümesi örnekleri yükseltilir ve yeni SSH yapılandırmasını kullanacak şekilde yeniden oluşturulur.

Yeni düğüm havuzu için SSH'yi devre dışı bırakma

az aks nodepool add Komutunu kullanarak düğüm havuzu ekleyin ve düğüm havuzu oluşturma sırasında SSH'yi devre dışı bırakmak için bağımsız değişkenini ekleyin--ssh-access disabled.

az aks nodepool add --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled  

Birkaç dakika sonra komut tamamlanıp küme hakkında mynodepool'un başarıyla oluşturulduğunu belirten JSON biçimli bilgileri döndürür. Aşağıdaki örnek, çıktıya ve SSH'yi devre dışı bırakmayla ilgili sonuçlara benzer:

"securityProfile": {
"sshAccess": "Disabled"
},

Mevcut düğüm havuzu için SSH'yi devre dışı bırakma

Mevcut düğüm havuzunda SSH'yi (önizleme) devre dışı bırakmak için [az aks nodepool update][az-aks-nodepool-update] command with the --ssh-access disabled' bağımsız değişkenini kullanın.

az aks nodepool update --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled

Birkaç dakika sonra komut tamamlanıp küme hakkında mynodepool'un başarıyla oluşturulduğunu belirten JSON biçimli bilgileri döndürür. Aşağıdaki örnek, çıktıya ve SSH'yi devre dışı bırakmayla ilgili sonuçlara benzer:

"securityProfile": {
"sshAccess": "Disabled"
},

Değişikliğin etkili olması için komutunu kullanarak az aks nodepool upgrade düğüm havuzunu yeniden oluşturmanız gerekir.

az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only

Mevcut bir kümede SSH'yi yeniden etkinleştirme

az aks update Komutunu kullanarak mevcut kümeyi güncelleştirin ve kümedeki --ssh-access localuser tüm düğüm havuzlarında SSH'yi (önizleme) yeniden etkinleştirmek için bağımsız değişkenini ekleyin.

az aks update -g myResourceGroup -n myManagedCluster --ssh-access localuser

İşlem gerçekleştirilirken aşağıdaki ileti döndürülür:

Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect."

SSH yeniden etkinleştirildikten sonra düğümler otomatik olarak yeniden etkinleştirilmez. İstediğiniz zaman yeniden oluşturma işlemi gerçekleştirmeyi seçebilirsiniz.

Önemli

Bu işlem sırasında tüm Sanal Makine Ölçek Kümesi örnekleri yükseltilir ve yeni SSH ortak anahtarını kullanacak şekilde yeniden oluşturulur.

Belirli bir düğüm havuzu için SSH'yi yeniden etkinleştirme

az aks update Komutunu kullanarak belirli bir düğüm havuzunu güncelleştirin ve kümedeki --ssh-access localuser düğüm havuzunda SSH'yi (önizleme) yeniden etkinleştirmek için bağımsız değişkenini ekleyin. Aşağıdaki örnekte nodepool1 hedef düğüm havuzudur.

az aks nodepool update --cluster-name myManagedCluster --name nodepool1 --resource-group myResourceGroup --ssh-access localuser 

İşlem gerçekleştirildiğinde aşağıdaki ileti döndürülür:

Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect.

Önemli

Bu işlem sırasında tüm Sanal Makine Ölçek Kümesi örnekleri yükseltilir ve yeni SSH ortak anahtarını kullanacak şekilde yeniden oluşturulur.

SSH hizmeti durumu

Bir düğümde node-shell kullanmak ve kullanarak systemctlSSH hizmeti durumunu incelemek için aşağıdaki adımları gerçekleştirin.

  1. komut kubectl node-shell <node> komutunu çalıştırarak standart bash kabuğunu alın.

    kubectl node-shell aks-nodepool1-20785627-vmss000001
    
  2. systemctl SSH hizmetinin durumunu denetlemek için komutunu çalıştırın.

    systemctl status ssh
    

SSH devre dışı bırakılırsa, aşağıdaki örnek çıktı sonuçları gösterir:

ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset: enabled)
     Active: inactive (dead) since Wed 2024-01-03 15:36:57 UTC; 20min ago

SSH etkinse, aşağıdaki örnek çıktı sonuçları gösterir:

ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-01-03 15:40:20 UTC; 19min ago

Sonraki adımlar

Küme düğümlerinize SSH bağlantısıyla ilgili sorunları gidermeye yardımcı olmak için kubelet günlüklerini görüntüleyebilir veya Kubernetes ana düğüm günlüklerini görüntüleyebilirsiniz.