Création d'une image personnalisée chiffrée

Lorsque vous disposez d'une image personnalisée d' qcow2 qui répond aux exigences de l'infrastructure d' IBM Cloud® Virtual Private Cloud, vous pouvez la chiffrer. La procédure suivante décrit comment chiffrer votre image personnalisée à l'aide du chiffrement LUKS, en utilisant QEMU et votre propre phrase de passe unique. Après avoir chiffré l'image, vous encapsulez la phrase passe avec votre clé racine client (CRK). La clé de chiffrement des données encapsulées (ou cryptées) est stockée avec les métadonnées de votre image lorsque vous l'importez dans IBM Cloud VPC.

Un moyen rapide de créer une image personnalisée chiffrée consiste à utiliser une image à partir d'un volume. Vous pouvez utiliser cette fonction pour créer une image personnalisée à partir du volume d'amorçage d'une instance et spécifier le chiffrement géré par le client. Pour plus d'informations, voir A propos de la création d'une image à partir d'un volume.

Vous ne pouvez pas utiliser une image personnalisée chiffrée dans un catalogue privé ou sur un serveur bare metal.

Pour plus d'informations, voir Initiation aux clés SSH.

Fonctionnement des images personnalisées chiffrées

Une fois que vous avez chiffré une image personnalisée avec votre propre phrase passe, téléchargez-la dans IBM Cloud Object Storage. Avant d'importer l'image chiffrée dans IBM Cloud VPC, vous devez configurer une instance de service de gestion de clés (KMS) et créer une clé racine client (CRK). Utilisez ensuite votre CRK pour protéger la phrase secrète que vous utilisez pour chiffrer votre image. En encapsulant votre phrase passe secrète avec votre CRK, vous créez ce que le service KMS appelle une clé de chiffrement de données encapsulée (WDEK). Le fait d'encapsuler votre mot de passe permet de le chiffrer et de le sécuriser, de sorte que vous n'ayez jamais à le partager en clair.

Lorsque vous importez l'image, vous devez spécifier le nom de la ressource cloud (CRN) de votre clé racine client (CRK) stockée dans votre système de gestion de clés. Vous devez également spécifier le texte chiffré de la clé de chiffrement de données encapsulée (WDEK). La phrase passe est toujours stockée chiffrée dans la clé WDEK. Elle n'est désencapsulée qu'au démarrage d'un serveur virtuel qui utilise l'image chiffrée.

Lorsque vous êtes prêt à mettre à disposition un serveur virtuel avec l'image chiffrée, les informations de chiffrement ne sont pas nécessaires. La clé de chiffrement de données encapsulée (WDEK) et le nom de ressource de cloud de la clé racine client (CRK) sont stockés sous forme de métadonnées avec l'image. Pour plus d'informations, voir A propos des images personnalisées chiffrées.

Présentation du processus des images chiffrées

Les étapes suivantes récapitulent la procédure générale à suivre pour créer et importer une image chiffrée. Les sections qui suivent fournissent des détails sur la réalisation de cette procédure.

  1. Créez une image chiffrée à l'aide de QEMU et d'une phrase passe de votre choix pour chiffrer un fichier qcow2 à l'aide du chiffrement LUKS.
  2. Téléchargez le fichier image chiffré dans IBM Cloud Object Storage.
  3. Procurez-vous l' Key Protect, créez une clé racine client (CRK), puis enveloppez votre phrase de passe avec la CRK pour générer une clé de chiffrement de données enveloppée (WDEK).
  4. Assurez-vous de disposer des autorisations requises pour IBM Cloud Identity and Access Management afin de pouvoir importer l’image depuis IBM Cloud Object Storage et d’utiliser votre WDEK pour le chiffrement des données.
  5. Importez l'image dans IBM Cloud VPC. Vous devez indiquer l'emplacement d' IBM Cloud Object Storage, le CRK stocké dans Key Protect, ainsi que votre texte chiffré WDEK.

Chiffrement de l'image

Au cours de cette étape, vous utilisez QEMU pour définir votre propre mot de passe et chiffrer votre image personnalisée à l'aide du chiffrement LUKS.

L'image personnalisée que vous prévoyez de chiffrer doit répondre aux exigences des images personnalisées de l'infrastructure IBM Cloud VPC. Vérifiez que vous avez bien respecté les exigences relatives à la préparation des images décrites dans les rubriques suivantes :

Pour effectuer la tâche de chiffrement, vous devez disposer de la version 2.12 ou ultérieure de QEMU.

Vous devez utiliser un système d'exploitation Linux ou Windows pour suivre les instructions de chiffrement QEMU. Le système d'exploitation Mac n'est pas pris en charge.

