Sdílet prostřednictvím


Správa SSH pro zabezpečený přístup k uzlům Azure Kubernetes Service (AKS)

Tento článek popisuje, jak nakonfigurovat klíče SSH (Preview) v clusterech nebo fondech uzlů AKS během počátečního nasazení nebo později.

AKS podporuje následující možnosti konfigurace pro správu klíčů SSH na uzlech clusteru:

  • Vytvoření clusteru s klíči SSH
  • Aktualizace klíčů SSH v existujícím clusteru AKS
  • Zakázání a povolení služby SSH

Důležité

Funkce AKS ve verzi Preview jsou k dispozici na samoobslužné bázi. Verze Preview jsou poskytovány "tak, jak jsou" a "dostupné", a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview AKS jsou částečně pokryty zákaznickou podporou na základě maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

Než začnete

  • K používání aktualizace potřebujete aks-preview verzi 0.5.116 nebo novější.
  • K použití disable potřebujete aks-preview verzi 1.0.0b6 nebo novější.
  • Funkce Vytvoření a aktualizace SSH podporuje fondy uzlů Linuxu, Windows a Azure Linuxu v existujících clusterech.
  • Funkce Zakázat SSH není v této verzi Preview podporovaná ve fondech uzlů s operačním systémem Windows Server.

aks-preview Instalace rozšíření Azure CLI

  1. Nainstalujte rozšíření aks-preview pomocí az extension add příkazu.

    az extension add --name aks-preview
    
  2. Pomocí příkazu aktualizujte na nejnovější verzi rozšíření az extension update .

    az extension update --name aks-preview
    

Registrace příznaku DisableSSHPreview funkce

Pokud chcete použít funkci Zakázat SSH, proveďte následující kroky a zaregistrujte ho ve svém předplatném.

  1. DisableSSHPreview Pomocí příkazu zaregistrujte příznak az feature register funkce.

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

    Zobrazení stavu Zaregistrované trvá několik minut.

  2. Pomocí příkazu ověřte stav az feature show registrace.

    az feature show --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
    
  3. Jakmile se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí az provider register příkazu.

    az provider register --namespace Microsoft.ContainerService
    

Vytvoření clusteru AKS s klíči SSH

Pomocí příkazu az aks create nasaďte cluster AKS s veřejným klíčem SSH. Pomocí argumentu --ssh-key-value můžete zadat klíč nebo soubor klíče.

Parametr SSH Popis Default value
--generate-ssh-key Pokud nemáte vlastní klíče SSH, zadejte --generate-ssh-key. Azure CLI automaticky vygeneruje sadu klíčů SSH a uloží je do výchozího adresáře ~/.ssh/.
--ssh-key-value Cesta k veřejnému klíči nebo obsah klíče, které se mají nainstalovat na virtuální počítače uzlů pro přístup přes SSH. Například ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm. ~/.ssh/id_rsa.pub
--no-ssh-key Pokud nepotřebujete klíče SSH, zadejte tento argument. AKS ale automaticky vygeneruje sadu klíčů SSH, protože závislost prostředků virtuálního počítače Azure nepodporuje prázdný soubor klíčů SSH. V důsledku toho se klíče nevrátí a nejde je použít k připojení SSH k virtuálním počítačům uzlů. Privátní klíč se zahodí a neuloží.

Poznámka:

Pokud nejsou zadány žádné parametry, Azure CLI ve výchozím nastavení odkazuje na klíče SSH uložené v ~/.ssh/id_rsa.pub souboru. Pokud klíče nenajdete, příkaz vrátí zprávu An RSA key file or key value must be supplied to SSH Key Value.

Tady jsou příklady tohoto příkazu:

  • Vytvoření clusteru a použití výchozích vygenerovaných klíčů SSH:

    az aks create --name myAKSCluster --resource-group MyResourceGroup --generate-ssh-key
    
  • Pokud chcete zadat soubor veřejného klíče SSH, zahrňte --ssh-key-value argument:

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

Aktualizace veřejného klíče SSH v existujícím clusteru AKS

az aks update Pomocí příkazu aktualizujte veřejný klíč SSH (Preview) ve vašem clusteru. Tato operace aktualizuje klíč ve všech fondech uzlů. Pomocí argumentu --ssh-key-value můžete zadat klíč nebo soubor klíče.

Poznámka:

Aktualizace klíčů SSH se podporuje ve škálovacích sadách virtuálních počítačů Azure s clustery AKS.

Tady jsou příklady tohoto příkazu:

  • Pokud chcete zadat novou hodnotu veřejného klíče SSH, zahrňte argument --ssh-key-value :

    az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
    
  • Pokud chcete zadat soubor veřejného klíče SSH, zadejte ho pomocí argumentu --ssh-key-value :

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

Důležité

Po aktualizaci klíče SSH se AKS automaticky neaktualizuje fond uzlů. Kdykoli se můžete rozhodnout provést operaci aktualizace fondu uzlů. Operace aktualizace klíčů SSH se projeví po dokončení aktualizace image uzlu.

Zakázání přehledu SSH

Pokud chcete zlepšit zabezpečení a podporovat požadavky nebo strategii podnikového zabezpečení, AKS podporuje zakázání SSH (Preview) v clusteru i na úrovni fondu uzlů. Zákaz SSH představuje zjednodušený přístup v porovnání s jediným podporovaným řešením, které vyžaduje konfiguraci pravidel skupin zabezpečení sítě na síťové kartě podsítě nebo uzlu AKS. Zakázání SSH podporuje pouze fondy uzlů škálovacích sad virtuálních počítačů.

