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
Nainstalujte rozšíření aks-preview pomocí
az extension add
příkazu.az extension add --name aks-preview
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.
DisableSSHPreview
Pomocí příkazu zaregistrujte příznakaz feature register
funkce.az feature register --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
Zobrazení stavu Zaregistrované trvá několik minut.
Pomocí příkazu ověřte stav
az feature show
registrace.az feature show --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
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í systemctl
příkazu .
Spuštěním příkazu
kubectl node-shell <node>
získejte standardní prostředí Bash.kubectl node-shell aks-nodepool1-20785627-vmss000001
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.
Azure Kubernetes Service