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:
- Un cluster in IBM Cloud® Kubernetes Service o Red Hat OpenShift su IBM Cloud.
- Un'istanza e un bucket standard di IBM Cloud Object Storage.
- IBM Cloud® Secrets Manager. Si noti che è consentita una sola istanza di Secrets Manager. Se si dispone già di un servizio Secrets Manager, assicurarsi di sovrascrivere
il valore predefinito di
sm_service_nameal punto 2. - Chiave di firma dell'immagine GPG.
- Una catena di strumenti CI DevSecOps completamente funzionale che costruisce, testa e distribuisce un'applicazione Node.js di esempio, utilizzando le migliori pratiche di conformità e sicurezza di DevSecOps.
Prima di iniziare
- Per completare questa esercitazione, utilizzare un account Pay-As-You-Go o Subscription IBM Cloud di cui si è proprietari o si dispone di un accesso completo come amministratore. Se si dispone già di un account IBM Cloud e si desidera aggiornarlo, vedere Aggiornamento dell'account.
- Installare la CLI IBM Cloud se si desidera interagire con gli elementi della catena di strumenti o dell'infrastruttura dopo la loro creazione.
- Ottenere un token di accesso personale GitLab. Inserire un nome per il token di accesso personale. Creare il token nella stessa regione della propria toolchain CI. Assicuratevi di copiare e salvare il token, perché vi servirà in seguito e non potrete più accedervi.
- Creare una chiave API IBM Cloud. Assicuratevi di copiare e salvare o scaricare il valore della chiave API, perché vi servirà in seguito e non potrete più accedervi.
Creare un'area di lavoro Schematics
-
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.
In base all'opzione selezionata, il modello Terraform corrispondente da questo repository viene importato automaticamente nel nuovo spazio di lavoro di Schematics.
-
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
-
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. -
Per la variabile
gitlab_token, inserire il token di accesso personale ottenuto in precedenza. -
Per la variabile
ibmcloud_api_key, inserire la chiave API IBM Cloud ottenuta in precedenza. -
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. -
Per la variabile
kube_version, eseguire:ibmcloud ks versionsalla riga di comando per visualizzare le versioni disponibili. -
Facoltativo. Se esiste già un'istanza di Secrets Manager, inserire il suo nome per la variabile
sm_service_name. Altrimenti, non modificare questa variabile. -
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, oprivate_vlan_num(i valori predefiniti sono per il datacenter dal12/us-south ). -
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.
-
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.
-
Nella pagina Schematics è possibile visualizzare il registro espandendo il nome del lavoro.
-
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.
- Andare alla catena di strumenti DevSecOps CI appena creata.
- Fare clic sulla Git che inizia con
compliance-app. - Per attivare la pr-pipeline, aggiornare un testo nel file
README.mde poi avviare una PR contro il ramomain. - Nel campo Ramo di destinazione, cambiare il nome del ramo da
maina un altro. Ad esempio,mybranch. - Assicurarsi che la casella di controllo "Avvia una nuova richiesta di unione con queste modifiche" sia selezionata.
- Fare clic su Impegna le modifiche.
- Facoltativo. Nella pagina Nuova richiesta di unione, aggiungere una descrizione.
- 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:
-
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. -
Per visualizzare i progressi, fare clic sul link
pr-pipeline.
Figura 1. Cruscotto pr-pipeline
Note:
-
Se vengono rilevate delle vulnerabilità, la fase di rifinitura del codice fallisce.
-
Per trovare le vulnerabilità, accedere a
code-unit-tests>run-stageper visualizzare i log. (screenshot) -
Risolvete le vulnerabilità e poi si attiva la linea di pr-ipotesi.
-
Tornare al riquadro del repo dell'applicazione.
-
Nel riquadro principale, fare clic su Unisci richieste.
-
Selezionare la PR.
-
Facoltativo. Fare clic sul pulsante Approva (in caso contrario, viene visualizzato un errore al termine dell'esecuzione della ci-pipeline).
-
Selezionare "Elimina ramo sorgente"
-
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 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.