Suivez les étapes suivantes à l'aide de QEMU pour créer un deuxième fichier qcow2 chiffré de votre image personnalisée.

  1. Déterminez votre propre phrase passe à utiliser pour le chiffrement de votre image. Les exemples de commande de cette tâche utilisent la phrase passe abc123. Conservez votre phrase passe disponible. Vous devrez ensuite encapsuler la phrase secrète pour créer une clé de chiffrement de données encapsulée (WDEK). Cette WDEK est requise lorsque vous importez l'image dans IBM Cloud VPC.

  2. Vérifiez votre image personnalisée qcow2 à l'aide de la commande suivante :

    qemu-img info my_100G_custom_image.qcow2
    

    Pour cet exemple, vous obtenez une réponse similaire à la sortie suivante :

    image: my_100G_custom_image.qcow2
    file format: qcow2
    virtual size: 100 GiB (107374182400 bytes)
    disk size: 1.28 GiB
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        lazy refcounts: false
        refcount bits: 16
        corrupt: false
    
  3. Créez un fichier qcow2 vide de même taille et chiffrez-le à l'aide du chiffrement LUKS. Utilisez la phrase passe de votre choix (par exemple, abc123), pour chiffrer le fichier :

    qemu-img create --object secret,id=sec0,data=abc123 -f qcow2 -o encrypt.format=luks,encrypt.key-secret=sec0 my_100G_custom_image-encrypted.qcow2 100G
    
  4. Convertissez votre image qcow2 en my_100G_custom_image.qcow2 une image chiffrée my_100G_custom_image-encrypted.qcow2.

    qemu-img convert --object secret,id=sec0,data=abc123 --image-opts driver=qcow2,file.filename=my_100G_custom_image.qcow2 --target-image-opts driver=qcow2,encrypt.key-secret=sec0,file.filename=my_100G_custom_image-encrypted.qcow2 -n -p
    
  5. Comparez les deux fichiers pour vérifier qu'ils sont identiques.

    qemu-img compare --object secret,id=sec0,data=abc123 --image-opts driver=qcow2,file.filename=my_100G_custom_image.qcow2  driver=qcow2,encrypt.key-secret=sec0,file.filename=my_100G_custom_image-encrypted.qcow2 -p
    
  6. Recherchez d'éventuelles erreurs dans le fichier.

    qemu-img check --object secret,id=sec0,data=abc123 --image-opts driver=qcow2,encrypt.key-secret=sec0,file.filename=my_100G_custom_image-encrypted.qcow2
    

    Pour cet exemple, vous obtenez une réponse similaire à la sortie suivante :

    No errors were found on the image.
    16343/1638400 = 1.00% allocated, 0.00% fragmented, 0.00% compressed clusters
    Image end offset: 1074790400
    
  7. Exécutez cette opération sur info votre nouveau fichier chiffré pour vérifier qu’il correspond bien à la taille et au niveau de chiffrement attendus.

    qemu-img info my_100G_custom_image-encrypted.qcow2
    

    Pour cet exemple, vous obtenez une réponse similaire à la sortie suivante :

    image: my_100G_custom_image-encrypted.qcow2
    file format: qcow2
    virtual size: 100 GiB (107374182400 bytes)
    disk size: 1.27 GiB
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        lazy refcounts: false
        refcount bits: 16
        corrupt: false
    

Téléchargement de l'image chiffrée dans IBM Cloud Object Storage

Une fois votre fichier image chiffré à l’aide du chiffrement LUKS et de votre phrase de passe unique, vous pouvez le télécharger sur IBM Cloud Object Storage en suivant les étapes suivantes :

  1. Assurez-vous que votre fichier image personnalisé comporte un nom descriptif afin que vous puissiez facilement l'identifier ultérieurement.
  2. Dans la page Objets de votre compartiment IBM Cloud Object Storage, cliquez sur Télécharger. Vous pouvez utiliser le plug-in de transfert à haut débit Aspera pour télécharger des images de plus de 200 Mo.

Configuration de votre service de gestion de clés et de vos clés

IBM Cloud Hyper Protect Crypto Services sont obsolètes. Les clients peuvent utiliser les instances existantes jusqu'au 20 mars 2027. Pour plus d’informations, consultez la section Abandon de la fonctionnalité IBM Cloud Hyper Protect Crypto Services. Pour une protection continue, envisagez de migrer vos clés de chiffrement existantes vers une instance dédiée d' Key Protect. Pour plus d'informations, consultez le guide de migration.

Pour importer une image personnalisée chiffrée vers l' IBM Cloud VPC, vous devez disposer d' Key Protect. Vous avez également besoin d'une clé racine client (CRK) et d'une clé de chiffrement de données encapsulée (WDEK). Le WDEK est la phrase de passe que vous avez utilisée pour chiffrer votre image à l'aide de votre CRK, de sorte que vous soyez le seul à connaître cette phrase de passe. La clé WDEK permet d'accéder à l'image chiffrée au démarrage d'une instance de serveur virtuel qui utilise l'image chiffrée.

