Configurare l'infrastruttura DevSecOps e la toolchain CI per distribuire un'applicazione sicura

Utilizzate questa esercitazione per la configurazione e il provisioning automatizzati dell'infrastruttura per i vostri toolchain CI e CD, utilizzando un modello di avvio rapido basato su Terraform. Il modello utilizza le migliori pratiche di conformità e sicurezza di DevSecOps. Il modello utilizza un 'area di lavoro IBM Cloud® Schematics, che automatizza la creazione dell'infrastruttura necessaria per distribuire in modo sicuro l'app su Kubernetes o Red Hat® OpenShift®. Il modello utilizza la struttura della pipeline della toolchain DevSecOps IBM Cloud® Continuous Delivery. La toolchain è preconfigurata per la consegna continua con integrazione dell'inventario, gestione delle modifiche, raccolta delle prove e distribuzione.

IBM Cloud Schematics fornisce Terraform come servizio, in modo da consentirti di utilizzare un linguaggio di scripting di alto livello per modellare le risorse che desideri impiegare nel tuo ambiente IBM Cloud e permetterti di abilitare lo IaC (Infrastructure as Code). Terraform è un software open source sviluppato da HashiCorp. Terraform consente un provisioning delle risorse prevedibile e coerente per creare rapidamente ambienti cloud complessi e multitier.

In questa esercitazione si seguono tre semplici passaggi per creare uno spazio di lavoro Schematics, applicare un piano di esecuzione Terraform e aggiornare il valore delle proprietà dell'ambiente. Quando si applica il piano, l'area di lavoro Schematics configura l'infrastruttura sicura. Questa infrastruttura è condivisibile con il proprio team e funziona per i modelli di DevSecOpsUna metodologia che integra le pratiche di sicurezza con lo sviluppo software e il ciclo di vita delle operazioni. L'obiettivo della fusione è quello di dare priorità all'equilibrio tra velocità di sviluppo e sicurezza. Modelli di catena di strumenti CI e CD.

L'impostazione automatica dell'infrastruttura crea risorse che vengono approvvigionate automaticamente utilizzando i valori predefiniti dai modelli CI e CD di DevSecOps. I valori predefiniti si trovano nella sezione Variabili dell'area di lavoro Schematics. Vengono create le seguenti risorse:

Prima di iniziare

Creare un'area di lavoro Schematics

  1. Fare clic su una delle seguenti opzioni per il target di distribuzione del cluster. Questa azione porta alla pagina Deploy to IBM Cloud, dove si crea uno spazio di lavoro Schematics. Compilare i campi richiesti in questa pagina, quindi fare clic su Avanti.

    Distribuire a Kubernetes su IBM Cloud

    Distribuire a OpenShift on IBM Cloud

    In base all'opzione selezionata, il modello Terraform corrispondente da questo repository viene importato automaticamente nel nuovo spazio di lavoro di Schematics.

  2. Verificare le informazioni, quindi fare clic su Crea. L'area di lavoro Schematics viene creata e viene visualizzata la pagina Impostazioni dell'area di lavoro Schematics.

Applicare il piano di esecuzione di Terraform

  1. Nella sezione Variabili della pagina Impostazioni di Schematics, inserire i valori di ciascuna variabile. I campi obbligatori non hanno valori predefiniti. È possibile sovrascrivere i valori predefiniti.

    Se si sovrascrive il valore sm_service_name, il piano di esecuzione di Terraform utilizza la risorsa esistente invece di creare una nuova risorsa.

  2. Per la variabile gitlab_token, inserire il token di accesso personale ottenuto in precedenza.

  3. Per la variabile ibmcloud_api_key, inserire la chiave API IBM Cloud ottenuta in precedenza.

  4. Per la variabile registry_namespace, inserire un valore dello spazio dei nomi del registro del contenitore. Per creare uno spazio dei nomi, vedere Container Registry Spazi dei nomi.

  5. Per la variabile kube_version, eseguire: ibmcloud ks versions alla riga di comando per visualizzare le versioni disponibili.

  6. Facoltativo. Se esiste già un'istanza di Secrets Manager, inserire il suo nome per la variabile sm_service_name. Altrimenti, non modificare questa variabile.

  7. Facoltativo. Se si desidera modificare le dimensioni o la posizione del cluster, è possibile sovrascrivere le seguenti variabili: datacenter, default_pool_size, machine_type, hardware, public_vlan_num, o private_vlan_num (i valori predefiniti sono per il datacenter dal12/us-south ).

  8. Facoltativo. Fare clic su Genera piano. Questa azione crea un piano di esecuzione di Terraform e controlla la configurazione alla ricerca di errori di sintassi. Nella pagina Schematics Jobs è possibile esaminare i file di log per gli errori e le risorse di IBM Cloud che devono essere create, modificate o eliminate per ottenere lo stato corretto del modello Terraform.

  9. Dopo aver inserito tutti i valori delle variabili ed essere soddisfatti delle modifiche, fare clic su Applica piano per eseguire il codice dell'infrastruttura.

    Questo passaggio richiede un po' di tempo per essere completato (di solito 20-30 minuti, ma può richiedere anche più tempo), a causa della creazione di un nuovo cluster Kubernetes o OpenShift.

  10. Nella pagina Schematics è possibile visualizzare il registro espandendo il nome del lavoro.

  11. Dopo l'applicazione del piano, visualizzare URL alla catena di strumenti CI generata IBM Cloud DevSecOps. L'indirizzo URL si trova alla fine del file di registro, in una riga che inizia con View the toolchain at:.

