Créer et gérer une instance Cloud HSM à locataire unique

Ce guide explique comment créer, provisionner et gérer une instance Cloud HSM à locataire unique à l'aide de Google Cloud CLI. Une fois votre instance créée et provisionnée, vous pouvez créer et utiliser des clés dans l'instance à l'aide de la console Google Cloud , de l'API Cloud Key Management Service, de gcloud CLI et des bibliothèques clientes.

Pour créer et gérer votre instance, vous devez utiliser l'authentification par quorum. Lorsque vous créez votre instance, vous définissez le nombre d'approbations des membres du quorum nécessaires pour exécuter les opérations d'instance. Vos membres du quorum doivent toujours disposer d'au moins ce nombre de clés de contrôle pour conserver le contrôle administratif de votre instance.

Avant de commencer

  1. Consultez et appliquez les bonnes pratiques concernant les modules HSM Cloud à locataire unique lorsque vous créez et gérez votre instance.
  2. Déterminez le nombre de membres du quorum avec lequel vous souhaitez commencer. Vous pourrez ajouter des membres du quorum supplémentaires ultérieurement, si les membres du quorum existants l'approuvent. Le nombre minimal de membres du quorum est de trois.
  3. Déterminez le nombre de membres du quorum requis pour approuver les propositions. Vous ne pouvez pas modifier ce nombre une fois l'instance créée. Vos membres du quorum doivent toujours avoir accès à ce nombre de clés de contrôle pour maintenir l'instance. La taille minimale du quorum est de deux. La taille du quorum requise doit être inférieure au nombre de membres du quorum.
  4. Décidez comment vous allez vous assurer que l'instance est actualisée à temps. Vous devez surveiller le disableDate de l'instance et proposer, approuver et exécuter une opération d'actualisation de l'instance avant la date limite pour éviter tout temps d'arrêt indésirable.
  5. Pour obtenir les autorisations nécessaires pour créer, gérer et utiliser des instances Cloud HSM à locataire unique, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet ou une ressource parente :

    • Créer des propositions : Proposeur du HSM à locataire unique Cloud KMS (cloudkms.hsmSingleTenantProposer)
    • Approuver les propositions : Membre du quorum du HSM à locataire unique Cloud KMS (cloudkms.hsmSingleTenantQuorumMember)
    • Exécuter des propositions : Exécuteur du HSM à locataire unique Cloud KMS (cloudkms.hsmSingleTenantExecutor)
    • Créer des clés : Créateur de clés du HSM à locataire unique Cloud KMS (roles/cloudkms.hsmSingleTenantKeyCreator)

    Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

    Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

  6. Pour chaque membre du quorum, générez une paire de clés RSA-2048 pour l'authentification à deux facteurs (2FA). Nous vous recommandons d'utiliser des jetons physiques pour vos clés de contrôle. Suivez les normes de votre organisation pour créer des paires de clés RSA-2048 sur des jetons physiques.

    À des fins de démonstration, ce guide utilise OpenSSL pour créer trois clés RSA-2048 logicielles :

        openssl genrsa -out rsaprivate1.pem
        openssl genrsa -out rsaprivate2.pem
        openssl genrsa -out rsaprivate3.pem
    
        openssl rsa -in rsaprivate1.pem  -out rsapub1.pem --pubout
        openssl rsa -in rsaprivate2.pem  -out rsapub2.pem --pubout
        openssl rsa -in rsaprivate3.pem  -out rsapub3.pem --pubout
        

    Stockez les clés privées de manière sécurisée. Vous en aurez besoin pour approuver les propositions. Gardez les clés publiques à portée de main, car vous en aurez besoin pour créer l'instance Cloud HSM à locataire unique.

  7. Choisissez un emplacement Cloud KMS compatible avec le HSM à locataire unique Cloud. Pour identifier les emplacements compatibles, consultez la liste des emplacements sur la page Emplacements Cloud KMS. Pour le filtre Compatibilité HSM, sélectionnez Compatible avec les HSM à locataire unique.

Créer et provisionner une instance

Pour créer et provisionner une instance Cloud HSM à locataire unique, vous utilisez gcloud CLI pour créer la ressource d'instance, créer une proposition pour enregistrer vos clés d'authentification, puis approuver et exécuter la proposition.

Créer l'instance

