Generazione di una chiave GPG
Le risorse create dalla toolchain di integrazione continua IBM Cloud DevSecOps e registrate nell'inventario devono essere firmate prima di essere distribuite alla produzione. La pipeline di integrazione continua utilizza Skopeo come strumento predefinito per fornire la capacità di firma della risorsa utente.
Crea e memorizza una chiave GPG utilizzata dalla pipeline di integrazione continua Ops DevSecautomaticamente o manualmente.
Genera automaticamente una chiave GPG
Utilizzando questo metodo, il template genera la chiave GPG per te. Immetti il nome e email per la generazione della chiave completando questa procedura:
-
Andare a Firma risorsa utente e fare clic su Nuovo.
Figura 1. Firma della risorsa utente -
Nella finestra, i campi name e email sono prepopolati con il nome della toolchain e l'ID email. Modificare il nome e l'ID e-mail per riflettere i requisiti della chiave GPG. Puoi anche memorizzare le chiavi nel tuo provider di segreti selezionando la casella.
Figura 2. Modifica nome ed email -
Una volta generata la chiave, è possibile copiarla come riferimento.
Figura 3 Certificato di firma risorsa utente
La chiave copiata è in formato base64
. [Decodifica](/doc - draft/devsecops-workingtopic=devsecops-working-devsecops-async-stagesdevsecops-decoding-gpg-key.md) la chiave prima di importarla nel tuo keyring.
echo <encoded_gpg_key> | base64 --decode
Genera manualmente una chiave GPG
Scarica e installa strumenti della riga di comando GPG
Scaricare e installare gli strumenti della riga comandi GPG per il proprio sistema operativo. Passare alla sezione GnuPG per scaricare gli strumenti per il proprio sistema operativo.
Mac OS X
- Scaricare e installare Mac GPG.
- Verificare la versione del GPG installato. Dalla riga di comando, eseguire il seguente comando:
$ gpg --version
gpg (GnuPG) 2.3.1
libgcrypt 1.9.3
Copyright (C) 2021 Free Software Foundation, Inc.
- Per le versioni di GPG precedenti alla 2.3.1, potrebbe non essere possibile utilizzare l'opzione -- passphrase = ''. In questo caso, è possibile omettere la password nella seguente finestra di dialogo premendo Invio quando richiesto.
Windows™
- Scarica e installa GitBash (richiesto per la codifica
base64
). - Verificare la versione del GPG installato. Esegui il seguente comando nel prompt dei comandi Git bash:
$ gpg --version
gpg (GnuPG) 2.2.27
libgcrypt 1.8.7
Copyright (C) 2021 g10 Code GmbH
Genera una chiave GPG
Lasciare la passphrase e il campo vuoti se il comando generate - key apre una finestra di dialogo che richiede una passphrase. Questa è una limitazione con il programma di utilità (skopeo) della firma dell'immagine in cui la pipeline non può accettare una chiave privata protetta con una passphrase. Se fornisci la passphrase durante la creazione, la tua pipeline non riesce a decodificare il certificato e la tua pipeline non riesce al passo di firma dell'immagine.
Mac OS X e Linux™
Dal prompt della shell, eseguire il seguente comando:
gpg --pinentry-mode loopback --passphrase='' --generate-key
- Inserisci il tuo nome e indirizzo email.
- Immettere O per avviare la creazione della chiave.
- Una volta generata la chiave, selezionare l'opzione O.
Windows™
GPG Versione> 1.4
Dal prompt dei comandi bash Git, immetti il seguente comando:
gpg --pinentry-mode loopback --passphrase='' --generate-key
- Immettere il proprio nome nel campo Nome reale.
- Immettere il proprio indirizzo email in Indirizzo email.
- Immettere O per avviare la creazione della chiave.
- Una volta generata la chiave, selezionare l'opzione O.
GPG Versione < 1.4 (o qualsiasi errore con il precedente comando)
Dal prompt dei comandi bash Git, immetti il seguente comando:
gpg --gen-key
- tipo di chiave: selezionare Opzione predefinita (1) RSA e RSA (predefinita)
- keysize: conserva il valore predefinito (2048)
- validità chiave: mantenere il valore predefinito come 0. Ciò è dovuto al fatto che la chiave valore 0 non scade.
- Confermare la scelta: immettere s.
- Immettere il proprio nome nel campo Nome reale.
- Immettere il proprio indirizzo email in Indirizzo email.
- Immettere O per avviare la creazione della chiave.
- Una volta generata la chiave, selezionare l'opzione O.
Verificare la creazione della chiave
Verificare che la chiave GPG sia stata creata. Dal prompt dei comandi, eseguire questo comando:
gpg --list-keys
Assicurarsi che la chiave sia elencata. Output di esempio su 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
Esportare la chiave
Questo passo è facoltativo. Eseguire questo comando per assicurarsi che sia possibile esportare la chiave GPG.
gpg --export-secret-key <Email Address>
La chiave non elaborata esportata non deve essere copiata direttamente. Si consiglia di memorizzare in modo sicuro la chiave generata in questo passo nella tua istanza {{site.data.keyword.keymanagementserviceshort}} o {{site.data.keyword.secrets-manager_short}}. Per ulteriori dettagli, consultare le sezioni successive.
Memorizza la chiave
La chiave GPG deve essere fornita alla pipeline CI in uno dei seguenti modi:
- Archiviato in {{site.data.keyword.keymanagementservicefull}}
- Archiviato in {{site.data.keyword.secrets-manager_full}}
- Archiviato direttamente nella toolchain CI
Assicurarsi che la chiave sia copiata nel formato corretto per impedire un errore di firma della pipeline CI dovuto a un errore di importazione. Utilizzare pbcopy
(Mac OS X) o clip
(Windows Git bash) nel seguente comando
per copiare il contenuto della chiave negli appunti.
Archiviare la chiave in {{site.data.keyword.keymanagementserviceshort}}
Esportare e copiare la chiave GPG negli appunti.
La doppia codifica base64
della chiave GPG è richiesta prima di archiviarla nella tua istanza {{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
-
Nella tua console {{site.data.keyword.cloud_notm}}, seleziona l'istanza {{site.data.keyword.keymanagementserviceshort}} in cui vuoi memorizzare la chiave GPG generata dai passi precedenti.
-
Fai clic sull'icona Aggiungi + per aggiungere una nuova chiave all'istanza.
-
Selezionare l'opzione Importa la propria chiave.
-
Selezionare Seleziona un tipo di chiave come Chiave standard.
-
Fornire il nome appropriato nel campo Nome chiave. La chiave GPG memorizzata può essere richiamata in un secondo momento da questo nome chiave.
-
Copia la chiave come esportata in precedenza nel campo Materiale chiave.
Assicurati che quando copi la chiave e la incolli nel campo Materiale chiave, non ci sia alcuna riga aggiuntiva alla fine della chiave.
-
Selezionare l'opzione Scegli un keyring come predefinita.
-
Fai clic su Add key per aggiungere la chiave alla tua key protect.
Figura 4. Aggiungere la chiave a key protect
Per ulteriori informazioni su {{site.data.keyword.keymanagementserviceshort}}, vedi la documentazione{{site.data.keyword.keymanagementserviceshort}}.
Archivia la chiave in {{site.data.keyword.secrets-manager_short}}
È richiesta una singola codifica base64
della chiave GPG prima di memorizzarla nell'istanza {{site.data.keyword.secrets-manager_short}}.
Esportare e copiare la chiave GPG negli appunti.
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
-
Nella tua console {{site.data.keyword.cloud_notm}}, seleziona l'istanza {{site.data.keyword.secrets-manager_short}} in cui vuoi archiviare la chiave GPG generata dai passi precedenti.
-
Fai clic sull'icona Aggiungi + per aggiungere una nuova chiave all'istanza.
-
Selezionare l'opzione Altro tipo di segreto.
Figura 5. Altro tipo di segreto -
Selezionare il tipo Chiave standard per l'opzione Seleziona un tipo di chiave.
-
Fornire un nome appropriato nel campo Nome. La chiave GPG memorizzata può essere richiamata successivamente con questo nome.
-
Scegli l'opzione come Valore segreto e incolla la chiave come esportata in precedenza nel campo Valore segreto.
Assicurati che quando copi la chiave e la incolli nel campo Valore segreto, non ci sia alcuna riga aggiuntiva alla fine della chiave.
-
Aggiungi la tua istanza {{site.data.keyword.keymanagementserviceshort}} facendo clic sull'icona Add.
Figura 6. Aggiungere la chiave
Per ulteriori informazioni su {{site.data.keyword.secrets-manager_short}}, vedi Introduzione a {{site.data.keyword.secrets-manager_short}}.
Esporta la chiave privata e memorizzarla direttamente nella pipeline CI
Questo approccio non è raccomandato e deve essere utilizzato solo per la sperimentazione. Utilizzare Key Protect
o Secrets Manager
per memorizzare le chiavi. Per ulteriori informazioni, consultare Configurazione degli archivi segreti
È richiesta una singola codifica base64
della chiave GPG prima di memorizzarla come una proprietà della pipeline protetta.
Memorizza in modo sicuro la chiave GPG in un'istanza {{site.data.keyword.keymanagementserviceshort}} o {{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