Activation de la deuxième couche d'authentification pour les connexions EP11-Plan Standard uniquement

Pour garantir le contrôle exclusif de l'exécution des opérations de chiffrement, vous pouvez utiliser l'interface de ligne de commande du gestionnaire de certificats Hyper Protect Crypto Services pour activer la deuxième couche d'authentification pour les connexions EP11 (API GREP11 ou PKCS #11). En activant cette fonction, vous ajoutez une couche supplémentaire de contrôle d'accès sur le jeton IAM (Identity and Access Management) aux applications EP11. Une connexion TLS mutuelle est établie pour s'assurer que seules les applications EP11 avec un certificat client valide peuvent effectuer des opérations EP11.

La deuxième couche d'authentification pour les connexions EP11 n'est actuellement prise en charge que par le plan standard Hyper Protect Crypto Services.

Meilleures pratiques de sécurité et de disponibilité pour l'activation de l'authentification TLS mutuelle

Avec le protocole TLS mutuel comme deuxième couche d'authentification pour accéder à EP11, vous devez être conscient des considérations suivantes en matière de sécurité et de disponibilité :

  • Si vous devez empêcher certaines personnes d'accéder à EP11, séparez les administrateurs de certificats des utilisateurs du service. Contrôle de l'accès en affectant le rôle de_gestionnaire de certificat_ uniquement aux personnes qui gèrent les certificats client, et en affectant d'autres utilisateurs de services aux rôles correspondants pour l'utilisation opérationnelle. Pour gérer l'accès utilisateur, vous devez être affecté au rôle d'administrateur avec l'accès à la gestion des comptes.
  • Les API EP11 ne sont pas accessibles si vous utilisez des certificats client non valides ou des clés privées non disponibles pour signer les certificats client. Pour garantir la disponibilité, affectez plus d'une personne au rôle de_gestionnaire de certificat_ en tant qu'alternative. Les administrateurs de certificats doivent conserver en toute sécurité leurs clés privées uniques d'administrateur. Les administrateurs de certificats doivent également gérer une sauvegarde de tous les certificats client en dehors de l'instance Hyper Protect Crypto Services, par exemple, en utilisant IBM Cloud Secrets Manager. Il est également conseillé de surveiller l'expiration des certificats.

Avant de commencer

Avant de pouvoir activer la deuxième couche d'authentification pour les connexions GREP11 ou API PKCS #11, assurez-vous de remplir les conditions prérequises suivantes :

  1. Le rôle IAM de gestionnaire de certificat vous est affecté pour effectuer les actions correspondantes. Pour plus d'informations sur l'affectation de rôles IAM, voir Managing user access et Managing access to resources.

  2. Votre poste de travail comporte un certificat client préparé qui est utilisé pour l'authentification TLS. Il est conseillé d'utiliser IBM Cloud Secrets Manager pour gérer les certificats SSL/TLS de vos applications et services. Il est gratuit et fournit un stockage permanent pour vos certificats.

  3. Installez l'interface de ligne de commande IBM Cloud.

  4. Installez le dernier plug-in de l'interface de ligne de commande du gestionnaire de certificats à l'aide de la commande suivante :

    ibmcloud plugin install hpcs-cert-mgr
    
  5. Connectez-vous à IBM Cloud à l'aide de l'interface de ligne de commande. Si vous disposez de plusieurs comptes, sélectionnez celui avec lequel votre instance de service est créée. Vérifiez que vous vous connectez à la région et au groupe de ressources appropriés, dans lesquels se trouve l'instance de service, à l'aide de la commande suivante :

    ibmcloud target -r <region> -g <resource_group>
    

Etape 1 : Configurer la clé de signature de l'administrateur

