5.11. Activation des profils de sécurité TLS pour le kubelet
Vous pouvez utiliser un profil de sécurité TLS (Transport Layer Security) pour définir les codes TLS requis par le kubelet lorsqu'il agit en tant que serveur HTTP. Le kubelet utilise son serveur HTTP/GRPC pour communiquer avec le serveur API Kubernetes, qui envoie des commandes aux pods, collecte des journaux et exécute des commandes exec sur les pods par l'intermédiaire du kubelet.
Un profil de sécurité TLS définit les algorithmes de chiffrement TLS que le serveur API Kubernetes doit utiliser lors de la connexion avec le kubelet pour protéger la communication entre le kubelet et le serveur API Kubernetes.
Par défaut, lorsque le kubelet agit en tant que client avec le serveur API de Kubernetes, il négocie automatiquement les paramètres TLS avec le serveur API.
5.11.1. Comprendre les profils de sécurité TLS
Vous pouvez utiliser un profil de sécurité TLS (Transport Layer Security) pour définir les algorithmes TLS requis par les différents composants d'OpenShift Container Platform. Les profils de sécurité TLS d'OpenShift Container Platform sont basés sur les configurations recommandées par Mozilla.
Vous pouvez spécifier l'un des profils de sécurité TLS suivants pour chaque composant :
Profile | Description |
---|---|
| Ce profil est destiné à être utilisé avec des clients ou des bibliothèques anciens. Il est basé sur l'ancienne configuration recommandée pour la rétrocompatibilité.
Le profil Note Pour le contrôleur d'entrée, la version minimale de TLS passe de 1.0 à 1.1. |
| Ce profil est la configuration recommandée pour la majorité des clients. Il s'agit du profil de sécurité TLS par défaut pour le contrôleur d'entrée, le kubelet et le plan de contrôle. Le profil est basé sur la configuration recommandée pour la compatibilité intermédiaire.
Le profil |
| Ce profil est destiné à être utilisé avec des clients modernes qui n'ont pas besoin de rétrocompatibilité. Ce profil est basé sur la configuration recommandée pour la compatibilité moderne.
Le profil |
| Ce profil permet de définir la version de TLS et les algorithmes de chiffrement à utiliser. Avertissement
Soyez prudent lorsque vous utilisez un profil |
Lorsque l'on utilise l'un des types de profil prédéfinis, la configuration effective du profil est susceptible d'être modifiée entre les versions. Par exemple, si l'on spécifie l'utilisation du profil intermédiaire déployé dans la version X.Y.Z, une mise à niveau vers la version X.Y.Z 1 peut entraîner l'application d'une nouvelle configuration de profil, ce qui se traduit par un déploiement.
5.11.2. Configuration du profil de sécurité TLS pour le kubelet
Pour configurer un profil de sécurité TLS pour le kubelet lorsqu'il agit en tant que serveur HTTP, créez une ressource personnalisée (CR) KubeletConfig
pour spécifier un profil de sécurité TLS prédéfini ou personnalisé pour des nœuds spécifiques. Si aucun profil de sécurité TLS n'est configuré, le profil de sécurité TLS par défaut est Intermediate
.
Exemple de CR KubeletConfig
qui configure le profil de sécurité TLS Old
sur les nœuds de travail
apiVersion: config.openshift.io/v1 kind: KubeletConfig ... spec: tlsSecurityProfile: old: {} type: Old machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: ""
Vous pouvez voir les codes et la version TLS minimale du profil de sécurité TLS configuré dans le fichier kubelet.conf
sur un nœud configuré.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
.
Procédure
Créez un CR
KubeletConfig
pour configurer le profil de sécurité TLS :Exemple de CR
KubeletConfig
pour un profilCustom
apiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: set-kubelet-tls-security-profile spec: tlsSecurityProfile: type: Custom 1 custom: 2 ciphers: 3 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 minTLSVersion: VersionTLS11 machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: "" 4
- 1
- Spécifiez le type de profil de sécurité TLS (
Old
,Intermediate
, ouCustom
). La valeur par défaut estIntermediate
. - 2
- Spécifiez le champ approprié pour le type sélectionné :
-
old: {}
-
intermediate: {}
-
custom:
-
- 3
- Pour le type
custom
, spécifiez une liste de chiffrements TLS et la version TLS minimale acceptée. - 4
- Facultatif : Indiquez l'étiquette du pool de configuration de la machine pour les nœuds auxquels vous souhaitez appliquer le profil de sécurité TLS.
Créer l'objet
KubeletConfig
:$ oc create -f <filename>
En fonction du nombre de nœuds de travail dans la grappe, attendez que les nœuds configurés soient redémarrés un par un.
Vérification
Pour vérifier que le profil est défini, effectuez les étapes suivantes une fois que les nœuds sont dans l'état Ready
:
Démarrer une session de débogage pour un nœud configuré :
oc debug node/<node_name>
Définir
/host
comme répertoire racine dans l'interpréteur de commandes de débogage :sh-4.4# chroot /host
Consulter le fichier
kubelet.conf
:sh-4.4# cat /etc/kubernetes/kubelet.conf
Exemple de sortie
kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 ... "tlsCipherSuites": [ "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" ], "tlsMinVersion": "VersionTLS12",