AMD SME/SEV sur Ubuntu 20
Objectif
Activez AMD SME sur votre serveur Ubuntu 20.04 et créez une machine virtuelle KVM/QEMU sécurisée avec SEV
Prérequis
- Un serveur dédié avec d'un processeur Epyc AMD Naples/Rome
- Accès administratif (sudo) au serveur avec SSH
- Ubuntu 20.04 installé
En practique
Étape 1 - Activer SME et SEV
L'activation de SME nécessite simplement l'ajout de "mem_encrypt=on" sur la ligne de commande de démarrage du kernel. Pour pouvoir utiliser SEV dans KVM, nous devons aussi ajouter "kvm_amd.sev=1".
Pour ce faire, nous devons l'ajouter à "GRUB_CMDLINE_LINUX_DEFAULT".
La façon habituelle de faire cela est de modifier /etc/default/grub, cependant, sur les images cloud Ubuntu, nous devons modifier ce fichier à la place : "/etc/default/grub.d/50-cloudimg-settings.cfg"
Voici à quoi ça ressemble sur un Ubuntu 20.04 fraîchement installé, après avoir modifié le fichier :
Maintenant, nous devons mettre à jour notre configuration grub pour rendre notre changement efficace :
Étape 2 - Redémarrez le serveur pour que SME/SEV soit disponible
Redémarrons le serveur pour appliquer nos modifications de ligne de commande :
Une fois le serveur en ligne, nous devrions voir "mem_encrypt=on" et "kvm_amd.sev=1" dans `/proc/cmdline" :
Vous devriez également voir les messages suivants dans dmesg :
Vous pouvez également vérifier que SEV est disponible :
Étape 3 - Configuration requise pour la création de notre machine virtuelle invitée
Installer des packages :
Téléchargeons l'image pour notre machine virtuelle. Nous utiliserons une image cloud Ubuntu 20.04
Étape 4 - Préparer l'image
Veillons à ce que l'image soit dans le bon format pour QEMU/KVM, et la mettons dans le dossier approprié :
Puisque nous utilisons une image cloud, nous devons aussi préparer une petite ISO qui configurera le mot de passe de l'utilisateur "ubuntu" :
Étape 5 - Lancer la machine virtuelle
A noter : au moment de l'écriture de cet article, il y a un problème dans apparmor/libvirt qui fera échouer la commande ci-dessus avec le message suivant :
Pour le corriger, nous allons éditer "/etc/apparmor.d/abstractions/libvirt-qemu" pour autoriser l'accès "rw" à /dev/sev. Voici à quoi ça devrait ressembler une fois édité :
Une fois la machine virtuelle créée avec succès, nous pouvons nous connecter en utilisant les informations d'identification définies précédemment dans "cloud-config", et vérifier que SEV est effectivement activé :
Références et ressources supplémentaires
- AMD Secure Encrypted Virtualization (SEV)
- libvirt : Launch security with AMD SEV
- libvirt XML domain format - launchSecurity
- libvirt domain capabilities - SEV
- github.com/AMDESE/AMDSEV
- github.com/AMDESE/sev-tool
Aller plus loin
Échangez avec notre communauté d'utilisateurs.