Cette étape doit être effectuée par un administrateur d'instance disposant du rôle Proposeur du HSM à locataire unique Cloud KMS.

  1. Définissez votre projet par défaut.

    gcloud config set project PROJECT_ID
    

    Remplacez PROJECT_ID par l'identifiant de votre projet.

  2. Créez l'instance Cloud HSM à locataire unique.

    gcloud kms single-tenant-hsm create --location=LOCATION \
        --total-approver-count=QUORUM_MEMBER_COUNT \
        --single-tenant-hsm-instance-id=INSTANCE_ID
    

    Remplacez les éléments suivants :

    • LOCATION : emplacement où vous souhaitez créer votre instance, par exemple us-central1.
    • QUORUM_MEMBER_COUNT : nombre total de membres du quorum. Il s'agit également du nombre de clés de contrôle que vous avez créées précédemment. La valeur minimale est 3. Vous pourrez ajouter d'autres clés ultérieurement avec l'approbation du quorum. Pour pouvoir récupérer votre compte après avoir perdu une clé de contrôle, vous devez avoir au moins un membre du quorum de plus que la taille de quorum requise.
    • INSTANCE_ID : identifiant que vous souhaitez utiliser pour l'instance, par exemple example-sthsm-instance. Vous pouvez omettre l'option --single-tenant-hsm-instance-id pour que Cloud HSM attribue un UUID.
  3. Vérifiez l'état de l'instance.

    gcloud kms single-tenant-hsm describe INSTANCE_ID \
        --location=LOCATION
    

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de votre instance.
    • LOCATION : emplacement où vous avez créé votre instance.

    Si l'état est PENDING_TWO_FACTOR_AUTH_REGISTRATION, vous pouvez provisionner l'instance. Il faut généralement entre 5 et 30 minutes pour atteindre cet état.

Provisionner l'instance

  1. Créez une proposition pour enregistrer vos clés d'authentification à deux facteurs à l'aide de l'opération register_two_factor_auth_keys. Cette étape nécessite le rôle Proposeur du HSM à locataire unique Cloud KMS. Contrairement à la plupart des propositions, la proposition register_two_factor_auth_keys nécessite des défis signés de tous les membres du quorum.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID 
    --single-tenant-hsm-instance-proposal-id PROPOSAL_ID
    --location LOCATION
    --operation-type register_two_factor_auth_keys
    --required-approver-count MEMBERS_REQUIRED_FOR_APPROVAL
    --two-factor-public-key-pems=PUBLIC_KEY_LIST

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de votre instance.
    • PROPOSAL_ID : identifiant unique que vous souhaitez utiliser pour cette proposition (par exemple, set-up-2fa).
    • LOCATION : emplacement où vous avez créé votre instance.
    • MEMBERS_REQUIRED_FOR_APPROVAL : nombre de membres du quorum qui doivent approuver une proposition avant que l'opération puisse être exécutée. La valeur minimale est 2. Cette valeur ne peut pas être modifiée une fois l'instance provisionnée. Vos membres du quorum doivent toujours avoir accès à au moins autant de clés de contrôle pour conserver le contrôle administratif de l'instance.
    • PUBLIC_KEY_LIST : liste des chemins d'accès aux parties de clé publique de toutes vos clés de contrôle, séparés par une virgule (par exemple, rsapub1.pem,rsapub2.pem,rsapub3.pem). Le nombre de clés publiques de cette liste doit correspondre à la valeur de QUORUM_MEMBER_COUNT que vous avez utilisée précédemment.
  2. Affichez l'état de la proposition et attendez qu'il passe à PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de votre instance.
    • PROPOSAL_ID : identifiant de la proposition (par exemple, set-up-2fa).
    • LOCATION : emplacement où vous avez créé votre instance.

    Lorsque l'état est PENDING, vous pouvez signer les défis.

  3. Obtenez les défis de la proposition. Pour provisionner une instance Cloud HSM à locataire unique, vous devez obtenir des défis signés de tous les membres du quorum.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Cette commande renvoie un tableau de défis au format JSON.

  4. Pour chaque clé, décodez le défi à l'aide de `basenc --base64url -d` et signez-le avec la clé privée correspondante.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Remplacez les éléments suivants :

    • N : numéro du défi (par exemple, 1 pour le premier défi, 2 pour le deuxième, etc.).
    • CHALLENGE_N : contenu du défi numéro N à partir du résultat de l'étape précédente.
    • PRIVATE_KEY_N : chemin d'accès à la clé privée numéro N (par exemple, rsaprivate1.pem pour le premier défi).
  5. Approuvez la proposition en important les défis signés. Vous pouvez les importer en une ou plusieurs commandes. Cette étape nécessite le rôle Membre du quorum du HSM à locataire unique Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Remplacez SIGNED_QUORUM_CHALLENGE_LIST par un tableau de défis au format JSON, où chaque élément de la liste est un tuple contenant le chemin d'accès au défi signé et le chemin d'accès à la clé publique correspondante. Par exemple, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] permet d'envoyer les deux premiers défis signés en une seule commande.

    Une fois que vous avez importé le nombre requis de défis signés, l'état de la proposition passe à APPROVED.

  6. Une fois la proposition approuvée, utilisez la commande execute pour terminer l'opération register_two_factor_auth_keys. Cette étape nécessite le rôle Exécuteur du HSM à locataire unique Cloud KMS et doit être effectuée dans les 24 heures suivant la création de la proposition.

        gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID 
    --single_tenant_hsm_instance INSTANCE_ID --location LOCATION

    Il s'agit d'une opération de longue durée qui provisionne les utilisateurs et crée des sauvegardes. L'instance devient ACTIVE au bout de 20 à 30 minutes.

  7. Une fois l'instance ACTIVE, affichez ses détails pour voir le disableDate :

        gcloud kms single-tenant-hsm describe INSTANCE_ID 
    --location=LOCATION

    Notez le disableDate de l'instance. Vous devez effectuer une opération refresh_single_tenant_hsm_instance avant cette heure, sinon votre instance sera désactivée.

