Creazione della pipeline di immagini sicure

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 piattaforma pipeline di immagini:

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 build, progetto di gestione temporanea e progetto verificato. Ogni volta che un'immagine viene aggiornata nel repository di immagini, Trigger di Cloud Build nel progetto di build crea, firma ed esegue il push dell'immagine aggiornata al Repository Artifact Registry nel progetto di gestione temporanea. Quando l'immagine nel progetto di gestione temporanea viene verificata manualmente, la pipeline esegue il push al progetto verificato.

Costi

La pipeline di immagini sicure utilizza i seguenti prodotti Google Cloud.

Utilizza il Calcolatore prezzi per generare una stima dei costi. in base all'utilizzo previsto.

Prima di iniziare

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 di pipeline di immagini sicure contiene lo script per automatizzare la generazione di immagini di base.

Per configurare la pipeline di immagini sicure:

  1. Clona il repository GitHub della pipeline di immagini sicura nella tua macchina locale:

    git clone https://github.com/GoogleCloudPlatform/secure-image-pipeline
    
  2. Vai alla directory secure-image-pipeline:

    cd secure-image-pipeline/
    
  3. Copia env.sh.tmpl in env.sh:

    cp env.sh.tmpl env.sh
    
  4. Apri env.sh nell'editor che preferisci.

  5. Modifica i seguenti valori:

    • PARENT_ORGANIZATION: inserisci l'ID della tua organizzazione Google Cloud. Lo script della pipeline dell'immagine sicura 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-30 lettere minuscole, cifre o trattini. Deve iniziare con una lettera e non può contengono un trattino finale. Ad esempio, se specifichi foo, lo script crea tre progetti con gli ID foo-builder, foo-stage e foo-verified.
    • BASEIMGFCT_BUCKET: inserisci un nome per un bucket Cloud Storage che crea lo script per archiviare il codice di automazione 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.
  6. Esegui lo script di configurazione:

    ./setup.sh
    
  7. Quando richiesto, inserisci i seguenti dati dell'account GitHub:

    1. Il nome della tua organizzazione GitHub.

    2. Il tuo indirizzo email GitHub.

    3. Il tuo nome utente GitHub.

    4. Concedi allo script l'autorizzazione per creare un nuovo progetto per archiviare le immagini di base.

    5. Inserisci "y".

    L'esecuzione di questa operazione richiede alcuni minuti. Al termine, viene visualizzato il messaggio Collega i tuoi repository GitHub e premi un tasto per continuare.

  8. 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.

  9. Passa alla finestra del browser della console Google Cloud.

  10. Nel popup Gestisci le tue installazioni di app GitHub, seleziona il tuo account GitHub.

  11. Fai clic su Aggiungi un altro progetto.

  12. Nel menu a discesa Seleziona un progetto, seleziona il progetto del formato YOUR_PROJECT_NAME-builder.

  13. Seleziona la casella di controllo per il consenso e fai clic su Avanti.

  14. Nell'elenco dei repository, seleziona quello denominato baseimgfact-[some number]-containers e fai clic su Connetti (1) repository.

  15. Nella pagina Crea trigger push, fai clic su Salta. Lo script crea il trigger push automaticamente.

  16. Fai clic su Fine.

  17. Torna al terminale.

  18. Premi un tasto qualsiasi per continuare.

L'esecuzione dello script richiede alcuni minuti.

Risorse create dalla pipeline dell'immagine sicura

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 script setup esegue il seeding di questo repository con semplici Dockerfile, uno per ciascuna delle più diffuse 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 di pull crea e invia le immagini al progetto di gestione temporanea. 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 l'articolo Concessione, modifica e revoca dell'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.
    • Cloud Run funziona per ogni immagine del progetto, attivando così una ricostruzione dell'immagine ogni volta che viene rilevata una nuova correzione per una vulnerabilità nota.
    • Argomenti Pub/Sub utilizzati per eseguire le funzioni Cloud Run.
    • Un'istanza del server di coupon. che viene eseguito come deployment Cloud Run. Il server del coupon controlla la con un elenco dei 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 quindi inviata al progetto verificato.

    Autorizzazioni IAM per YOUR_PROJECT_NAME-stage: ti consigliamo di concedere l'accesso per questo progetto solo agli sviluppatori che autorizzato a leggere le immagini temporanee da Artifact Registry. Per istruzioni su come concedere l'accesso a vedi Concessione, modifica e revoca dell'accesso.

  • Un progetto Google Cloud denominato YOUR_PROJECT_NAME-verified. Questo contiene le immagini finali firmate che sono state esaminate manualmente.

Passaggi successivi