IBM Cloud Docs
Génération d'une clé GPG

Génération d'une clé GPG

Les artefacts générés par la chaîne d'outils d'intégration continue IBM Cloud DevSecOps et enregistrés dans l'inventaire doivent être signés avant d'être déployés en production. Le pipeline d'intégration continue utilise Skopeo comme outil par défaut pour fournir la fonction de signature d'artefact.

Créez et stockez une clé GPG qui est utilisée par le pipeline d'intégration continue DevSecOps automatiquement ou manuellement.

Générer automatiquement une clé GPG

A l'aide de cette méthode, le modèle génère la clé GPG pour vous. Entrez le nom et l'adresse électronique pour la génération de clés en procédant comme suit:

  1. Accédez à Signature d'artefact et cliquez sur Nouveau.

    Signature d'image
    Figure 1. Signature d'artefact

  2. Dans la fenêtre, les zones name et email sont préremplies avec le nom de la chaîne d'outils et l'ID de l'e-mail. Modifiez le nom et l'ID d'e-mail pour refléter vos exigences de clé GPG. Vous pouvez également stocker les clés dans votre fournisseur de secrets en sélectionnant la case.

    Changer le nom et l'adresse électronique
    Figure 2. Modifier le nom et l'adresse électronique

  3. Une fois la clé générée, vous pouvez la copier à titre de référence.

    Certificat de signature d'image
    Figure 3 Certificat de signature d'artefact

La clé copiée est au format base64. Décoder la clé avant de l'importer dans votre fichier de clés. echo <encoded_gpg_key> | base64 --decode

Générer manuellement une clé GPG

Téléchargement et installation des outils de ligne de commande GPG

Téléchargez et installez les outils de ligne de commande GPG correspondant à votre système d'exploitation. Accédez à la section GnuPG binary releases pour télécharger les outils de votre système d'exploitation.

Mac OS X

  • Téléchargez et installez Mac GPG.
  • Vérifiez la version GPG installée. A partir la ligne de commande, exécutez la commande suivante :
$ gpg --version
gpg (GnuPG) 2.3.1
libgcrypt 1.9.3
Copyright (C) 2021 Free Software Foundation, Inc.
  • Pour les versions de GPG antérieures à 2.3.1, il se peut qu'il ne soit pas possible d'utiliser l'option -- passphrase = ''. Dans ce cas, vous pouvez omettre le mot de passe dans la boîte de dialogue suivante en appuyant sur Entrée lorsque vous y êtes invité.

Windows

  • Téléchargez et installez GitBash (requis pour le codage base64 ).
  • Vérifiez la version GPG installée. Exécutez la commande suivante dans l'invite de commande Git bash:
$ gpg --version
gpg (GnuPG) 2.2.27
libgcrypt 1.8.7
Copyright (C) 2021 g10 Code GmbH

Génération d'une clé GPG

Laissez la phrase passe et la zone vide si la commande generate-key ouvre une boîte de dialogue qui demande une phrase passe. Il s'agit d'une limitation liée à l'utilitaire (skopeo) de la signature d'image dans laquelle le pipeline ne peut pas accepter une clé privée protégée par une phrase passe. Si vous fournissez la phrase passe lors de la création, votre pipeline ne parvient pas à décoder le certificat et il échoue à l'étape de signature de l'image.

Mac OS X et Linux™

A partir de votre invite shell, exécutez la commande suivante:

gpg --pinentry-mode loopback --passphrase='' --generate-key
  • Entrez votre nom et votre adresse électronique.
  • Entrez O pour lancer la création de clé.
  • Une fois la clé générée, sélectionnez l'option O.

Windows

Version GPG > 1.4

A l'invite de commande Git Bash, exécutez la commande suivante :

gpg --pinentry-mode loopback --passphrase='' --generate-key
  • Entrez votre nom dans la zone Nom réel.
  • Entrez votre adresse électronique dans la zone Adresse électronique.
  • Entrez O pour lancer la création de la clé.
  • Une fois la clé générée, sélectionnez l'option O.

GPG Version < 1.4 (ou tout échec avec la commande précédente)

A l'invite de commande Git Bash, exécutez la commande suivante :

gpg --gen-key
  • kind of key: sélectionnez l'option par défaut (1) RSA et RSA (par défaut)
  • keysize: conserver la valeur par défaut (2048)
  • Validité de la clé: conservez la valeur par défaut 0. En effet, la clé de valeur 0 n'expire pas.
  • Confirmez votre choix: entrez y.
  • Entrez votre nom dans la zone Nom réel.
  • Entrez votre adresse électronique dans la zone Adresse électronique.
  • Entrez O pour lancer la création de clé.
  • Une fois la clé générée, sélectionnez l'option O.

Vérification de la création de la clé

Vérifiez que la clé GPG a été créée. A partir de l'invite de commande, exécutez la commande suivante:

gpg --list-keys

Vérifiez que votre clé est répertoriée. Exemple de sortie sous Windows :

$ gpg --list-keys
/c/Users/FredSmith/.gnupg/pubring.gpg
-------------------------------------
pub   2048R/1BB354B5 2021-06-08
uid   Fred Smith <fred@company.com>
sub   2048R/F91C39A6 2021-06-08

Exportation de la clé

Cette étape est facultative. Exécutez la commande suivante pour vous assurer que la clé GPG peut être exportée :

gpg --export-secret-key <Email Address>