Pour activer la deuxième couche d'authentification, vous devez d'abord configurer la clé de signature de l'administrateur. La clé de signature est utilisée pour vous connecter à votre serveur de gestionnaire de certificats d'instance qui traite les commandes de l'interface de ligne de commande du gestionnaire de certificats.

  1. Générez la paire de clés de signature à l'aide de la commande suivante :

    ibmcloud hpcs-cert-mgr adminkey set --crn HPCS_CRN [--private]
    

    Remplacez la variable HPCS_CRN par le nom de ressource de cloud (CRN) de votre instance Hyper Protect Crypto Services. Vous pouvez utiliser la commande ibmcloud resource service-instances --long pour extraire le CRN. Le paramètre --private est facultatif. Si vous utilisez cette option, l'URL du serveur du gestionnaire de certificats pointe vers le nœud final privé et vous devez utiliser le réseau privé pour connecter votre instance de service.

    Après l'exécution de cette commande, une paire de clés publique et privée est générée et stockée sur votre poste de travail local. Le chemin d'accès au fichier par défaut est /Users/<username>/.hpcs-cert-mgr-cfg/. Vérifiez que vous stockez la clé de signature en toute sécurité, par exemple avec une protection par mot de passe. La clé publique est automatiquement téléchargée sur votre serveur de gestionnaire de certificats d'instance pour vérification de signature.

    Si vous souhaitez actualiser et mettre à jour votre clé de signature, vous pouvez utiliser la commande ibmcloud hpcs-cert-mgr adminkey update pour exécuter l'action. Pour plus d'informations sur l'utilisation de l'interface de ligne de commande, voir le document de référence de l'interface de ligne de commande du gestionnaire de certificats Hyper Protect Crypto Services.

  2. (Facultatif) Vérifiez et confirmez que la clé publique est téléchargée sur le serveur à l'aide de la commande suivante :

    ibmcloud hpcs-cert-mgr adminkey get --crn HPCS_CRN [--private]
    

    Si cette commande renvoie la valeur de clé publique, cela signifie que vous avez téléchargé la clé publique avec succès.

Étape 2 : Configuration du certificat de l'autorité de certification client pour l'authentification

Après avoir configuré la clé de signature de l'administrateur, vous devez télécharger le certificat de l'autorité de certificationA trusted third-party organization or company that issues the digital certificates. The certificate authority typically verifies the identity of the individuals who are granted the unique certificate. client sur votre serveur de gestionnaire de certificat d'instance pour l'authentification du client TLS.

