19.8. Attacher des coprocesseurs cryptographiques à des machines virtuelles sur IBM Z
Pour utiliser le chiffrement matériel dans votre machine virtuelle (VM) sur un hôte IBM Z, créez des périphériques médiatisés à partir d'un coprocesseur cryptographique et affectez-les aux VM concernées. Pour des instructions détaillées, voir ci-dessous.
Conditions préalables
- Votre hôte fonctionne sur du matériel IBM Z.
Le coprocesseur cryptographique est compatible avec l'affectation des dispositifs. Pour le confirmer, assurez-vous que le site
type
de votre coprocesseur est répertorié commeCEX4
ou plus récent.# lszcrypt -V CARD.DOMAIN TYPE MODE STATUS REQUESTS PENDING HWTYPE QDEPTH FUNCTIONS DRIVER -------------------------------------------------------------------------------------------- 05 CEX5C CCA-Coproc online 1 0 11 08 S--D--N-- cex4card 05.0004 CEX5C CCA-Coproc online 1 0 11 08 S--D--N-- cex4queue 05.00ab CEX5C CCA-Coproc online 1 0 11 08 S--D--N-- cex4queue
Le module du noyau
vfio_ap
est chargé. Pour le vérifier, utilisez :# lsmod | grep vfio_ap vfio_ap 24576 0 [...]
Pour charger le module, utilisez :
# modprobe vfio_ap
La version
s390utils
prend en charge la manipulation deap
:# lszdev --list-types ... ap Cryptographic Adjunct Processor (AP) device ...
Procédure
Obtenez les valeurs décimales des périphériques que vous souhaitez attribuer à la VM. Par exemple, pour les périphériques
05.0004
et05.00ab
:# echo "obase=10; ibase=16; 04" | bc 4 # echo "obase=10; ibase=16; AB" | bc 171
Sur l'hôte, réaffectez les périphériques aux pilotes
vfio-ap
:# chzdev -t ap apmask=-5 aqmask=-4,-171
NotePour affecter les appareils de manière permanente, utilisez l'option
-p
.Vérifiez que les dispositifs cryptographiques ont été réaffectés correctement.
# lszcrypt -V CARD.DOMAIN TYPE MODE STATUS REQUESTS PENDING HWTYPE QDEPTH FUNCTIONS DRIVER -------------------------------------------------------------------------------------------- 05 CEX5C CCA-Coproc - 1 0 11 08 S--D--N-- cex4card 05.0004 CEX5C CCA-Coproc - 1 0 11 08 S--D--N-- vfio_ap 05.00ab CEX5C CCA-Coproc - 1 0 11 08 S--D--N-- vfio_ap
Si les valeurs DRIVER des files d'attente du domaine sont passées à
vfio_ap
, la réaffectation a réussi.Créer un extrait XML qui définit un nouveau dispositif médiatisé.
L'exemple suivant montre la définition d'un dispositif persistant à médiation et l'affectation de files d'attente à ce dispositif. Plus précisément, l'extrait XML
vfio_ap.xml
de cet exemple attribue un adaptateur de domaine0x05
, des files d'attente de domaine0x0004
et0x00ab
et un domaine de contrôle0x00ab
au dispositif à médiation.# vim vfio_ap.xml <device> <parent>ap_matrix</parent> <capability type="mdev"> <type id="vfio_ap-passthrough"/> <attr name='assign_adapter' value='0x05'/> <attr name='assign_domain' value='0x0004'/> <attr name='assign_domain' value='0x00ab'/> <attr name='assign_control_domain' value='0x00ab'/> </capability> </device>
Créer un nouveau dispositif médiatisé à partir de l'extrait XML
vfio_ap.xml
.# virsh nodedev-define vfio_ap.xml Node device 'mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix' defined from 'vfio_ap.xml'
Démarrez le dispositif de médiation que vous avez créé à l'étape précédente, dans ce cas
mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix
.# virsh nodedev-start mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix Device mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix started
Vérifier que la configuration a été appliquée correctement
# cat /sys/devices/vfio_ap/matrix/mdev_supported_types/vfio_ap-passthrough/devices/669d9b23-fe1b-4ecb-be08-a2fabca99b71/matrix 05.0004 05.00ab
Si la sortie contient les valeurs numériques des files d'attente que vous avez précédemment affectées à
vfio-ap
, le processus a réussi.Attachez le périphérique médiatisé à la VM.
Affichez l'UUID du dispositif médiatisé que vous avez créé et enregistrez-le pour l'étape suivante.
# virsh nodedev-dumpxml mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix <device> <name>mdev_8f9c4a73_1411_48d2_895d_34db9ac18f85_matrix</name> <parent>ap_matrix</parent> <capability type='mdev'> <type id='vfio_ap-passthrough'/> <uuid>8f9c4a73-1411-48d2-895d-34db9ac18f85</uuid> <iommuGroup number='0'/> <attr name='assign_adapter' value='0x05'/> <attr name='assign_domain' value='0x0004'/> <attr name='assign_domain' value='0x00ab'/> <attr name='assign_control_domain' value='0x00ab'/> </capability> </device>
Créez et ouvrez un fichier XML pour le dispositif à carte cryptographique. Par exemple :
# vim crypto-dev.xml
Ajoutez les lignes suivantes au fichier et enregistrez-le. Remplacez la valeur
uuid
par l'UUID que vous avez obtenu à l'étape a.<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ap'> <source> <address uuid='8f9c4a73-1411-48d2-895d-34db9ac18f85'/> </source> </hostdev>
Utilisez le fichier XML pour attacher le dispositif médiatisé à la VM. Par exemple, pour attacher de façon permanente un dispositif défini dans le fichier
crypto-dev.xml
à la VMtestguest1
en cours d'exécution :# virsh attach-device testguest1 crypto-dev.xml --live --config
L'option
--live
attache le périphérique à une VM en cours d'exécution uniquement, sans persistance entre les démarrages. L'option--config
rend les modifications de configuration persistantes. Vous pouvez utiliser l'option--config
seule pour attacher le périphérique à une VM arrêtée.Notez que chaque UUID ne peut être attribué qu'à une seule VM à la fois.
Vérification
Assurez-vous que le système d'exploitation invité détecte les dispositifs cryptographiques assignés.
# lszcrypt -V CARD.DOMAIN TYPE MODE STATUS REQUESTS PENDING HWTYPE QDEPTH FUNCTIONS DRIVER -------------------------------------------------------------------------------------------- 05 CEX5C CCA-Coproc online 1 0 11 08 S--D--N-- cex4card 05.0004 CEX5C CCA-Coproc online 1 0 11 08 S--D--N-- cex4queue 05.00ab CEX5C CCA-Coproc online 1 0 11 08 S--D--N-- cex4queue
La sortie de cette commande dans le système d'exploitation invité sera identique à celle d'une partition logique hôte avec les mêmes coprocesseurs cryptographiques disponibles.
Dans le système d'exploitation invité, confirmez qu'un domaine de contrôle a bien été attribué aux dispositifs cryptographiques.
# lszcrypt -d C DOMAIN 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ------------------------------------------------------ 00 . . . . U . . . . . . . . . . . 10 . . . . . . . . . . . . . . . . 20 . . . . . . . . . . . . . . . . 30 . . . . . . . . . . . . . . . . 40 . . . . . . . . . . . . . . . . 50 . . . . . . . . . . . . . . . . 60 . . . . . . . . . . . . . . . . 70 . . . . . . . . . . . . . . . . 80 . . . . . . . . . . . . . . . . 90 . . . . . . . . . . . . . . . . a0 . . . . . . . . . . . B . . . . b0 . . . . . . . . . . . . . . . . c0 . . . . . . . . . . . . . . . . d0 . . . . . . . . . . . . . . . . e0 . . . . . . . . . . . . . . . . f0 . . . . . . . . . . . . . . . . ------------------------------------------------------ C: Control domain U: Usage domain B: Both (Control + Usage domain)
Si
lszcrypt -d C
affiche les intersectionsU
etB
dans la matrice du dispositif cryptographique, l'attribution du domaine de contrôle a réussi.