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:
-
Accédez à Signature d'artefact et cliquez sur Nouveau.
Figure 1. Signature d'artefact -
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.
Figure 2. Modifier le nom et l'adresse électronique -
Une fois la clé générée, vous pouvez la copier à titre de référence.
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
-
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.
-
Cliquez sur l'icône Ajouter + pour ajouter une nouvelle clé à l'instance.
-
Sélectionnez l'option Importer votre propre clé.
-
Sélectionnez Sélectionner un type de clé comme Clé standard.
-
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é.
-
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é.
-
Sélectionnez l'option Choisir un fichier de clés comme valeur par défaut.
-
Cliquez sur Ajouter une clé pour ajouter la clé à votre protection par clé.
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
-
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.
-
Cliquez sur l'icône Ajouter + pour ajouter une nouvelle clé à l'instance.
-
Sélectionnez l'option Autre type de secret.
Figure 5. Autre type de secret -
Sélectionnez le type de clé standard pour l'option Sélectionner un type de clé.
-
Indiquez un nom approprié dans la zone Nom. La clé GPG stockée peut être extraite ultérieurement à l'aide de ce nom.
-
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é.
-
Ajoutez la clé à votre instance {{site.data.keyword.keymanagementserviceshort}} en cliquant sur l'icône Ajouter.
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