Après avoir configuré le certificat de l'autorité de certification du client, vous ne pouvez plus accéder aux magasins de clés EP11 et aux clés EP11 via l'interface utilisateur.

  1. (Facultatif) Préparez les autorités de certification de CA et les certificats de client

    Vous pouvez générer des certificats de CA pour l'infrastructure GREP11 à l'aide de l'utilitaire OpenSSL.

    Assurez-vous d'installer OpenSSL sur un poste de travail que vous pouvez utiliser pour générer les certificats. Suivez les étapes suivantes sur votre poste de travail:

    1. Générez la clé CA en exécutant la commande suivante :
      openssl genrsa -out ca.key 2048
      
    2. Créez le certificat de CA en exécutant la commande suivante :
      openssl req -new -x509 -key ca.key -days 730 -out ca.pem
      
    3. Créez la clé client en exécutant la commande suivante :
      openssl genrsa -out client-key.pem 2048
      
    4. Créez la demande de signature de certificat client en exécutant la commande suivante :
      openssl req -new -key client-key.pem -out client.csr
      
    5. Créez le certificat client en exécutant la commande suivante :
      openssl x509 -req -days 730 -in client.csr -CA ca.pem -CAcreateserial -CAkey ca.key -out client.pem
      
  2. Téléchargez le certificat de l'autorité de certification client sur le serveur à l'aide de la commande suivante :

    Si votre certificat client est signé par un certificat de CA intermédiaire dans une chaîne de certificats, vous devez télécharger ce certificat d'autorité de certification intermédiaire.

    ibmcloud hpcs-cert-mgr cert set --crn HPCS_CRN --admin-priv-key ADMIN_PRIV_KEY --cert-id CERT_ID --cert CERT_FILE [--private]
    

    Remplacez les variables de l'exemple de demande conformément au tableau suivant :

    Tableau 1. Décrit les variables nécessaires pour télécharger le certificat TLS
    Variables Description
    HPCS_CRN Obligatoire. Nom de ressource de cloud (CRN) de votre instance Hyper Protect Crypto Services. Vous pouvez utiliser la commande ibmcloud resource service-instances --long pour extraire le CRN.
    ADMIN_PRIV_KEY Obligatoire. Chemin de fichier de votre clé privée actuelle sur votre poste de travail local que vous générez ou mettez à jour dans l'étape 1. La clé privée est utilisée pour signer cette action de commande vers votre serveur de gestionnaire de certificats d'instance.
    CERT_ID Obligatoire. L'ID de chaîne que vous souhaitez affecter au certificat de l'autorité de certification client pour une identification facile.
    CERT_FILE Obligatoire. Chemin d'accès au fichier du certificat de l'autorité de certification client sur votre poste de travail local.

    Le paramètre --private est facultatif. Si vous utilisez cette option, l'URL du serveur du gestionnaire de certificats pointe vers le nœud final privé et vous devez utiliser le réseau privé pour connecter votre instance de service.

  3. (Facultatif) Vérifiez et confirmez que le certificat de l'autorité de certification client est téléchargé sur le serveur à l'aide de la commande suivante :

    ibmcloud hpcs-cert-mgr cert list --crn HPCS_CRN [--private]
    

    Cette commande répertorie tous les certificats d'autorité de certification client disponibles qui sont gérés par vous sur le serveur. Si la liste contient le certificat précédemment téléchargé, cela signifie que l'action a abouti.

Etape 3 : Etablir des connexions TLS mutuelles pour les applications EP11

Après que vous ayez défini la clé de signature de l'administrateur et le certificat de l'autorité de certification du client, les utilisateurs EP11 peuvent établir des connexions TLS mutuelles pour les applications qui utilisent GREP11 ou l'interface de programmation PKCS #11. Avant que les utilisateurs de EP11 puissent le faire, ils doivent configurer les applications GREP11 ou PKCS #11 avec le certificat client.

Pour utiliser GREP11 ou l'API PKCS #11, assurez-vous que les rôles IAM appropriés sont affectés aux utilisateurs de EP11 pour effectuer des opérations EP11. Pour plus d'informations, voir l'onglet des API HSM dans Rôles d'accès aux services IAM.

  • Configurer des applications GREP11

    Selon le langage de programmation que vous utilisez pour l'application GREP11, la méthode de configuration varie en fonction du package gRPC correspondant. Vous trouverez ci-dessous des exemples pour Golang et JavaScript.

    • Exemple de fragment de code Golang

      cert, _ := tls.LoadX509KeyPair("client.pem", "client-key.pem")
      var callOpts = []grpc.DialOption{
        grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{Certificates: []tls.Certificate{cert}}))
      }
      

      Le tls.Config{} doit être correctement défini en fonction du Structure de type Config. Vous devez définir au moins la zone Certificates. Assurez-vous d'utiliser votre clé client et votre certificat client. Pour obtenir l'exemple de code Golang complet, voir The sample GitHub repository for Golang.

    • Exemple de fragment de code JavaScript

      credentials.push(grpc.credentials.createSsl());
      

      Vous pouvez vous reporter à la documentation du module Données d'identification pour obtenir des informations détaillées sur les fonctions et les paramètres. Vous devez définir les paramètres private_key et cert_chain pour la fonction createSsl(). Pour obtenir l'exemple de code JavaScript complet, voir The sample GitHub repository for JavaScript.

  • Configurer des applications PKCS #11

    PKCS #11 traite le TLS mutuel dans son fichier de configuration. Mettez à jour la zone tls conformément à l'exemple suivant :

    tls:
      enabled: true
      mutual: true
      cacert:
      certfile: "<client_certificate>"
      keyfile: "<client_certificate_private_key>"
    

    Remplacez les variables dans l'exemple en fonction du tableau suivant :

    Tableau 3. Décrit les variables nécessaires à la configuration des applications PKCS #11
    Variables Description
    client_certificate Obligatoire. Chemin d'accès au fichier du certificat client téléchargé sur le serveur par l'administrateur de certificats.
    client_certificate_private_key Obligatoire. Chemin d'accès au fichier de la clé privée du certificat client utilisée pour signer le certificat.

