14.2. Activation du chiffrement d'etcd

Vous pouvez activer le chiffrement etcd pour chiffrer les ressources sensibles de votre cluster.

Avertissement

Ne sauvegardez pas les ressources etcd tant que le processus de cryptage initial n'est pas terminé. Si le processus de chiffrement n'est pas terminé, la sauvegarde risque de n'être que partiellement chiffrée.

Après avoir activé le chiffrement d'etcd, plusieurs changements peuvent survenir :

  • Le chiffrement d'etcd peut affecter la consommation de mémoire de quelques ressources.
  • Il se peut que vous remarquiez un effet transitoire sur les performances de la sauvegarde, car le leader doit servir la sauvegarde.
  • Une entrée/sortie de disque peut affecter le nœud qui reçoit l'état de sauvegarde.

Conditions préalables

  • Accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.

Procédure

  1. Modifier l'objet APIServer:

    $ oc edit apiserver
  2. Définissez le type de champ encryption sur aescbc:

    spec:
      encryption:
        type: aescbc 1
    1
    Le type aescbc signifie que le chiffrement est effectué par AES-CBC avec un remplissage PKCS#7 et une clé de 32 octets.
  3. Enregistrez le fichier pour appliquer les modifications.

    Le processus de cryptage démarre. Ce processus peut durer 20 minutes ou plus, en fonction de la taille de votre cluster.

  4. Vérifiez que le chiffrement d'etcd a réussi.

    1. Examinez la condition d'état Encrypted pour le serveur OpenShift API afin de vérifier que ses ressources ont été chiffrées avec succès :

      $ oc get openshiftapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'

      La sortie indique EncryptionCompleted lorsque le cryptage a réussi :

      EncryptionCompleted
      All resources encrypted: routes.route.openshift.io

      Si la sortie indique EncryptionInProgress, le cryptage est toujours en cours. Attendez quelques minutes et réessayez.

    2. Consultez la condition d'état Encrypted pour le serveur API Kubernetes afin de vérifier que ses ressources ont été chiffrées avec succès :

      $ oc get kubeapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'

      La sortie indique EncryptionCompleted lorsque le cryptage a réussi :

      EncryptionCompleted
      All resources encrypted: secrets, configmaps

      Si la sortie indique EncryptionInProgress, le cryptage est toujours en cours. Attendez quelques minutes et réessayez.

    3. Examinez l'état Encrypted pour le serveur OpenShift OAuth API afin de vérifier que ses ressources ont été chiffrées avec succès :

      $ oc get authentication.operator.openshift.io -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'

      La sortie indique EncryptionCompleted lorsque le cryptage a réussi :

      EncryptionCompleted
      All resources encrypted: oauthaccesstokens.oauth.openshift.io, oauthauthorizetokens.oauth.openshift.io

      Si la sortie indique EncryptionInProgress, le cryptage est toujours en cours. Attendez quelques minutes et réessayez.