Afficher les instances

Les utilisateurs disposant de l'un des rôles suivants peuvent afficher la liste des instances Cloud HSM à locataire unique et leur état :

  • Proposeur du HSM à locataire unique Cloud KMS
  • Membre du quorum du HSM à locataire unique Cloud KMS
  • Exécuteur du HSM à locataire unique Cloud KMS
  • Lecteur Cloud KMS
  • Administrateur Cloud KMS

Veillez à vérifier régulièrement l'état de vos instances. Les instances doivent être actualisées régulièrement pour rester actives.

Les instances à l'état Active peuvent être utilisées. Les développeurs qui doivent créer ou importer des clés dans des instances Cloud HSM à locataire unique ont besoin de l'identifiant de ressource de l'instance. L'identifiant de ressource utilise le format suivant :

projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME

Pour afficher les instances de votre organisation et trouver leurs identifiants de ressources, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Infrastructure KMS.

    Accéder à l'infrastructure KMS

  2. Sur la fiche Instance HSM à locataire unique, cliquez sur Afficher. La page Instance HSM à locataire unique affiche la liste de toutes les instances Cloud HSM à locataire unique que vous êtes autorisé à afficher.

  3. Pour afficher les détails d'une instance, cliquez sur son nom. La page Informations sur l'instance HSM à locataire unique affiche des informations sur l'instance sélectionnée, y compris l'identifiant de ressource complet de l'instance et la liste des propositions créées pour l'instance.

  4. Facultatif : Pour afficher ou télécharger les clés publiques associées aux clés d'authentification à deux facteurs (A2F) actuelles de vos membres du quorum, cliquez sur Obtenir la clé publique. Vous pouvez comparer les clés publiques avec vos clés privées d'authentification à deux facteurs pour vérifier quelles clés de contrôle sont actives.

gcloud

Affichez la liste des instances existantes à l'aide de la méthode kms single-tenant-hsm list.

gcloud kms single-tenant-hsm list projects/PROJECT_ID/locations/LOCATION

Remplacez les éléments suivants :

  • PROJECT_ID : identifiant du projet dans lequel vous souhaitez afficher les instances Cloud HSM à locataire unique.
  • LOCATION : emplacement où vous souhaitez afficher les instances Cloud HSM à locataire unique.

Affichez les détails d'une instance existante à l'aide de la méthode kms single-tenant-hsm describe.

gcloud kms single-tenant-hsm describe --location=LOCATION \
    --singletenanthsminstance=INSTANCE_ID

Remplacez les éléments suivants :

  • LOCATION : emplacement où vous souhaitez afficher les instances Cloud HSM à locataire unique.
  • INSTANCE_ID : instance dont vous souhaitez afficher les détails.

Utiliser l'instance

Tant que votre instance est ACTIVE, vous pouvez créer et utiliser des clés. Vous pouvez créer des clés Cloud HSM à locataire unique sur n'importe quel trousseau de clés existant dans le même emplacement qu'une instance Cloud HSM à locataire unique active.

Pour créer des clés Cloud HSM à locataire unique, vous devez disposer du rôle Créateur de clés du HSM à locataire unique Cloud KMS en plus du rôle Administrateur Cloud KMS.

Une fois créées, les clés Cloud HSM à locataire unique ne nécessitent pas d'autorisations spéciales.

Créer une clé