Se si applica il piano una seconda volta, il cluster Kubernetes o OpenShift creato in precedenza e tutte le applicazioni distribuite su di esso vengono eliminati e viene creato un nuovo cluster. Tuttavia, se si sovrascrive il nome del cluster predefinito, viene utilizzato quel cluster.

Distribuisci l'applicazione

Seguite questi passaggi per eseguire la pipeline.

  1. Andare alla catena di strumenti DevSecOps CI appena creata.
  2. Fare clic sulla Git che inizia con compliance-app.
  3. Per attivare la pr-pipeline, aggiornare un testo nel file README.md e poi avviare una PR contro il ramo main.
  4. Nel campo Ramo di destinazione, cambiare il nome del ramo da main a un altro. Ad esempio, mybranch.
  5. Assicurarsi che la casella di controllo "Avvia una nuova richiesta di unione con queste modifiche" sia selezionata.
  6. Fare clic su Impegna le modifiche.
  7. Facoltativo. Nella pagina Nuova richiesta di unione, aggiungere una descrizione.
  8. Fare clic su Crea richiesta di unione.

Viene attivata la pipeline pr nella catena di strumenti ci. Verificate che la pipeline sia in esecuzione completando i seguenti passaggi:

  1. Tornare alla propria catena di strumenti CI e fare clic sul riquadro Delivery Pipeline per il vostro pr-pipeline. Nella pagina Dashboard di pr-pipeline, è possibile vedere la pr-pipeline in esecuzione.

  2. Per visualizzare i progressi, fare clic sul link pr-pipeline.

    pr-pipeline
    Figura 1. Cruscotto pr-pipeline

Note:

  1. Se vengono rilevate delle vulnerabilità, la fase di rifinitura del codice fallisce.

  2. Per trovare le vulnerabilità, accedere a code-unit-tests > run-stage per visualizzare i log. (screenshot)

  3. Risolvete le vulnerabilità e poi si attiva la linea di pr-ipotesi.

  4. Tornare al riquadro del repo dell'applicazione.

  5. Nel riquadro principale, fare clic su Unisci richieste.

  6. Selezionare la PR.

  7. Facoltativo. Fare clic sul pulsante Approva (in caso contrario, viene visualizzato un errore al termine dell'esecuzione della ci-pipeline).

  8. Selezionare "Elimina ramo sorgente"

  9. Fare clic su Unisci.

L'unione di questa PR attiva automaticamente la ci-pipeline. Per verificare, tornare alla piastrella ci-pipeline nella toolchain e verificare che la pipeline sia in esecuzione. Fare clic sul link della pipeline per vedere i progressi.

Questo passaggio distribuisce l'applicazione nel cluster appena creato. L'applicazione URL si trova in fondo al file di log nel passaggio deploy-dev > run-stage della ci-pipeline.

Passi successivi

Continuare con la sezione "Esplorare la catena di strumenti CI " della prossima esercitazione ed eseguire le pipeline CI-PR e CI. Quindi, continuate a seguire i passi restanti dell'esercitazione per distribuire un'applicazione sicura.

In qualsiasi momento, è possibile visualizzare tutte le risorse create con questa esercitazione facendo clic sull'icona Menu e selezionando Elenco risorse. È possibile visualizzare lo spazio di lavoro Schematics, il cluster, l'istanza IBM Cloud Object Storage, il servizio Secrets Manager, il servizio di consegna continua e la toolchain.