19.7. Configuration d'IBM Secure Execution sur IBM Z


Lorsque vous utilisez du matériel IBM Z pour exécuter un hôte RHEL 9, vous pouvez améliorer la sécurité de vos machines virtuelles (VM) en configurant IBM Secure Execution pour les VM.

IBM Secure Execution, également connu sous le nom de Protected Virtualization, empêche le système hôte d'accéder à l'état et au contenu de la mémoire d'une VM. Par conséquent, même si l'hôte est compromis, il ne peut pas être utilisé comme vecteur d'attaque du système d'exploitation invité. En outre, Secure Execution peut être utilisé pour empêcher les hôtes non fiables d'obtenir des informations sensibles de la VM.

La procédure suivante décrit comment convertir une VM existante sur un hôte IBM Z en une VM sécurisée.

Conditions préalables

  • Le matériel du système est l'un des suivants :

    • IBM z15 ou ultérieur
    • IBM LinuxONE III ou version ultérieure
  • La fonction d'exécution sécurisée est activée pour votre système. Pour le vérifier, utilisez :

    # grep facilities /proc/cpuinfo | grep 158

    Si cette commande affiche une sortie, votre unité centrale est compatible avec Secure Execution.

  • Le noyau prend en charge l'exécution sécurisée. Pour confirmer, utilisez :

    # ls /sys/firmware | grep uv

    Si la commande génère une sortie, votre noyau prend en charge l'exécution sécurisée.

  • Le modèle de l'unité centrale hôte contient la fonction unpack. Pour confirmer, utilisez :

    # virsh domcapabilities | grep unpack
    <feature policy='require' name='unpack'/>

    Si la commande génère le résultat ci-dessus, votre modèle d'hôte CPU est compatible avec Secure Execution.

  • Le mode CPU de la VM est défini sur host-model. Pour le confirmer, utilisez la procédure suivante et remplacez vm-name par le nom de votre VM.

    # virsh dumpxml vm-name | grep "<cpu mode='host-model'/>"

    Si la commande génère une sortie, le mode CPU de la VM est correctement défini.

  • Le paquetage genprotimg doit être installé sur l'hôte.

    # dnf install genprotimg
  • Vous avez obtenu et vérifié le document de la clé hôte IBM Z. Pour obtenir des instructions à ce sujet, reportez-vous à la section Vérification du document de clé hôte dans la documentation IBM.

Procédure

Effectuez les étapes suivantes on your host:

  1. Ajoutez le paramètre prot_virt=1 kernel à la configuration de démarrage de l'hôte.

    # grubby --update-kernel=ALL --args="prot_virt=1"
  2. Mettre à jour le menu de démarrage :

    # zipl

  3. Utilisez virsh edit pour modifier la configuration XML de la VM que vous souhaitez sécuriser.
  4. Ajoutez <launchSecurity type="s390-pv"/> sous la ligne </devices>. Par exemple :

    [...]
        </memballoon>
      </devices>
      <launchSecurity type="s390-pv"/>
    </domain>
  5. Si la section <devices> de la configuration comprend un dispositif virtio-rng (<rng model="virtio">), supprimez toutes les lignes du bloc <rng> </rng>.
  6. Optional: Si la VM que vous souhaitez sécuriser utilise 32 GiB de RAM ou plus, ajoutez la ligne <async-teardown enabled='yes'/> à la section <features></features> de sa configuration XML.

    Cela améliore la performance du redémarrage ou de l'arrêt de ces hôtes de Secure Execution.

Effectuez les étapes suivantes in the guest operating system de la VM que vous souhaitez sécuriser.

  1. Créer un fichier de paramètres. Par exemple :

    # touch ~/secure-parameters
  2. Dans le répertoire /boot/loader/entries, identifiez l'entrée du chargeur de démarrage avec la dernière version :

    # ls /boot/loader/entries -l
    [...]
    -rw-r--r--. 1 root root  281 Oct  9 15:51 3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf
  3. Récupère la ligne d'options du noyau de l'entrée du chargeur de démarrage :

    # cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf | grep options
    options root=/dev/mapper/rhel-root
    rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap
  4. Ajoutez le contenu de la ligne d'options et swiotlb=262144 au fichier de paramètres créé.

    # echo "root=/dev/mapper/rhel-root rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap swiotlb=262144" > ~/secure-parameters
  5. Générer une image IBM Secure Execution.

    Par exemple, la procédure suivante crée une image sécurisée /boot/secure-image basée sur l'image /boot/vmlinuz-4.18.0-240.el8.s390x, en utilisant le fichier secure-parameters, le fichier de disque RAM initial /boot/initramfs-4.18.0-240.el8.s390x.img et le document de clé d'hôte HKD-8651-000201C048.crt.

    # genprotimg -i /boot/vmlinuz-4.18.0-240.el8.s390x -r /boot/initramfs-4.18.0-240.el8.s390x.img -p ~/secure-parameters -k HKD-8651-00020089A8.crt -o /boot/secure-image

    L'utilitaire genprotimg permet de créer l'image sécurisée, qui contient les paramètres du noyau, le disque RAM initial et l'image de démarrage.

  6. Mettez à jour le menu de démarrage de la VM pour démarrer à partir de l'image sécurisée. En outre, supprimez les lignes commençant par initrd et options, car elles ne sont pas nécessaires.

    Par exemple, dans une VM RHEL 8.3, le menu de démarrage peut être édité dans le répertoire /boot/loader/entries/:

    # cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf
    title Red Hat Enterprise Linux 8.3
    version 4.18.0-240.el8.s390x
    linux /boot/secure-image
    [...]
  7. Créer l'image disque amorçable :

    # zipl -V
  8. Supprimer en toute sécurité les fichiers originaux non protégés. Par exemple :

    # shred /boot/vmlinuz-4.18.0-240.el8.s390x
    # shred /boot/initramfs-4.18.0-240.el8.s390x.img
    # shred secure-parameters

    L'image de démarrage originale, l'image RAM initiale et le fichier de paramètres du noyau ne sont pas protégés et, s'ils ne sont pas supprimés, les machines virtuelles dont l'exécution sécurisée est activée peuvent toujours être vulnérables aux tentatives de piratage ou à l'extraction de données sensibles.

Vérification

  • Sur l'hôte, utilisez l'utilitaire virsh dumpxml pour confirmer la configuration XML de la VM sécurisée. La configuration doit inclure l'élément <launchSecurity type="s390-pv"/> et aucune ligne <rng model="virtio">.

    # virsh dumpxml vm-name
    [...]
      <cpu mode='host-model'/>
      <devices>
        <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2' cache='none' io='native'>
          <source file='/var/lib/libvirt/images/secure-guest.qcow2'/>
          <target dev='vda' bus='virtio'/>
        </disk>
        <interface type='network'>
          <source network='default'/>
          <model type='virtio'/>
        </interface>
        <console type='pty'/>
        <memballoon model='none'/>
      </devices>
      <launchSecurity type="s390-pv"/>
    </domain>
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.