La liste suivante résume les principales conditions préalables à la gestion :

  • Key Protect de mise en service.
  • Importez une clé racine client (CRK) vers Key Protect ou créez-en une sur Key Protect.
  • Encapsuler (protéger) la phrase passe que vous avez utilisée pour chiffrer votre image avec votre clé racine client afin de créer une clé de chiffrement de données encapsulée (WDEK).
  1. Mettez à disposition le service Key Protect.

    La mise en service d'une instance du service Key Protect garantit qu'elle intègre les dernières mises à jour requises pour le chiffrement géré par le client.

  2. Créez ou importez une clé racine de client (CRK) dans IBM Key Protect.

    Planifiez l'importation de vos clés en vérifiant les options de création et de chiffrement du matériel de clé. Pour une sécurité renforcée, vous pouvez activer l'importation sécurisée de votre matériel de clé en utilisant un jeton d'importation pour chiffrer votre matériel de clé avant de le transférer sur le cloud.

    L'état de la clé racine client (CRK) a une incidence directe sur la disponibilité de votre image chiffrée. Si la clé CRK est suspendue, désactivée ou détruite, la clé de chiffrement des données encapsulées (WDEK) ne peut pas être déchiffrée, et aucune instance de serveur virtuel utilisant l'image chiffrée ne peut démarrer. Pour plus d'informations, consultez la section États clés et transitions.

  3. Utilisez votre clé racine client (CRK) pour encapsuler ou protéger la phrase passe unique que vous avez utilisée pour chiffrer votre image à l'aide du chiffrement LUKS. Dans l'exemple de chiffrement d'image, nous avons utilisé la phrase passe abc123.

    1. Assurez-vous que le plug-in CLI d' Key Protect est installé afin de pouvoir générer un WDEK. Pour plus d'informations, voir Installation du plug-in d'interface de ligne de commande Key Protect.

    2. Codez votre phrase passe en Base64 pour la préparer à l'encapsulage avec votre CRK. Exécutez la commande suivante en remplaçant abc123par votre phrase passe. Le paramètre -n est requis pour ne pas coder de caractère de retour à la ligne, ce qui empêcherait la phrase passe encapsulée de fonctionner.

       echo -n "abc123"|base64
    

    Pour cet exemple, vous obtenez une réponse similaire à la sortie suivante :

    YWJjMTIz
    
    1. Encapsulez votre phrase passe codée avec votre CRK en exécutant la commande ibmcloud kp key wrap. Bien que la phrase de passe utilisée pour générer l'image chiffrée ne soit pas techniquement une clé de chiffrement des données, c'est le terme utilisé par Key Protect pour désigner les données lors des opérations de chiffrement et de déchiffrement. Les données renvoyées par Key Protect sont appelées WDEK. Pour plus d'informations, voir kp key wrap.
       ibmcloud kp key wrap KEY_ID -i INSTANCE_ID -p PLAINTEXT
    

    Où KEY_ID correspond à l’ID de la clé racine que vous souhaitez utiliser pour l’encapsulation, INSTANCE_ID correspond à l’ID de l’instance qui identifie votre instance du service Key Protect, et PLAINTEXT correspond à votre phrase de passe encodée. Par exemple, YWJjMTIz.

    Pour cet exemple, vous obtenez une réponse similaire à la sortie suivante :

    Wrapping key...
    SUCCESS
    Ciphertext
    eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=
    
    1. Sauvegardez ou stockez le texte chiffré de la clé WDEK. Vous devez spécifier le texte chiffré de la clé WDEK lorsque vous importez l'image chiffrée dans IBM Cloud VPC.

Prérequis de l'autorisation IAM

Assurez-vous d'avoir créé les autorisations requises dans IBM Cloud Identity and Access Management.

  1. A partir d'IBM Cloud Identity and Access Management (IAM), créez une autorisation entre Cloud Block Storage (service source) et votre service de gestion de clés (service cible). L'autorisation permet aux services de fond de panier IBM Cloud d'utiliser votre WDEK pour le chiffrement des données.
  2. Assurez-vous d'avoir créé une autorisation IAM entre Image Service for VPC et IBM Cloud Object Storage. Spécifiez Services d'infrastructure comme service source. Spécifiez Image Service for VPC comme type de ressource. Spécifiez IBM Cloud Object Storage comme service cible. Cette autorisation permet au service Image Service for VPC d'accéder aux images stockées dans IBM Cloud Object Storage. Pour plus d'informations, voir la rubrique décrivant l'octroi d'un accès à IBM Cloud Object Storage pour importer des images.

Etapes suivantes

Une fois que votre image est correctement chiffrée, que l’ Key Protect est configuré et que vous avez créé les clés requises, vous pouvez importer l’image sur IBM Cloud VPC. Une fois que l'image est disponible dans IBM Cloud VPC, vous pouvez l'utiliser pour mettre à disposition des instances. Assurez-vous d’avoir accordé l’accès à IBM Cloud Object Storage pour importer des images.

Une fois que vous êtes prêt à mettre à disposition une nouvelle instance de serveur virtuel avec l'image chiffrée, aucune information de chiffrement n'est requise. La clé de chiffrement de données encapsulée (WDEK) et le nom de ressource de cloud de la clé racine client (CRK) sont stockés sous forme de métadonnées avec l'image.