Lorsque vous créez une clé Cloud HSM à locataire unique, vous devez spécifier l'instance Cloud HSM à locataire unique dans laquelle vous souhaitez la créer. Autrement, le processus est semblable à celui de la création de n'importe quelle autre clé. Pour obtenir des instructions détaillées, consultez Créer une clé.

Importer une clé

Lorsque vous importez du matériel de clé dans une clé Cloud HSM à locataire unique, vous devez spécifier l'instance Cloud HSM à locataire unique dans laquelle vous souhaitez le stocker. Autrement, le processus est semblable à l'importation de n'importe quelle autre clé. Pour obtenir des instructions détaillées, consultez Importer une version de clé dans Cloud Key Management Service.

Utiliser une clé

Une fois la clé créée, l'utilisation d'une clé Cloud HSM à locataire unique est identique à celle de toute autre clé Cloud HSM. Vous n'avez pas besoin de spécifier l'instance Cloud HSM à locataire unique pour utiliser la clé.

Gérer une instance

Une fois votre instance provisionnée, vous êtes responsable de sa maintenance. Vous gérez l'instance en créant des propositions d'opérations de maintenance, en obtenant l'approbation du quorum, puis en exécutant l'opération approuvée. Une seule proposition peut être active à la fois. Si vous choisissez de ne pas donner suite à une proposition, vous ne pouvez pas proposer une autre opération tant que vous n'avez pas supprimé la proposition active ou que la proposition n'a pas expiré.

Vous devez actualiser votre instance avant le disableDate. Si vous devez vérifier le disableDate d'une instance, vous pouvez afficher les détails de l'instance.

Afficher les propositions d'instances

Pour afficher les propositions d'une instance, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Infrastructure KMS.

    Accéder à l'infrastructure KMS

  2. Sur la fiche Instance HSM à locataire unique, cliquez sur Afficher. La page Instance HSM à locataire unique affiche la liste de toutes les instances Cloud HSM à locataire unique que vous êtes autorisé à afficher.

  3. Recherchez l'instance pour laquelle vous souhaitez afficher les propositions, puis cliquez sur son nom. La page Détails de l'instance HSM à locataire unique affiche des informations sur l'instance, y compris la liste des propositions créées pour l'instance.

  4. Facultatif : Pour filtrer la liste des suggestions, cliquez sur la barre Filtrer et saisissez vos critères de filtrage. Par exemple, vous pouvez filtrer la liste pour n'afficher que la proposition en attente d'approbation ou celles qui ont été finalisées.

gcloud

  • Affichez la liste des propositions existantes à l'aide de la méthode kms single-tenant-hsm proposal list.

    gcloud kms single-tenant-hsm proposal list --location=LOCATION \
        --singletenanthsminstance=INSTANCE_ID

    Remplacez les éléments suivants :

    • LOCATION : emplacement où vous souhaitez afficher les instances Cloud HSM à locataire unique.
    • INSTANCE_ID : identifiant de l'instance Cloud HSM à locataire unique pour laquelle vous souhaitez afficher les propositions.

Actualiser une instance

Vous pouvez actualiser une instance pour la maintenir à jour et éviter les temps d'arrêt imprévus. Cette opération nécessite une authentification par quorum. Une fois la proposition approuvée, l'opération prend environ 15 à 30 minutes.

Lorsque vous actualisez une instance, la valeur disableDate est définie sur 120 jours à compter de la date de l'actualisation.

  1. Créez une proposition pour actualiser l'instance à l'aide du type d'opération refresh_single_tenant_hsm_instance. Cette étape nécessite le rôle Proposeur du HSM à locataire unique Cloud KMS.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type refresh_single_tenant_hsm_instance
        

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de l'instance.
    • LOCATION : emplacement où vous avez créé l'instance.
    • PROPOSAL_ID : identifiant unique que vous souhaitez utiliser pour cette proposition (par exemple, refresh_instance).
  2. Affichez l'état de la proposition et attendez qu'il passe à PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de votre instance.
    • PROPOSAL_ID : identifiant de la proposition (par exemple, refresh_instance).
    • LOCATION : emplacement où vous avez créé votre instance.

    Lorsque l'état est PENDING, vous pouvez signer les défis.

  3. Récupérez les défis de la proposition.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Cette commande renvoie un tableau de défis au format JSON.

  4. Pour chaque défi renvoyé à l'étape précédente, décodez-le à l'aide de basenc --base64url -d et signez-le avec une clé privée.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Remplacez les éléments suivants :

    • N : numéro du défi (par exemple, 1 pour le premier défi, 2 pour le deuxième, etc.).
    • CHALLENGE_N : contenu du défi numéro N à partir du résultat de l'étape précédente.
    • PRIVATE_KEY_N : chemin d'accès à la clé privée numéro N (par exemple, rsaprivate1.pem pour le premier défi).
  5. Approuvez la proposition en important les défis signés. Vous pouvez les importer en une ou plusieurs commandes. Cette étape nécessite le rôle Membre du quorum du HSM à locataire unique Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Remplacez SIGNED_QUORUM_CHALLENGE_LIST par un tableau de défis au format JSON, où chaque élément de la liste est un tuple contenant le chemin d'accès au défi signé et le chemin d'accès à la clé publique correspondante. Par exemple, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] permet d'envoyer les deux premiers défis signés en une seule commande.

    Une fois que vous avez importé le nombre requis de défis signés, l'état de la proposition passe à APPROVED.

  6. Exécutez la proposition. Cette étape nécessite le rôle Exécuteur du HSM à locataire unique Cloud KMS et doit être effectuée dans les 24 heures suivant la création de la proposition.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Une fois l'opération terminée, l'instance reste à l'état `ACTIVE` et disableDate est défini sur 120 jours à compter de la date d'actualisation.

