Questa pagina spiega come configurare la pipeline di immagini sicure per automatizzare la generazione di immagini container di base.
Panoramica
La pipeline di immagini sicure è uno strumento open source che configura un framework di progetti e risorse Google Cloud e un repository GitHub che puoi utilizzare per creare e gestire immagini di base personalizzate e sicure. Puoi utilizzare le immagini dei progetti Google Cloud.
L'immagine seguente illustra il framework delle risorse create dalla pipeline di immagini sicure:
Una volta configurata, la pipeline crea le seguenti risorse:
Un repository GitHub che ospita il codice sorgente delle immagini container.
Tre progetti Google Cloud: progetto di compilazione, progetto di staging e progetto verificato. Ogni volta che un'immagine viene aggiornata nel repository delle immagini, Cloud Build si attiva nel progetto di compilazione, compila, firma e invia l'immagine aggiornata al repository Artifact Registry nel progetto di staging. Quando l'immagine nel progetto di staging viene verificata manualmente, la pipeline spinge l'immagine al progetto verificato.
Costi
La pipeline di immagini sicure utilizza i seguenti prodotti Google Cloud.
- Cloud Build
- Artifact Registry
- Artifact Analysis
- Autorizzazione binaria
- Pub/Sub
- Cloud Run
- Funzioni Cloud Run
Utilizza il Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.
Prima di iniziare
Per utilizzare la pipeline di immagini sicure, devi disporre di un'organizzazione Google Cloud. I clienti di Google Workspace e Cloud Identity possono creare un'organizzazione Google Cloud:
- Google Workspace: registrati a Google Workspace.
- Cloud Identity: registrati a Cloud Identity.
Per ulteriori informazioni sull'organizzazione Google Cloud, consulta la guida rapida all'utilizzo delle organizzazioni.
Installa Terraform 0.14.10.
Se non ne hai già uno, crea un account su GitHub.
- Se hai configurato l'autenticazione a due fattori su GitHub, crea un token di accesso personale da usare al posto di una password GitHub con la riga di comando.
Autorizzazioni IAM richieste
L'utente che configura la pipeline di immagini sicure deve disporre dei ruoli Identity and Access Management roles/organization.admin
e roles/billing.admin
per l'organizzazione Google Cloud. Per istruzioni sulla concessione dei ruoli IAM, consulta
Concedere, modificare e revocare l'accesso.
Configurazione della pipeline di immagini sicure
Il repository GitHub della pipeline di immagini sicure contiene lo script per automatizzare la generazione delle immagini di base.
Per configurare la pipeline di immagini sicure:
Clona il repository GitHub di Secure Image Pipeline sulla tua macchina locale:
git clone https://github.com/GoogleCloudPlatform/secure-image-pipeline
Vai alla directory
secure-image-pipeline
:cd secure-image-pipeline/
Copia
env.sh.tmpl
inenv.sh
:cp env.sh.tmpl env.sh
Apri
env.sh
nell'editor che preferisci.Modifica i seguenti valori:
- PARENT_ORGANIZATION: inserisci l'ID della tua organizzazione Google Cloud. Lo script della pipeline di immagini sicure utilizza questa organizzazione per generare progetti Google Cloud e immagini di base.
- BASEIMGFCT_PROJECT: inserisci una stringa con la quale lo script genera gli ID progetto dei progetti che crea. La stringa deve essere composta da 6 a 30 lettere minuscole, cifre o trattini. Deve iniziare con una lettera e non può avere un trattino finale. Ad esempio, se specifichi
foo
, lo script crea tre progetti con gli IDfoo-builder
,foo-stage
efoo-verified
. - BASEIMGFCT_BUCKET: inserisci un nome per un bucket Cloud Storage creato dallo script per archiviare il codice di automazione di Terraform. Assicurati che il nome sia conforme ai requisiti per la denominazione dei bucket.
- BASEIMGFCT_REGION: inserisci il nome della regione da utilizzare o utilizza il valore predefinito.
- BILLING_ACCOUNT: inserisci l'account di fatturazione associato all'organizzazione.
- GITHUB_TOKEN: inserisci il tuo token di accesso personale GitHub. Lo script utilizza questo token per creare un repository GitHub contenente il codice sorgente delle immagini di base.
Esegui lo script di configurazione:
./setup.sh
Quando richiesto, inserisci i seguenti dati dell'account GitHub:
Il nome della tua organizzazione GitHub.
Il tuo indirizzo email GitHub.
Il tuo nome utente GitHub.
Concedi allo script l'autorizzazione per creare un nuovo progetto per archiviare le immagini di base.
Inserisci "y".
L'esecuzione dell'operazione richiede alcuni minuti. Al termine, viene visualizzato il messaggio Collega i tuoi repository GitHub e premi un tasto per continuare.
Premi un tasto qualsiasi per continuare.
Lo script apre una nuova finestra del browser della console Google Cloud per collegare il tuo repository GitHub al tuo progetto Google Cloud.
Passa alla finestra del browser della console Google Cloud.
Nel popup Gestisci le tue installazioni di app GitHub, seleziona il tuo account GitHub.
Fai clic su Aggiungi un altro progetto.
Nel menu a discesa Seleziona un progetto, seleziona il progetto del formato YOUR_PROJECT_NAME-builder.
Seleziona la casella di controllo per il consenso e fai clic su Avanti.
Nell'elenco dei repository, seleziona il repository denominato baseimgfact-[some number]-containers e fai clic su Connetti (1) repository.
Nella pagina Crea trigger push, fai clic su Salta. Lo script crea automaticamente l'attivatore push.
Fai clic su Fine.
Torna al terminale.
Premi un tasto qualsiasi per continuare.
L'esecuzione dello script richiede alcuni minuti.
Risorse create dalla pipeline di immagini sicure
Al termine dell'esecuzione, lo script di configurazione crea le seguenti risorse:
GitHub:
- Un repository denominato
baseimgfct-[some number]-containers
contenente il codice sorgente utilizzato per creare le immagini container. Lo scriptsetup
esegue il seeding di questo repository con semplici Dockerfile, uno per ciascuna delle principali distribuzioni Linux. - Chiavi di deployment: chiavi di deployment separate con accesso in scrittura per il repository.
Progetti Google Cloud:
Un progetto Google Cloud denominato
YOUR_PROJECT_NAME-builder
che contiene le risorse per compilare e inviare un'immagine al progetto di staging ogni volta che il codice sorgente viene aggiornato nel repository GitHub.Questo progetto contiene gli attivatori Cloud Build che invocano le build quando viene eseguita una richiesta di pull o un'unione nel ramo principale in
baseimgfct-[some number]-containers
. Una richiesta pull compila ed esegue il push delle immagini nel progetto di staging. Un'unione compila e spinge le immagini al progetto verificato.Autorizzazioni IAM per
YOUR_PROJECT_NAME-builder
: consigliamo di concedere l'accesso a questo progetto solo ai membri del team che dovrebbero apportare modifiche alla pipeline. Per istruzioni su come concedere l'accesso ai progetti, consulta Concedere, modificare e revocare l'accesso.Un progetto Google Cloud denominato
YOUR_PROJECT_NAME-stage
che viene utilizzato per eseguire il commit delle immagini per una revisione manuale prima che vengano rilasciate nel progetto verificato. Questo progetto contiene le seguenti risorse:- Un repository Docker di Artifact Registry contenente le immagini dei container compilate.
- Le funzioni Cloud Run vengono eseguite per ogni immagine del progetto, il che attiva una ricostruzione dell'immagine ogni volta che viene trovata una nuova correzione per una vulnerabilità nota.
- Argomenti Pub/Sub utilizzati per eseguire le funzioni Cloud Run.
- Un'istanza del server dei coupon che viene eseguita come deployment di Cloud Run. Il server dei coupon controlla l'immagine con un elenco di requisiti dei criteri di sicurezza. Puoi utilizzare i requisiti delle norme predefinite forniti con la pipeline o specificare un criterio di sicurezza personalizzato. Dopo il superamento dei controlli di sicurezza, il server dei coupon crea un'attestazione per l'immagine utilizzando Autorizzazione binaria. Questa immagine attestata, chiamata anche immagine firmata, viene poi inviata al progetto verificato.
Autorizzazioni IAM per
YOUR_PROJECT_NAME-stage
: consigliamo di concedere l'accesso a questo progetto solo agli sviluppatori autorizzati a leggere le immagini in fase di staging da Artifact Registry. Per istruzioni su come concedere l'accesso ai progetti, consulta Concedere, modificare e revocare l'accesso.Un progetto Google Cloud denominato
YOUR_PROJECT_NAME-verified
. Questo project contiene le immagini finali firmate che sono state esaminate manualmente.
Passaggi successivi
- Scopri come utilizzare la pipeline di immagini di base.
- Scopri come specificare un criterio di sicurezza personalizzato.