Rotation des certificats dans Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) utilise des certificats pour l’authentification avec un grand nombre de ses composants. Les clusters RBAC créés après mars 2022 sont activés avec la rotation automatique des certificats. Vous pouvez être amené à procéder à une rotation périodique de ces certificats pour des raisons de sécurité ou de stratégie. Par exemple, une stratégie peut demander une rotation de l’ensemble de vos certificats tous les 90 jours.

Remarque

La rotation automatique des certificats est uniquement activée par défaut pour les clusters AKS compatibles RBAC.

Cet article vous montre comment fonctionne la rotation des certificats dans votre cluster AKS.

Avant de commencer

Cet article nécessite la version 2.0.77 ou ultérieure d’Azure CLI. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Certificats AKS, autorités de certification et comptes de service

AKS génère et utilise les certificats, autorités de certification et comptes de service suivants :

  • Le serveur d’API AKS crée une autorité de certification appelée « Autorité de certification de cluster ».
  • Le serveur d’API dispose d’une autorité de certification de cluster, qui signe les certificats pour la communication unidirectionnelle, du serveur d’API vers les kubelets.
  • Chaque kubelet crée une demande de signature de certificat (CSR), que l’autorité de certification de cluster signe, pour la communication du kubelet vers le serveur d’API.
  • L’agrégation d’API utilise l’autorité de certification de cluster pour émettre des certificats destinés à la communication avec d’autres API. L’agrégation d’API peut également disposer de sa propre autorité de certification pour émettre ces certificats, mais elle utilise actuellement l’autorité de certification de cluster.
  • Chaque nœud utilise un jeton de compte de service que l’autorité de certification de cluster signe.
  • Le client kubectl dispose d’un certificat pour communiquer avec le cluster AKS.

Microsoft gère tous les certificats mentionnés dans cette section, à l’exception du certificat de cluster.

Remarque

  • Les clusters AKS créés avant le mois de mai 2019 possèdent des certificats qui expirent au bout de deux ans.
  • Les clusters AKS créés après le mois de mai 2019 possèdent des certificats qui expirent au bout de 30 ans.

Vous pouvez vérifier quand votre cluster a été créé à l’aide de la commande kubectl get nodes, qui vous indique l’âge de vos pools de nœuds.

Vérifier les dates d’expiration du certificat

Vérifier la date d’expiration du certificat du cluster

  • Vérifiez la date d’expiration du certificat de cluster à l’aide de la commande kubectl config view.

    kubectl config view --raw -o jsonpath="{.clusters[?(@.name == '')].cluster.certificate-authority-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
    

Vérifier la date d’expiration du certificat du serveur d’API

  • Vérifiez la date d’expiration du certificat de serveur d’API à l’aide de la commande curl suivante.

    curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
    

Vérifier la date d’expiration du certificat de nœud de l’agent VMAS

  • Vérifiez la date d’expiration du certificat de nœud de l’agent VMAS à l’aide de la commande az vm run-command invoke.

    az vm run-command invoke -g MC_rg_myAKSCluster_region -n vm-name --command-id RunShellScript --query 'value[0].message' -otsv --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
    

Vérifier la date d’expiration du certificat de nœud de l’agent de groupe de machines virtuelles identiques

  • Vérifiez la date d’expiration du certificat de nœud de l’agent Virtual Machine Scale Set à l’aide de la commande az vm run-command invoke.

    az vmss run-command invoke --resource-group "MC_rg_myAKSCluster_region" --name "vmss-name" --command-id RunShellScript --instance-id 1 --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate" --query "value[0].message"
    

Rotation automatique des certificats

Pour qu’AKS assure automatiquement la rotation des certificats autres que les certificats d’autorité de certification, le cluster doit bénéficier du démarrage TLS activé par défaut dans toutes les régions Azure.

Remarque

  • Si vous avez un cluster existant, vous devez mettre à niveau ce cluster pour activer la rotation automatique des certificats.
  • Ne désactivez pas le démarrage pour que la rotation automatique reste activée.
  • Si le cluster est dans un état arrêté pendant la rotation automatique des certificats, seuls les certificats du plan de contrôle sont affectés. Dans ce cas, vous devez recréer le pool de nœuds après la rotation des certificats pour lancer la rotation des certificats du pool de nœuds.

Pour tous les clusters AKS créés ou mis à niveau après mars 2022, Azure Kubernetes Service effectue une rotation automatique des certificats non CA sur les nœuds du plan de contrôle et de l’agent dans les 80 % du délai valide du certificat client, avant qu’ils n’expirent sans temps d’arrêt pour le cluster.

Comment vérifier si le pool de nœuds de l’agent actuel est activé pour le démarrage TLS ?

  1. Vérifiez si le démarrage TLS est activé sur votre cluster en accédant à l’un des chemins d’accès suivants :

    • Sur un nœud Linux : /var/lib/kubelet/bootstrap-kubeconfig ou /host/var/lib/kubelet/bootstrap-kubeconfig
    • Sur un nœud Windows : C:\k\bootstrap-config

    Pour plus d’informations, consultez Se connecter à des nœuds de cluster Azure Kubernetes Service pour la maintenance ou la résolution des problèmes.

    Remarque

    Le chemin du fichier peut changer à mesure que les versions de Kubernetes évoluent.

  2. Une fois qu’une région est configurée, créez un cluster ou mettez à niveau un cluster existant pour configurer ce cluster pour la rotation automatique des certificats de cluster. Vous devez mettre à niveau le plan de contrôle et le pool de nœuds pour activer cette fonctionnalité.

Procéder à la rotation manuelle de vos certificats de cluster

Avertissement

La rotation de vos certificats à l’aide de az aks rotate-certs recrée tous vos nœuds, le groupe identique de machines virtuelles et les disques, et peut entraîner jusqu’à 30 minutes d’interruption pour votre cluster AKS.

  1. Connectez-vous à votre cluster à l’aide de la commande az aks get-credentials.

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
    
  2. Effectuez une rotation de tous les certificats, autorités de certification et comptes de service sur votre cluster à l’aide de la commande az aks rotate-certs.

    az aks rotate-certs -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
    

    Important

    L’exécution de az aks rotate-certs peut prendre jusqu’à 30 minutes. Si la commande échoue avant de se terminer, utilisez az aks show pour vérifier que l’état du cluster est Certificate Rotating (Rotation de certificat en cours). Si le cluster est dans l’état d’échec, réexécutez az aks rotate-certs pour procéder de nouveau à la rotation de vos certificats.

  3. Vérifiez que les anciens certificats ne sont plus valides à l’aide d’une commande kubectl, telle que kubectl get nodes.

    kubectl get nodes
    

    Si vous n’avez pas mis à jour les certificats utilisés par kubectl, vous voyez une erreur similaire à l’exemple suivant :

    Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "ca")
    
  4. Mettez à jour le certificat utilisé kubectl à l’aide de la commande az aks get-credentials avec l’indicateur --overwrite-existing.

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME --overwrite-existing
    
  5. Vérifiez que les certificats ont été mis à jour à l’aide de la commande kubectl get.

    kubectl get nodes
    

    Remarque

    Si vous avez des services en cours d'exécution sur AKS, vous devrez peut-être mettre à jour leurs certificats.

Étapes suivantes

Cet article vous a montré comment procéder automatiquement à la rotation des certificats, autorités de certification et comptes de service de votre cluster. Pour plus d’informations, consultez Meilleures pratiques relatives aux mises à niveau et à la sécurité du cluster dans Azure Kubernetes Service (AKS).