Ajouter un membre du quorum

Vous pouvez ajouter un membre du quorum à une instance. Cette opération nécessite une authentification par quorum. Une fois la proposition approuvée, l'opération prend environ 15 à 30 minutes.

  1. Générez une paire de clés RSA-2048 pour le nouveau membre du quorum. Suivez les normes de votre organisation pour créer des paires de clés RSA-2048 sur des jetons physiques.

    Stockez la clé privée de manière sécurisée. Vous en aurez besoin pour approuver les propositions. Conservez la clé publique à portée de main. Vous en aurez besoin pour ajouter le nouveau membre du quorum à l'instance Cloud HSM à locataire unique.

  2. Créez une proposition pour ajouter un membre du quorum à l'instance à l'aide de l'opération add_quorum_member. Cette étape nécessite le rôle Proposeur du HSM à locataire unique Cloud KMS.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type add_quorum_member \
            --two_factor_public_key_pem PATH_TO_PUBLIC_KEY
        

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de l'instance.
    • LOCATION : emplacement où vous avez créé l'instance.
    • PROPOSAL_ID : identifiant unique que vous souhaitez utiliser pour cette proposition (par exemple, add_quorum_member).
    • PATH_TO_PUBLIC_KEY : chemin d'accès à la nouvelle clé publique (par exemple, rsapub4.pem).
  3. Affichez l'état de la proposition et attendez qu'il passe à PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de votre instance.
    • PROPOSAL_ID : identifiant de la proposition (par exemple, add_quorum_member).
    • LOCATION : emplacement où vous avez créé votre instance.

    Lorsque l'état est PENDING, vous pouvez signer les défis.

  4. Récupérez les défis de la proposition. Pour ajouter un membre au quorum, il faut que le nouveau membre envoie une demande signée avec la nouvelle clé, et qu'un quorum de membres existants envoie également une demande signée.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](requiredActionQuorumParameters.requiredChallenges,requiredActionQuorumParameters.quorumChallenges)"
      

    Cette commande renvoie un tableau de défis au format JSON. Le champ requiredActionQuorumParameters.requiredChallenges contient un challenge pour la nouvelle clé que vous enregistrez. Le champ requiredActionQuorumParameters.quorumChallenges contient des défis pour un quorum des clés existantes. Vous devez signer tous les défis dans l'objet requiredActionQuorumParameters.

  5. Pour chaque défi renvoyé à l'étape précédente, décodez-le à l'aide de basenc --base64url -d et signez-le avec une clé privée.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Remplacez les éléments suivants :

    • N : numéro du défi (par exemple, 1 pour le premier défi, 2 pour le deuxième, etc.).
    • CHALLENGE_N : contenu du défi numéro N à partir du résultat de l'étape précédente.
    • PRIVATE_KEY_N : chemin d'accès à la clé privée numéro N (par exemple, rsaprivate1.pem pour le premier défi).
  6. Approuvez la proposition en important les défis signés. Vous pouvez les importer en une ou plusieurs commandes. Cette étape nécessite le rôle Membre du quorum du HSM à locataire unique Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST" \
          --required-challenge-replies="SIGNED_REQUIRED_CHALLENGE_LIST"
      

    Remplacez les éléments suivants :

    • SIGNED_QUORUM_CHALLENGE_LIST : tableau au format JSON de défis signés à l'aide de clés privées déjà enregistrées, où chaque élément de la liste est un tuple contenant le chemin d'accès au défi signé et le chemin d'accès à la clé publique correspondante (par exemple, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] pour envoyer les deux premiers défis signés en une seule commande).
    • SIGNED_REQUIRED_CHALLENGE_LIST : tableau au format JSON contenant le défi signé à l'aide de la nouvelle clé privée, où le seul élément de la liste est un tuple contenant le chemin d'accès au défi signé et le chemin d'accès à la clé publique correspondante (par exemple, [('signed-challenge-newkey.txt','rsapub-newkey.pem')]).

    Une fois que vous avez importé le nombre requis de défis signés, l'état de la proposition passe à APPROVED.

  7. Exécutez la proposition. Cette étape nécessite le rôle Exécuteur du HSM à locataire unique Cloud KMS et doit être effectuée dans les 24 heures suivant la création de la proposition.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Une fois l'opération terminée, le nouveau membre du quorum peut participer aux défis pour approuver les propositions. La clé publique que vous avez ajoutée est désormais incluse dans la liste des clés publiques dans les détails de l'instance.