La clé brute exportée ne doit pas être copiée directement. Il est recommandé de stocker de manière sécurisée la clé générée dans cette étape dans votre instance {{site.data.keyword.keymanagementserviceshort}} ou {{site.data.keyword.secrets-manager_short}}. Pour plus de détails, voir les sections suivantes.

Stockage de la clé

La clé GPG doit être fournie au pipeline d'intégration continue de l'une des façons suivantes :

  • Stockée dans {{site.data.keyword.keymanagementservicefull}}
  • Stockée dans {{site.data.keyword.secrets-manager_full}}
  • Stockée directement dans la chaîne d'outils de l'intégration continue

Assurez-vous que la clé est copiée dans le format correct pour empêcher une erreur de signature de pipeline d'intégration continue en raison d'une erreur d'importation. Utilisez pbcopy (Mac OS X) ou clip (Windows Git bash) dans la commande suivante pour copier le contenu de la clé dans le presse-papiers.

Stockage de la clé dans {{site.data.keyword.keymanagementserviceshort}}

Exportez et copiez la clé GPG dans le presse-papiers.

Le codage base64 double de la clé GPG est requis avant de la stocker dans votre instance {{site.data.keyword.keymanagementserviceshort}}.

OS X

gpg --export-secret-key <Email Address> | base64 | base64 | pbcopy

Windows

gpg --export-secret-key <Email Address> | base64 -w0 | base64 -w0 | clip

Linux™

gpg --export-secret-key <Email Address> | base64 | base64
  1. Dans votre console {{site.data.keyword.cloud_notm}}, sélectionnez l'instance {{site.data.keyword.keymanagementserviceshort}} dans laquelle vous souhaitez stocker la clé GPG générée à partir des étapes précédentes.

  2. Cliquez sur l'icône Ajouter + pour ajouter une nouvelle clé à l'instance.

  3. Sélectionnez l'option Importer votre propre clé.

  4. Sélectionnez Sélectionner un type de clé comme Clé standard.

  5. Indiquez le nom approprié dans la zone Nom de clé. La clé GPG stockée peut être extraite ultérieurement par ce nom de clé.

  6. Copiez la clé telle qu'elle a été exportée précédemment dans la zone Key material.

    Lorsque vous copiez la clé et que vous la collez dans la zone Key material, il n'y a pas de ligne supplémentaire à la fin de la clé.

  7. Sélectionnez l'option Choisir un fichier de clés comme valeur par défaut.

  8. Cliquez sur Ajouter une clé pour ajouter la clé à votre protection par clé.

    Ajoutez la clé pour protéger les clés
    Figure 4. Ajoutez la clé pour protéger les clés

Pour plus d'informations sur {{site.data.keyword.keymanagementserviceshort}}, voir la documentation {{site.data.keyword.keymanagementserviceshort}}.

Stockage de la clé dans {{site.data.keyword.secrets-manager_short}}

Vous devez obligatoirement effectuer un simple encodage base64 de la clé GPG avant de la stocker dans votre instance {{site.data.keyword.secrets-manager_short}}.

Exportez et copiez la clé GPG dans le presse-papiers.

OS X

gpg --export-secret-key <Email Address> | base64 | pbcopy

Windows

gpg --export-secret-key <Email Address> | base64 -w0 | clip

Linux™

gpg --export-secret-key <Email Address> | base64
  1. Dans votre console {{site.data.keyword.cloud_notm}}, sélectionnez l'instance {{site.data.keyword.secrets-manager_short}} dans laquelle vous souhaitez stocker la clé GPG générée à partir des étapes précédentes.

  2. Cliquez sur l'icône Ajouter + pour ajouter une nouvelle clé à l'instance.

  3. Sélectionnez l'option Autre type de secret.

    Autre type de secret
    Figure 5. Autre type de secret

  4. Sélectionnez le type de clé standard pour l'option Sélectionner un type de clé.

  5. Indiquez un nom approprié dans la zone Nom. La clé GPG stockée peut être extraite ultérieurement à l'aide de ce nom.

  6. Choisissez l'option Valeur de secret et collez la clé telle qu'elle a été exportée précédemment dans la zone Valeur de secret.

    Assurez-vous que lorsque vous copiez la clé et que vous la collez dans la zone Valeur de secret, il n'y a pas de ligne supplémentaire à la fin de la clé.

  7. Ajoutez la clé à votre instance {{site.data.keyword.keymanagementserviceshort}} en cliquant sur l'icône Ajouter.

    Ajoutez la clé
    Figure 6. Ajoutez la clé

Pour plus d'informations sur {{site.data.keyword.secrets-manager_short}}, voir Initiation à {{site.data.keyword.secrets-manager_short}}.

Exportation de la clé privée en vue de la stocker directement dans le pipeline d'intégration continue

Cette approche n'est pas recommandée et ne doit être utilisée qu'à des fins d'expérimentation. Utilisez Key Protect ou Secrets Manager pour stocker les clés. Pour plus d'informations, voir Configuration des magasins de secrets

Vous devez obligatoirement effectuer un simple encodage base64 de la clé GPG avant de la stocker en tant que propriété de pipeline sécurisée.

Stockez de manière sécurisée la clé GPG dans une instance {{site.data.keyword.keymanagementserviceshort}} ou {{site.data.keyword.secrets-manager_short}}.

Mac OS X / Linux™

gpg --export-secret-key <Email Address> | base64

Windows

gpg --export-secret-key <Email Address> | base64 -w0