Après la configuration, lorsque les applications utilisent GREP11 ou l'API PKCS #11 pour effectuer des opérations de chiffrement, une connexion TLS mutuelle est établie et le certificat client est validé pour la couche d'authentification supplémentaire.

(Facultatif) Désactivation des connexions TLS mutuelles

Si vous n'avez plus besoin de la deuxième couche d'authentification, vous pouvez désactiver la fonction en supprimant tous les certificats de l'autorité de certification client sur le serveur.

  1. Supprimez un certificat de l'autorité de certification à l'aide de la commande suivante. Répétez cette étape pour supprimer tous les certificats disponibles sur le serveur pour désactiver les connexions TLS à partir des applications EP11.

    ibmcloud hpcs-cert-mgr cert delete --crn HPCS_CRN --admin-priv-key ADMIN_PRIV_KEY --cert-id CERT_ID [--private]
    

    Remplacez les variables de l'exemple de demande conformément au tableau suivant :

    Tableau 2. Décrit les variables requises pour supprimer les certificats de l'autorité de certification
    Variables Description
    HPCS_CRN Obligatoire. Nom de ressource de cloud (CRN) de votre instance Hyper Protect Crypto Services. Vous pouvez utiliser la commande ibmcloud resource service-instances --long pour extraire le CRN.
    ADMIN_PRIV_KEY Obligatoire. Le chemin de fichier de votre clé privée actuelle qui est stockée sur votre poste de travail local. La clé privée est utilisée pour signer cette action de commande vers votre serveur de gestionnaire de certificats d'instance.
    CERT_ID Obligatoire. L'ID de chaîne du certificat de l'autorité de certification que vous souhaitez supprimer. Vous pouvez d'abord utiliser la commande ibmcloud hpcs-cert-mgr cert list --crn HPCS_CRN pour répertorier tous les certificats, notamment leurs ID.

    Le paramètre --private est facultatif. Si vous utilisez cette option, l'URL du serveur du gestionnaire de certificats pointe vers le nœud final privé et vous devez utiliser le réseau privé pour connecter votre instance de service.

    Si plusieurs administrateurs de certificats sont définis pour votre instance de service, veillez à supprimer tous les certificats de l'autorité de certification de ces administrateurs.

    Si vous supprimez un certificat de CA du serveur du gestionnaire de certificats, toutes les applications utilisant les certificats client émis par ce certificat de l'autorité de certification n'ont pas accès à l'instance GREP11 via la connexion TLS mutuelle.

    Une fois que vous avez supprimé tous les certificats de l'autorité de certification du serveur du gestionnaire de certificats, l'authentification TLS mutuelle pour l'instance GREP11 est désactivée. Les applications n'ont alors pas besoin d'une connexion TLS pour se connecter à l'instance GREP11.

  2. (Facultatif) Vérifiez et confirmez que tous les certificats de l'autorité de certification soient supprimés à l'aide de la commande suivante :

    ibmcloud hpcs-cert-mgr cert list --crn HPCS_CRN [--private]
    

    Si aucun certificat n'est renvoyé, cela signifie que tous les certificats de votre instance de service sont supprimés.

  3. (Facultatif) Mettez à jour les applications GREP11 ou PKCS #11 pour supprimer les configurations de certificats, pour que les applications n'utilisent plus le certificat pour de futures connexions à l'interface de programmation.

Etapes suivantes