Supprimer un membre du quorum

Si vous avez plus de membres du quorum que la taille de quorum requise, vous pouvez en supprimer un d'une instance. Cette opération nécessite une authentification par quorum. Une fois la proposition approuvée, l'opération prend environ 15 à 30 minutes.

  1. Créez une proposition pour supprimer un membre du quorum de l'instance à l'aide de l'opération remove_quorum_member. Cette étape nécessite le rôle Proposeur du HSM à locataire unique Cloud KMS.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type remove_quorum_member \
            --two_factor_public_key_pem PATH_TO_PUBLIC_KEY
        

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de l'instance.
    • LOCATION : emplacement où vous avez créé l'instance.
    • PROPOSAL_ID : identifiant unique que vous souhaitez utiliser pour cette proposition (par exemple, remove_quorum_member).
    • PATH_TO_PUBLIC_KEY : chemin d'accès à la clé publique que vous souhaitez supprimer de l'instance, par exemple rsapub3.pem. Une fois l'opération terminée, la clé privée correspondante ne peut plus être utilisée pour approuver les propositions.
  2. Affichez l'état de la proposition et attendez qu'il passe à PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de votre instance.
    • PROPOSAL_ID : identifiant de la proposition (par exemple, remove_quorum_member).
    • LOCATION : emplacement où vous avez créé votre instance.

    Lorsque l'état est PENDING, vous pouvez signer les défis.

  3. Récupérez les défis de la proposition.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Cette commande renvoie un tableau de défis au format JSON.

  4. Pour chaque défi renvoyé à l'étape précédente, décodez-le à l'aide de basenc --base64url -d et signez-le avec une clé privée.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Remplacez les éléments suivants :

    • N : numéro du défi (par exemple, 1 pour le premier défi, 2 pour le deuxième, etc.).
    • CHALLENGE_N : contenu du défi numéro N à partir du résultat de l'étape précédente.
    • PRIVATE_KEY_N : chemin d'accès à la clé privée numéro N (par exemple, rsaprivate1.pem pour le premier défi).
  5. Approuvez la proposition en important les défis signés. Vous pouvez les importer en une ou plusieurs commandes. Cette étape nécessite le rôle Membre du quorum du HSM à locataire unique Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Remplacez SIGNED_QUORUM_CHALLENGE_LIST par un tableau de défis au format JSON, où chaque élément de la liste est un tuple contenant le chemin d'accès au défi signé et le chemin d'accès à la clé publique correspondante. Par exemple, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] permet d'envoyer les deux premiers défis signés en une seule commande.

    Une fois que vous avez importé le nombre requis de défis signés, l'état de la proposition passe à APPROVED.

  6. Exécutez la proposition. Cette étape nécessite le rôle Exécuteur du HSM à locataire unique Cloud KMS et doit être effectuée dans les 24 heures suivant la création de la proposition.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Une fois l'opération terminée, le membre du quorum supprimé ne peut plus participer aux défis pour approuver les propositions. La clé publique que vous avez supprimée ne figure plus dans la liste des clés publiques des détails de l'instance.

Désactiver une instance

Vous pouvez désactiver une instance pour bloquer temporairement l'accès à toutes ses clés. Cette opération nécessite une authentification par quorum. Une fois la proposition approuvée, l'opération prend environ 15 à 30 minutes.