Když při vytváření clusteru zakážete SSH, projeví se po vytvoření clusteru. Pokud ale zakážete SSH v existujícím clusteru nebo fondu uzlů, AKS automaticky nezakáže SSH. Kdykoli se můžete rozhodnout provést operaci upgradu fondu uzlů. Operace zakázání nebo povolení klíčů SSH se projeví po dokončení aktualizace image uzlu.

Poznámka:

Když na úrovni clusteru zakážete SSH, platí to pro všechny existující fondy uzlů. Všechny fondy uzlů vytvořené po této operaci budou mít ve výchozím nastavení povolený SSH a abyste je mohli zakázat, budete muset tyto příkazy spustit znovu.

Parametr SSH Popis
disabled Služba SSH je zakázaná.
localuser Služba SSH je povolená a uživatelé s klíči SSH mají zabezpečený přístup k uzlu.

Poznámka:

Ladicí uzel kubectl bude fungovat i po zakázání protokolu SSH, protože nezávisí na službě SSH.

Zakázání SSH v novém nasazení clusteru

Ve výchozím nastavení je služba SSH na uzlech clusteru AKS otevřená všem uživatelům a podům spuštěným v clusteru. Pokud dojde k ohrožení kontejneru v podu, můžete zabránit přímému přístupu přes SSH z libovolné sítě k uzlům clusteru, abyste omezili vektor útoku. az aks create Pomocí příkazu vytvořte nový cluster a zahrňte --ssh-access disabled argument, který zakáže SSH (Preview) ve všech fondech uzlů během vytváření clusteru.

Důležité

Po zakázání služby SSH nemůžete s protokolem SSH do clusteru provádět úlohy správy ani řešit potíže.

Poznámka:

V nově vytvořeném clusteru zakážete ssh pouze fond 1. systémových uzlů. Všechny ostatní fondy uzlů je potřeba nakonfigurovat na úrovni fondu uzlů.

az aks create --resource-group myResourceGroup --name myManagedCluster --ssh-access disabled

Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON. Následující příklad se podobá výstupu a výsledkům souvisejícím se zákazem SSH:

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

Zakázání SSH pro nový fond uzlů

az aks nodepool add Pomocí příkazu přidejte fond uzlů a zahrňte --ssh-access disabled argument, který zakáže SSH během vytváření fondu uzlů.

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

Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON, který indikuje úspěšné vytvoření fondu uzlů . Následující příklad se podobá výstupu a výsledkům souvisejícím se zákazem SSH:

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

Zakázání SSH pro existující fond uzlů

Pomocí argumentu [az aks nodepool update][az-aks-nodepool-update] command with the --ssh-access disabled' zakažte SSH (Preview) ve stávajícím fondu uzlů.

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

Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON, který indikuje úspěšné vytvoření fondu uzlů . Následující příklad se podobá výstupu a výsledkům souvisejícím se zákazem SSH:

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

Aby se změna projevila, musíte fond uzlů znovu vytvořit pomocí az aks nodepool upgrade příkazu.

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

Důležité

Pokud chcete zakázat SSH v existujícím clusteru, musíte zakázat SSH pro každý fond uzlů v tomto clusteru.

Opětovné povolení SSH v existujícím clusteru

az aks update Pomocí příkazu aktualizujte existující cluster a zahrňte --ssh-access localuser argument pro opětovné povolení SSH (Preview) ve všech fondech uzlů v clusteru.

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

Při provedení procesu se vrátí následující zpráva:

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

Po opětovném povolení SSH se uzly automaticky nezomagí nezomagí. Kdykoli se můžete rozhodnout provést operaci opětovného vytvoření.

Důležité

Během této operace se upgradují všechny instance škálovací sady virtuálních počítačů a znovu se zmagí používají nový veřejný klíč SSH.

Opětovné povolení SSH pro konkrétní fond uzlů

az aks update Pomocí příkazu aktualizujte konkrétní fond uzlů a zahrňte --ssh-access localuser argument pro opětovné povolení SSH (Preview) ve fondu uzlů v clusteru. V následujícím příkladu je fond uzlů 1 cílovým fondem uzlů.

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

Při provedení procesu se vrátí následující zpráva:

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

Důležité

Během této operace se upgradují všechny instance škálovací sady virtuálních počítačů a znovu se zmagí používají nový veřejný klíč SSH.

Stav služby SSH

Pomocí následujícího postupu použijte node-shell na jeden uzel a zkontrolujte stav služby SSH pomocí systemctlpříkazu .

  1. Spuštěním příkazu kubectl node-shell <node> získejte standardní prostředí Bash.

    kubectl node-shell aks-nodepool1-20785627-vmss000001
    
  2. Spuštěním systemctl příkazu zkontrolujte stav služby SSH.

    systemctl status ssh
    

Pokud je protokol SSH zakázaný, zobrazí se výsledky v následujícím ukázkovém výstupu:

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

Pokud je povolený SSH, zobrazí se výsledky v následujícím ukázkovém výstupu:

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

Další kroky

Pokud chcete pomoct s řešením potíží s připojením SSH k uzlům clusterů, můžete zobrazit protokoly kubeletu nebo zobrazit protokoly hlavního uzlu Kubernetes.