Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : AKS sur Azure Local
Un secret dans Kubernetes est un objet qui contient une petite quantité de données sensibles, telles que des mots de passe et des clés SSH. Dans le serveur d’API Kubernetes, les secrets sont stockés dans etcd, qui est un magasin de valeurs de clé hautement disponible utilisé comme magasin de stockage Kubernetes pour toutes les données du cluster.
Azure Kubernetes Service (AKS) sur Azure Local est fourni avec le chiffrement des secrets etcd à l’aide d’un plug-in KMS (Key Management Service). Tous les clusters Kubernetes dans Azure Local ont un plug-in KMS intégré activé par défaut. Ce plug-in génère la clé de chiffrement de clé (KEK) et la fait pivoter automatiquement toutes les 30 jours.
Cet article explique comment vérifier que les données sont chiffrées. Pour plus d’informations, consultez la documentation Kubernetes officielle pour le plug-in KMS.
Remarque
Le plug-in KMS utilise actuellement le protocole KMS v1.
Avant de commencer
Avant de commencer, vérifiez que les prérequis suivants sont remplis :
- Pour interagir avec les clusters Kubernetes, vous devez installer kubectl et kubelogin.
- Pour afficher ou gérer les secrets, vérifiez que vous disposez des droits nécessaires pour y accéder. Pour plus d’informations, consultez Access et identité.
Accéder à votre cluster Microsoft Entra-enabled
Obtenez les informations d’identification de l’utilisateur pour accéder à votre cluster à l’aide de la commande az aksarc get-credentials . Vous avez besoin de la ressource Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action , qui est incluse dans l’autorisation de rôle utilisateur du cluster Azure Kubernetes Service Arc :
az aksarc get-credentials --resource-group $resource_group --name $aks_cluster_name
Vérifier que le plug-in KMS est activé
Pour vérifier que le plug-in KMS est activé, exécutez la commande suivante et assurez-vous que l'état d'intégrité de kms-providers est OK :
kubectl get --raw='/readyz?verbose'
[+]ping ok
[+]Log ok
[+]etcd ok
[+]kms-providers ok
[+]poststarthook/start-encryption-provider-config-automatic-reload ok
Vérifier que les données sont chiffrées
Pour vérifier que les secrets et les données ont été chiffrés à l’aide d’un plug-in KMS, consultez la documentation Kubernetes. Vous pouvez utiliser les commandes suivantes pour vérifier que les données sont chiffrées :
kubectl exec --stdin --tty <etcd pod name> -n kube-system --etcdctl --cacert /etc/kubernetes/pki/etcd/ca.crt --key /etc/kubernetes/pki/etcd/server.key --cert /etc/kubernetes/pki/etcd/server.crt get /registry/secrets/default/db-user-pass -w fields
kubectl exec
: il s’agit de la commande kubectl utilisée pour exécuter une commande à l’intérieur d’un pod en cours d’exécution. Il vous permet d’exécuter des commandes dans le conteneur d’un pod.--stdin
: cet indicateur vous permet d’envoyer une entrée (stdin) à la commande que vous exécutez à l’intérieur du pod.--tty
: cet indicateur alloue un TTY (terminal) pour la commande, ce qui le fait de se comporter comme si vous interagissez avec une session de terminal.<etcd pod name>
: pour rechercher le nom du pod etcd, exécutez la commande suivante :kubectl get pods -n kube-system | findstr etcd-moc
-n kube-system
: spécifie l’espace de noms où se trouve le pod. kube-system est l’espace de noms par défaut utilisé par Kubernetes pour les composants système, tels que etcd et d’autres services de plan de contrôle.--etcdctl
: lit le secret à partir d’etcd. Des champs supplémentaires sont utilisés pour l’authentification avant d’accéder à etcd.
Les champs suivants sont retournés dans la sortie de commande :
"ClusterID" : <cluster id>
"MemberID" : <member id>
"Revision" : <revision number>
"RaftTerm" : 2
"Key" : <path to the key>
"CreateRevision" : <revision number at the time the key was created>
"ModRevision" : <revision number at the time the key was modified>
"Version" : <version of the key-value pair in etcd>
"Value" : "k8s:enc:kms:v1:kms-plugin: <encrypted secret value>"
"Lease" : <lease associated with the secret>
"More" : <indicates if there are more results>
"Count" : <number of key-value pairs returned>
Après avoir exécuté la commande, examinez le Value
champ dans la sortie dans la fenêtre de terminal. Cette sortie indique la valeur stockée dans le magasin de secrets etcd pour cette clé, qui est la valeur chiffrée du secret. La valeur est chiffrée à l’aide d’un plug-in KMS. Le k8s:enc:kms:v1:
préfixe indique que Kubernetes utilise le plug-in KMS v1 pour stocker le secret dans un format chiffré.
Remarque
Si vous utilisez la kubectl describe secrets
commande pour récupérer des secrets, elle les retourne au format codé en base64, mais non chiffrée. La kubectl describe
commande récupère les détails d’une ressource Kubernetes via le serveur d’API, qui gère automatiquement le chiffrement et le déchiffrement. Pour les données sensibles telles que les secrets, même s’ils sont montés sur un pod, le serveur d’API garantit qu’ils sont déchiffrés lors de l’accès. Par conséquent, l’exécution de la kubectl describe
commande n’affiche pas les secrets dans leur formulaire chiffré, mais plutôt dans leur formulaire déchiffré s’ils sont utilisés par une ressource.
Résolution des problèmes
Si vous rencontrez des erreurs avec le plug-in KMS, suivez la procédure de la page Résolution des problèmes pour résoudre le problème.
Étapes suivantes
- Aidez-vous à protéger votre cluster de différentes façons en suivant les instructions du livre de sécurité pour AKS activé par Azure Arc.
- Créer des clusters Kubernetes
- Déployer une application Linux sur un cluster Kubernetes