Lorsqu'une instance est désactivée, les clés qui y sont stockées apparaissent toujours comme ACTIVE, mais sont inutilisables. Toute tentative d'opération de chiffrement avec une clé dans une instance désactivée entraîne une erreur.

  1. Créez une proposition pour désactiver l'instance à l'aide du type d'opération disable_single_tenant_hsm_instance. Cette étape nécessite le rôle Proposeur du HSM à locataire unique Cloud KMS.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type disable_single_tenant_hsm_instance
        

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de l'instance.
    • LOCATION : emplacement où vous avez créé l'instance.
    • PROPOSAL_ID : identifiant unique que vous souhaitez utiliser pour cette proposition (par exemple, disable_instance).
  2. Affichez l'état de la proposition et attendez qu'il passe à PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de votre instance.
    • PROPOSAL_ID : identifiant de la proposition (par exemple, disable_instance).
    • LOCATION : emplacement où vous avez créé votre instance.

    Lorsque l'état est PENDING, vous pouvez signer les défis.

  3. Récupérez les défis de la proposition.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Cette commande renvoie un tableau de défis au format JSON.

  4. Pour chaque défi renvoyé à l'étape précédente, décodez-le à l'aide de basenc --base64url -d et signez-le avec une clé privée.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Remplacez les éléments suivants :

    • N : numéro du défi (par exemple, 1 pour le premier défi, 2 pour le deuxième, etc.).
    • CHALLENGE_N : contenu du défi numéro N à partir du résultat de l'étape précédente.
    • PRIVATE_KEY_N : chemin d'accès à la clé privée numéro N (par exemple, rsaprivate1.pem pour le premier défi).
  5. Approuvez la proposition en important les défis signés. Vous pouvez les importer en une ou plusieurs commandes. Cette étape nécessite le rôle Membre du quorum du HSM à locataire unique Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Remplacez SIGNED_QUORUM_CHALLENGE_LIST par un tableau de défis au format JSON, où chaque élément de la liste est un tuple contenant le chemin d'accès au défi signé et le chemin d'accès à la clé publique correspondante. Par exemple, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] permet d'envoyer les deux premiers défis signés en une seule commande.

    Une fois que vous avez importé le nombre requis de défis signés, l'état de la proposition passe à APPROVED.

  6. Exécutez la proposition. Cette étape nécessite le rôle Exécuteur du HSM à locataire unique Cloud KMS et doit être effectuée dans les 24 heures suivant la création de la proposition.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Une fois l'opération terminée, l'instance reste à l'état DISABLED et ne peut pas être utilisée tant qu'elle n'est pas réactivée.

Activer une instance

Vous pouvez réactiver une instance DISABLED pour restaurer l'accès à celle-ci et à ses clés. Cette opération nécessite une authentification par quorum. Une fois la proposition approuvée, l'opération prend environ 15 à 30 minutes.

  1. Créez une proposition pour activer l'instance à l'aide du type d'opération enable_single_tenant_hsm_instance. Cette étape nécessite le rôle Proposeur du HSM à locataire unique Cloud KMS.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type enable_single_tenant_hsm_instance
        

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de l'instance.
    • LOCATION : emplacement où vous avez créé l'instance.
    • PROPOSAL_ID : identifiant unique que vous souhaitez utiliser pour cette proposition (par exemple, enable_instance).
  2. Affichez l'état de la proposition et attendez qu'il passe à PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de votre instance.
    • PROPOSAL_ID : identifiant de la proposition (par exemple, enable_instance).
    • LOCATION : emplacement où vous avez créé votre instance.

    Lorsque l'état est PENDING, vous pouvez signer les défis.

  3. Récupérez les défis de la proposition.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Cette commande renvoie un tableau de défis au format JSON.

  4. Pour chaque défi renvoyé à l'étape précédente, décodez-le à l'aide de basenc --base64url -d et signez-le avec une clé privée.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Remplacez les éléments suivants :

    • N : numéro du défi (par exemple, 1 pour le premier défi, 2 pour le deuxième, etc.).
    • CHALLENGE_N : contenu du défi numéro N à partir du résultat de l'étape précédente.
    • PRIVATE_KEY_N : chemin d'accès à la clé privée numéro N (par exemple, rsaprivate1.pem pour le premier défi).
  5. Approuvez la proposition en important les défis signés. Vous pouvez les importer en une ou plusieurs commandes. Cette étape nécessite le rôle Membre du quorum du HSM à locataire unique Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Remplacez SIGNED_QUORUM_CHALLENGE_LIST par un tableau de défis au format JSON, où chaque élément de la liste est un tuple contenant le chemin d'accès au défi signé et le chemin d'accès à la clé publique correspondante. Par exemple, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] permet d'envoyer les deux premiers défis signés en une seule commande.

    Une fois que vous avez importé le nombre requis de défis signés, l'état de la proposition passe à APPROVED.

  6. Exécutez la proposition. Cette étape nécessite le rôle Exécuteur du HSM à locataire unique Cloud KMS et doit être effectuée dans les 24 heures suivant la création de la proposition.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Une fois l'opération terminée, l'instance revient à l'état "ACTIVE" et disableDate est défini sur 120 jours à compter de la date d'actualisation.

