Gérer SSH pour un accès sécurisé aux nœuds Azure Kubernetes Service (AKS)
Cet article explique la configuration des clés SSH (préversion) sur vos clusters ou pools de nœuds AKS, pendant le déploiement initial ou ultérieurement.
AKS prend en charge les options de configuration suivantes pour gérer les clés SSH sur les nœuds de cluster :
- Créer un cluster avec des clés SSH
- Mettre à jour les clés SSH sur un cluster AKS existant
- Désactiver et activer le service SSH
Important
Les fonctionnalités d’évaluation AKS sont disponibles en libre-service et font l’objet d’un abonnement. Les préversions sont fournies « en l’état » et « en fonction des disponibilités », et sont exclues des contrats de niveau de service et de la garantie limitée. Les préversions AKS sont, dans la mesure du possible, partiellement couvertes par le service clientèle. Telles quelles, ces fonctionnalités ne sont pas destinées à une utilisation en production. Pour plus d’informations, consultez les articles de support suivants :
Avant de commencer
- Vous avez besoin de
aks-preview
version 0.5.116 ou ultérieure pour utiliser Update. - Vous avez besoin de
aks-preview
version 1.0.0b6 ou ultérieure pour utiliser Disable. - La fonctionnalité Créer et Mettre à jour de SSH prend en charge les pools de nœuds Linux, Windows et Azure Linux sur des clusters existants.
- La fonctionnalité Désactiver de SSH n’est pas prise en charge dans cette préversion sur les pools de nœuds exécutant le système d’exploitation Windows Server.
Installer l’extension Azure CLI aks-preview
Installez l’extension aks-preview à l’aide de la commande
az extension add
.az extension add --name aks-preview
Mettez à jour vers la dernière version de l’extension à l’aide de la commande
az extension update
.az extension update --name aks-preview
Inscrire l’indicateur de fonctionnalité DisableSSHPreview
Pour utiliser la fonctionnalité Désactiver de SSH, procédez comme suit pour l’inscrire et l’activer dans votre abonnement.
Inscrivez l’indicateur de fonctionnalité
DisableSSHPreview
à l’aide de la commandeaz feature register
.az feature register --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
Quelques minutes sont nécessaires pour que l’état s’affiche Registered (Inscrit).
Vérifiez l’état de l’inscription en utilisant la commande
az feature show
.az feature show --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
Quand l’état reflète Inscrit, actualisez l’inscription du fournisseur de ressources Microsoft.ContainerService à l’aide de la commande
az provider register
.az provider register --namespace Microsoft.ContainerService
Créez un cluster AKS avec les clés SSH
Utilisez la commande az aks create pour déployer un cluster AKS avec une clé publique SSH. Vous pouvez spécifier la clé ou un fichier de clé à l’aide de l’argument --ssh-key-value
.
Paramètre SSH | Description | Valeur par défaut |
---|---|---|
--generate-ssh-key |
Si vous ne possédez pas de clés SSH, spécifiez --generate-ssh-key . Azure CLI génère automatiquement un ensemble de clés SSH et les enregistre dans le répertoire par défaut ~/.ssh/ . |
|
--ssh-key-value | Chemin d’accès à la clé publique ou contenu de la clé à installer sur des machines virtuelles de nœud pour l’accès SSH. Par exemple : ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm . |
~/.ssh/id_rsa.pub |
--no-ssh-key |
Si vous n’avez pas besoin de clés SSH, spécifiez cet argument. AKS génère toutefois automatiquement un ensemble de clés SSH, car la dépendance de ressource de machine virtuelle Azure ne prend pas en charge un fichier de clé SSH vide. Par conséquent, les clés ne sont pas retournées et ne peuvent pas être utilisées pour SSH dans les machines virtuelles du nœud. La clé privée est ignorée et non enregistrée. |
Remarque
Si aucun paramètre n’est spécifié, Azure CLI référence par défaut les clés SSH stockées dans le fichier ~/.ssh/id_rsa.pub
. Si les clés sont introuvables, la commande retourne le message An RSA key file or key value must be supplied to SSH Key Value
.
Voici quelques exemples de cette commande :
Pour créer un cluster et utiliser les clés SSH générées par défaut :
az aks create --name myAKSCluster --resource-group MyResourceGroup --generate-ssh-key
Pour spécifier un fichier de clé publique SSH, incluez l’argument
--ssh-key-value
:az aks create --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
Mettre à jour la clé publique SSH sur un cluster AKS existant
Utilisez la commande az aks update
pour mettre à jour la clé publique SSH (préversion) sur votre cluster. Cette opération met à jour la clé sur tous les pools de nœuds. Vous pouvez spécifier une clé ou un fichier de clé en utilisant l’argument --ssh-key-value
.
Remarque
La mise à jour des clés SSH est prise en charge sur les groupes de machines virtuelles identiques Azure avec des clusters AKS.
Voici quelques exemples de cette commande :
Pour spécifier une nouvelle valeur de clé publique SSH, incluez l’argument
--ssh-key-value
:az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
Pour spécifier un fichier de clé publique SSH, spécifiez-le avec l’argument
--ssh-key-value
:az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
Important
Après avoir mis à jour la clé SSH, AKS ne met pas automatiquement à jour votre pool de nœuds. À tout moment, vous pouvez choisir d’effectuer une opération de mise à jour du pool de nœuds. L’opération de mise à jour des clés SSH prend effet après la fin de la mise à jour de l’image du nœud.
Vue d’ensemble de la désactivation de SSH
Pour améliorer la sécurité et prendre en charge vos exigences ou stratégie de sécurité d’entreprise, AKS prend en charge la désactivation de SSH (préversion) sur le cluster et au niveau du pool de nœuds. Désactiver SSH introduit une approche simplifiée par rapport à la seule solution prise en charge, ce qui nécessite la configuration des règles de groupe de sécurité réseau sur la carte d’interface réseau du sous-réseau/nœud AKS. Désactiver SSH prend uniquement en charge les pools de nœuds des groupes identiques de machines virtuelles.
Lorsque vous désactivez SSH au moment de la création du cluster, il prend effet après la création du cluster. Toutefois, lorsque vous désactivez SSH sur un cluster ou un pool de nœuds existant, AKS ne désactive pas automatiquement SSH. À tout moment, vous pouvez choisir d’effectuer une opération de mise à niveau de nodepool. L’opération désactiver/activer les clés SSH prend effet après la fin de la mise à jour de l’image du nœud.
Remarque
Lorsque vous désactivez SSH au niveau du cluster, il s’applique à tous les pools de nœuds existants. Tous les pools de nœuds créés après cette opération auront SSH activé par défaut, et vous devez réexécuter ces commandes pour la désactiver.
Paramètre SSH | Description |
---|---|
disabled |
Le service SSH est désactivé. |
localuser |
Le service SSH est activé et les utilisateurs disposant de clés SSH peuvent accéder en toute sécurité au nœud. |
Remarque
Le nœud de débogage kubectl continue de fonctionner après avoir désactivé SSH, car il ne dépend pas du service SSH.
Désactiver SSH sur un nouveau déploiement de cluster
Par défaut, le service SSH sur les nœuds de cluster AKS est ouvert à tous les utilisateurs et pods s’exécutant sur le cluster. Vous pouvez empêcher l’accès SSH direct à partir de n’importe quel réseau vers des nœuds de cluster pour limiter le vecteur d’attaque si un conteneur d’un pod devient compromis.
Utilisez la commande az aks create
pour créer un cluster et ajoutez l’argument --ssh-access disabled
pour désactiver SSH (préversion) sur tous les pools de nœuds lors de la création du cluster.
Important
Après avoir désactivé le service SSH, vous ne pouvez pas connecter SSH dans le cluster pour effectuer des tâches d’administration ou résoudre les problèmes.
Remarque
Sur un cluster nouvellement créé, désactiver ssh configure uniquement le 1er pool de nœuds système. Tous les autres pools de nœuds doivent être configurés au niveau du pool de nœuds.
az aks create --resource-group myResourceGroup --name myManagedCluster --ssh-access disabled
Au bout de quelques minutes, la commande se termine et retourne des informations au format JSON sur le cluster. L’exemple suivant ressemble à la sortie et aux résultats liés à la désactivation de SSH :
"securityProfile": {
"sshAccess": "Disabled"
},
Désactiver SSH pour un nouveau pool de nœuds
Utilisez la commande az aks nodepool add
pour ajouter un pool de nœuds et ajoutez l’argument --ssh-access disabled
pour désactiver SSH lors de la création du pool de nœuds.
az aks nodepool add --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled
Après quelques minutes, la commande se termine et retourne des informations au format JSON sur le cluster indiquant que mynodepool a été créé avec succès. L’exemple suivant ressemble à la sortie et aux résultats liés à la désactivation de SSH :
"securityProfile": {
"sshAccess": "Disabled"
},
Désactiver SSH pour un pool de nœuds existant
Utilisez l’argument [az aks nodepool update][az-aks-nodepool-update] command with the
--ssh-access disabled' pour désactiver SSH (préversion) sur un pool de nœuds existant.
az aks nodepool update --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled
Après quelques minutes, la commande se termine et retourne des informations au format JSON sur le cluster indiquant que mynodepool a été créé avec succès. L’exemple suivant ressemble à la sortie et aux résultats liés à la désactivation de SSH :
"securityProfile": {
"sshAccess": "Disabled"
},
Pour que la modification prenne effet, vous devez réinitialiser le pool de nœuds en utilisant la commande az aks nodepool upgrade
.
az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only
Important
Pour désactiver SSH sur un cluster existant, vous devez désactiver SSH pour chaque pool de nœuds sur ce cluster.
Réactiver SSH sur un cluster existant
Utilisez la commande az aks update
pour mettre à jour un cluster existant et ajoutez l’argument --ssh-access localuser
permettant de réactiver SSH (préversion) sur tous les pools de nœuds du cluster.
az aks update --resource-group myResourceGroup --name myManagedCluster --ssh-access localuser
Le message suivant est retourné pendant que le processus est effectué :
Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect."
Après avoir réactivé SSH, les nœuds ne sont pas réinitialisés automatiquement. À tout moment, vous pouvez choisir d’effectuer une opération de réinitialisation.
Important
Au cours de cette opération, toutes les instances de groupe de machines virtuelles identiques sont mises à niveau et ré-imagées de façon à utiliser la nouvelle clé publique SSH.
Réactiver SSH pour un pool de nœuds spécifique
Utilisez la commande az aks update
pour mettre à jour un pool de nœuds spécifique et ajoutez l’argument --ssh-access localuser
pour réactiver SSH (préversion) sur ce pool de nœuds dans le cluster. Dans l’exemple suivant, nodepool1 est le pool de nœuds cible.
az aks nodepool update --cluster-name myManagedCluster --name nodepool1 --resource-group myResourceGroup --ssh-access localuser
Le message suivant est retourné lorsque le processus est effectué :
Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect.
Important
Au cours de cette opération, toutes les instances de groupe de machines virtuelles identiques sont mises à niveau et ré-imagées de façon à utiliser la nouvelle clé publique SSH.
État du service SSH
Procédez comme suit pour utiliser l’interpréteur de commandes de nœud sur un nœud et inspecter l’état du service SSH en utilisant systemctl
.
Obtenez un interpréteur de commandes bash standard en exécutant la commande
kubectl node-shell <node>
.kubectl node-shell aks-nodepool1-20785627-vmss000001
Exécutez la commande
systemctl
pour vérifier l’état du service SSH.systemctl status ssh
Si SSH est désactivé, l’exemple de sortie suivant affiche les résultats :
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
Si SSH est activé, l’exemple de sortie suivant affiche les résultats :
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
Étapes suivantes
Pour résoudre les problèmes de connectivité SSH sur vos nœuds de clusters, vous pouvez consulter les journaux kubelet ou consulter les journaux du nœud maître Kubernetes.
Azure Kubernetes Service