Supprimer une instance

Vous pouvez supprimer une instance pour la détruire définitivement, ainsi que ses clés. Cette opération nécessite une authentification par quorum. Une fois la proposition approuvée, l'opération prend environ 15 à 30 minutes.

Une fois une instance supprimée, les clés qui y sont stockées apparaissent toujours comme ACTIVE, mais elles sont inutilisables. Toute tentative d'opération de cryptographie avec une clé dans une instance supprimée entraîne une erreur.

  1. Créez une proposition de suppression de l'instance à l'aide du type d'opération delete_single_tenant_hsm_instance. Cette étape nécessite le rôle Proposeur du HSM à locataire unique Cloud KMS.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type delete_single_tenant_hsm_instance
        

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de l'instance que vous souhaitez supprimer.
    • LOCATION : emplacement où vous avez créé l'instance.
    • PROPOSAL_ID : identifiant unique que vous souhaitez utiliser pour cette proposition (par exemple, delete_instance).
  2. Affichez l'état de la proposition et attendez qu'il passe à PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de votre instance.
    • PROPOSAL_ID : identifiant de la proposition (par exemple, delete_instance).
    • LOCATION : emplacement où vous avez créé votre instance.

    Lorsque l'état est PENDING, vous pouvez signer les défis.

  3. Récupérez les défis de la proposition.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Cette commande renvoie un tableau de défis au format JSON.

  4. Pour chaque défi renvoyé à l'étape précédente, décodez-le à l'aide de basenc --base64url -d et signez-le avec une clé privée.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Remplacez les éléments suivants :

    • N : numéro du défi (par exemple, 1 pour le premier défi, 2 pour le deuxième, etc.).
    • CHALLENGE_N : contenu du défi numéro N à partir du résultat de l'étape précédente.
    • PRIVATE_KEY_N : chemin d'accès à la clé privée numéro N (par exemple, rsaprivate1.pem pour le premier défi).
  5. Approuvez la proposition en important les défis signés. Vous pouvez les importer en une ou plusieurs commandes. Cette étape nécessite le rôle Membre du quorum du HSM à locataire unique Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Remplacez SIGNED_QUORUM_CHALLENGE_LIST par un tableau de défis au format JSON, où chaque élément de la liste est un tuple contenant le chemin d'accès au défi signé et le chemin d'accès à la clé publique correspondante. Par exemple, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] permet d'envoyer les deux premiers défis signés en une seule commande.

    Une fois que vous avez importé le nombre requis de défis signés, l'état de la proposition passe à APPROVED.

  6. Assurez-vous de vouloir supprimer l'instance et de crypto-supprimer toutes les données chiffrées à l'aide des clés créées dans cette instance, puis exécutez la proposition. Cette étape nécessite le rôle Exécuteur du HSM à locataire unique Cloud KMS et doit être effectuée dans les 24 heures suivant la création de la proposition.

    Avertissement : La commande suivante est irréversible. Vous risquez de perdre définitivement vos données. Google ne peut pas vous aider à récupérer les clés d'une instance supprimée.
        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Une fois l'opération terminée, l'instance est supprimée.

Supprimer une proposition

Si vous décidez de ne pas approuver ni exécuter une proposition, vous pouvez la supprimer avant son expiration. Si vous supprimez une proposition en attente, vous ne pourrez pas l'approuver et vous pourrez créer une autre proposition. Si vous supprimez une proposition approuvée, vous ne pourrez pas exécuter l'opération.

  • Supprimez une proposition à l'aide de la commande proposal delete. Pour cela, vous devez disposer du rôle Proposeur du HSM à locataire unique Cloud KMS.

        gcloud kms single-tenant-hsm proposal delete PROPOSAL_ID \
            --location LOCATION \
            --single_tenant_hsm_instance INSTANCE_ID
        

    Remplacez les éléments suivants :

    • INSTANCE_ID : identifiant de l'instance.
    • LOCATION : emplacement où vous avez créé l'instance.
    • PROPOSAL_ID : identifiant unique de la proposition que vous souhaitez supprimer (par exemple, proposal_to_delete).

Étapes suivantes