Come installare e utilizzare Anchore Container Image Security Scanner?

Il Anchore Engine è uno strumento open source per la scansione e l’analisi delle immagini del contenitore per vulnerabilità di sicurezza e problemi di policy. È disponibile come immagine del contenitore Docker che può essere eseguita all’interno di una piattaforma di orchestrazione o come installazione autonoma.


Questo è un utile strumento di sicurezza che consente agli sviluppatori e ai team addetti al controllo qualità di testare, identificare e affrontare le vulnerabilità nelle immagini che stanno utilizzando per creare applicazioni.

In questo articolo, vedremo come installare e utilizzare lo scanner di vulnerabilità dell’immagine Anchore. In generale, ci sono diversi metodi di implementazione. Tuttavia, mi concentrerò sui seguenti due,

  • Usando il AnchoreCLI opzione da riga di comando
  • Basato sulla GUI Scanner di immagini per container Jenkins Anchore collegare.

Ti mostreremo come installare, configurare e avviare il motore, configurare e utilizzare lo strumento da riga di comando AnchoreCLI e il plug-in Jenkins. Per ciascuno dei due metodi, imparerai come aggiungere le immagini da scansionare, eseguire la scansione e visualizzare i rapporti.

Alla fine dell’articolo, imparerai le tre cose seguenti.

  • Installazione e configurazione di Anchore Engine
  • Installazione, configurazione e utilizzo AnchoreCLI
  • Configurazione e utilizzo Plugin dello scanner di immagini per container Anchore in Jenkins

Prerequisiti

I seguenti sono i requisiti per questo tutorial;

  • Una macchina locale o virtuale con Ubuntu 18.04 e seguenti;
  • docker
  • Docker-composizione
  • Jenkins Installato e funzionante
  • utente sudo

Passaggio 1: – Installa le directory di lavoro e scarica i file di configurazione.

Crea una directory di lavoro per i tuoi file Anchore. All’interno di quella directory, creerai due sottodirectory, una per la configurazione e una per il database.

Creare una home directory per i file Anchore

mkdir anchore

Vai alla nuova directory e crea le sottodirectory di configurazione e database.

cd anchor

mkdir config

mkdir db

Scarica i file di configurazione

Una volta che le directory sono pronte, scaricheremo due file di configurazione (docker-compose.yaml e config.yaml) dal progetto Github.

Per scaricare docker-compose.yaml

Vai alla directory principale di anchore e usa il comando

curl https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/docker-compose.yaml > finestra mobile-compose.yaml

Quindi scaricare config.yaml nella directory ~ / anchore / config

curl https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/config.yaml -o ~ / anchore / config / config.yaml

Il file config.yaml è un file di configurazione con le impostazioni di base necessarie per l’esecuzione del servizio motore ancore. Ha diversi parametri, tra cui include il valore predefinito, il livello di registro, la porta di ascolto, il nome utente, la password e altri che è possibile regolare per soddisfare requisiti specifici.

È buona prassi di sicurezza cambiare la password e puoi farlo modificando il file config.yaml. Tuttavia, in questo tutorial, utilizzeremo le impostazioni predefinite.

Per continuare con le credenziali predefinite, (nome utente – admin e password – foobar), passare a passo 2.

Modifica delle credenziali di Anchore Engine (facoltativo)

Dalla directory anchore utilizzare il comando

nano ~ / anchore / config / config.yaml

Individua il nome utente (admin) e la password (foobar) e modifica i valori preferiti.

stampa CTRL + X, poi Y per salvare ed uscire.

Con le directory di lavoro e i file di configurazione in atto, il sistema è pronto per l’installazione di Anchore Engine.

Passaggio 2: – Installare e avviare il motore Anchore

Utilizzerai Docker compose per installare e avviare il motore Anchore e il database.

Dalla directory principale di anchor, eseguire.

docker-compose up -d

Ciò estrarrà automaticamente l’immagine Anchore e quindi creerà il motore Anchore e il database nelle directory home e ~ / anchore / database / rispettivamente. Al termine, il comando avvierà il motore Anchore.

Dopo aver installato e avviato correttamente il motore di ancoraggio, ora è possibile eseguire la scansione delle immagini utilizzando la riga di comando di ancoraggio AnchoreCLI. Tuttavia, è necessario prima installare l’utilità della riga di comando AnchoreCLI, come mostrato di seguito.

Installazione, configurazione di AnchoreCLI

In questo passaggio, imparerai come installare e configurare AnchoreCLI strumento da riga di comando.

Passaggio 3: – Installare AnchoreCLI

In questo tutorial, installeremo prima l’utilità python-pip, che verrà quindi utilizzata per installare il file AnchoreCLI dalla fonte.

Per installare Python pip. Per la directory home di Anchore ed eseguire

sudo apt-get update
sudo apt-get install python-pip
sudo pip install – aggiorna setuptools

Installa il AnchoreCLI usando python-pip

pip install anchorecli

Questo comando scaricherà e installerà i file per AnchoreCLI. Dopo l’installazione, ora è necessario eseguire il source del nostro file .profile per utilizzare il comando

fonte ~ / .profile

Per verificare se l’installazione ha esito positivo e la versione di Anchorecli, utilizzare il comando

anchore-cli –version

Per verificare lo stato del sistema anchor-CLI, utilizzare il comando

anchore-cli –url http: // localhost: 8228 / v1 –u admin –p stato del sistema foobar

Si noti che è necessario passare l’URL, il nome utente e la password del motore Anchore.

Definire i parametri del motore Anchore

Per impostazione predefinita, AnchoreCLI tenterà di accedere al motore Anchore senza autenticazione. Tuttavia, ciò non funzionerà e sarà necessario fornire le credenziali del motore di ancoraggio con ogni comando.

Ciò comporta il passaggio dei parametri nome utente, password e URL con ogni comando CLI Anchore. Invece di fornire questi ogni volta, l’alternativa è definirli come variabili ambientali nel seguente formato.

Per passare l’URL, esegui

ANCHORE_CLI_URL = http: // localhost: 8228 / v1

Questo definisce l’URL del motore Anchore insieme alla porta 8228, che utilizza.

Impostare il nome utente e la password utilizzando i valori predefiniti; in caso contrario, sostituirli con i nuovi valori impostati Passo 1.

ANCHORE_CLI_USER = admin

ANCHORE_CLI_PASS = foobar

Quanto sopra imposta i parametri solo per la shell corrente. Per impostare la shell corrente e altri processi che iniziano da essa, usiamo il comando export

esporta ANCHORE_CLI_URL

esporta ANCHORE_CLI_USER

esporta ANCHORE_CLI_PASS

Con i parametri definiti, l’installazione di AchoreCLI è completa e sei pronto per scansionare le immagini.

Passaggio 4: – Aggiunta e analisi di immagini

Ora che abbiamo Anchore Engine in esecuzione e la CLI configurata, imparerai come aggiungere e analizzare le immagini per problemi di sicurezza. In questo tutorial analizzeremo due immagini. -openjdk: 8-jre-alpine con vulnerabilità e debian: ultimo senza .

Analizzare le immagini

Per procedere, dobbiamo prima aggiungere le immagini al motore. Per aggiungere le immagini

immagine anchore-cli aggiungi openjdk: 8-jre-alpine

Aggiungi debian immagine stabile: ultimo

immagine anchore-cli aggiungi docker.io/library/debian:latest

Aggiungi altre immagini

immagine anchore-cli aggiungi openjdk: 10-jdk

immagine anchore-cli aggiungi openjdk: 11-jdk

Dopo aver aggiunto un’immagine al motore Anchore, l’analisi inizia immediatamente. Se sono presenti più immagini caricate, vengono inserite in una coda e analizzate una alla volta. Puoi controllare l’avanzamento e vedere l’elenco delle immagini caricate insieme al loro stato di analisi.

Per visualizzare l’elenco, eseguire il comando

elenco di immagini anchore-cli

Produzione

[Email protected]: ~ / anchore $ anchore-cli elenco di immagini
Stato dell’analisi del digest dell’immagine del tag completo
docker.io/openjdk:10-jdk sha256: 923d074ef1f4f0dceef68d9bad8be19c918d9ca8180a26b037e00576f24c2cb4analyzed
docker.io/openjdk:11-jdk sha256: 9923c0853475007397ed5c91438c12262476d99372d4cd4d7d44d05e9af5c077analyzed
docker.io/openjdk:8-jre-alpine sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52analyzed

A seconda del numero di immagini, dimensioni e tempo trascorso dopo l’aggiunta, verranno analizzati per quelli completi, analizzando per quelli in corso e non analizzati per le immagini in coda.

Passaggio 5: – Recupera e visualizza i risultati dell’analisi

Una volta completata l’analisi, è possibile controllare i risultati e vedere i risultati per le scansioni di vulnerabilità, i controlli delle politiche e altri problemi identificati dal motore.

Per verificare i risultati della scansione delle vulnerabilità su openjdk: immagine vulnerabile 8-jre-alpine

Correre

immagine ancore-cli vuln openjdk: 8-jre-alpine all

Produzione

[Email protected]: ~ / anchore $ anchore-cli immagine vuln openjdk: 8-jre-alpine all
Vulnerabilità IDPackage Severity Fix Ref CVE Vulnerability URL
CVE-2018-1000654 libtasn1-4.13-r0 Alto 4.14-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000654
CVE-2019-12900 libbz2-1.0.6-r6 High 1.0.6-r7 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12900
CVE-2019-14697 musl-1.1.20-r4 High 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14697
CVE-2019-14697 musl-utils-1.1.20-r4 High 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14697
CVE-2019-8457 sqlite-libs-3.26.0-r3 Alta 3.28.0-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-8457
CVE-2018-14498 libjpeg-turbo-1.5.3-r4 Medium 1.5.3-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14498

Il rapporto mostra l’identificatore CVE, il pacchetto vulnerabile, la gravità e se esiste una correzione o meno. Per la nostra immagine openjdk: 8-jre-alpine, l’analisi mostra che ha cinque vulnerabilità elevate e un certo numero di vulnerabilità medie e trascurabili. (alcuni non mostrati sopra).

Per visualizzare i risultati delle vulnerabilità per un debian immagine stabile: più recente

Esegui il comando

anchore-cli image vuln docker.io/library/debian:latest all

Produzione

[Email protected]: ~ / anchore $ anchore-cli immagine vuln debian: ultime tutte
Vulnerabilità IDPackage Severity Fix CVE RefsVulnerability URL
CVE-2005-2541 tar-1.30 + dfsg-6 Trascurabile Nessuno https://security-tracker.debian.org/tracker/CVE-2005-2541
CVE-2019-1010022libc-bin-2.28-10 Trascurabile Nessuno https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010022libc6-2.28-10 Trascurabile Nessuno https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010023libc-bin-2.28-10 Trascurabile Nessuno https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010023libc6-2.28-10 Trascurabile Nessuno https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010024libc-bin-2.28-10 Trascurabile Nessuno https://security-tracker.debian.org/tracker/CVE-2019-1010024

Come si può vedere dal rapporto, l’immagine debian: latest ha vulnerabilità trascurabili e nessuna correzione.

Per vedere i risultati della valutazione della politica per l’immagine instabile openjdk: 8-jre-alpine

correre

anchore-cli valutare check openjdk: 8-jre-alpine

Output: i risultati mostrano un errore

[Email protected]: ~ / anchore $ anchore-cli valuta verifica openjdk: 8-jre-alpine
Immagine Digest: sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52
Tag completo: docker.io/openjdk:8-jre-alpine
Stato: fallito
Last Eval: 2019-09-20T12: 03: 32Z
ID politica: 2c53a13c-1765-11e8-82ef-23527761d060

L’immagine openjdk: 8-jre-alpine viola l’ID della politica specificato (ID politica: 2c53a13c-1765-11e8-82ef-23527761d060) e quindi restituisce uno stato Fail.

Ora che abbiamo visto come risponde Anchore Engine dopo aver rilevato una violazione delle norme, è tempo di verificare se si comporta con il nostro debian stabile delle immagini:.

Controllo delle politiche per debian: ultima immagine stabile

anchore-cli valuta check docker.io/library/debian:latest –detail

[Email protected]: ~ / anchore $ anchore-cli valuta check docker.io/library/debian:latest –detail
Digest immagine: sha256: d3351d5bb795302c8207de4db9e0b6eb23bcbfd9cae5a90b89ca01f49d0f792d
Tag completo: docker.io/library/debian:latest
ID dell’immagine: c2c03a296d2329a4f3ab72a7bf38b78a8a80108204d326b0139d6af700e152d1
Stato: pass
Last Eval: 2019-09-20T12: 00: 06Z
ID politica: 2c53a13c-1765-11e8-82ef-23527761d060
Azione finale: avvisare
Motivo dell’azione finale: policy_evaluation
Trigger gateDetail Status
dockerfileinstruction Direttiva dockerfile ‘HEALTHCHECK’ non trovata, condizione corrispondente ‘not_exists’ checkwarn

I risultati mostrano lo stato Pass e un’azione finale di Avvisa a causa della mancata corrispondenza delle informazioni con una direttiva Dockerfile. Ciò non fallisce ma può richiedere il controllo e la risoluzione del problema.

Configurazione e utilizzo del plug-in dello scanner di immagini per container Anchore in Jenkins

Passaggio 6: – Aggiungi e configura il plug-in dello scanner di immagini per container Anchore in Jenkins

In questo passaggio, integreremo il motore di ancoraggio con il server Jenkins. Jenkins è un server open source basato su Java per automatizzare una vasta gamma di attività ripetitive nel ciclo di sviluppo del software.

Il Plug-in Anchore è disponibile in Jenkins ma non è installato di default.

Accedi a Jenkins utilizzando un browser web

http: // your_server_ip_or_domain: 8080

Inserisci il nome utente e la password.

Vai a Menu di Jenkins

Individua e seleziona Gestisci Jenkins

Vai a Gestisci plugin

Sul Scheda disponibile, scorrere fino a Strumenti di costruzione e selezionare il Scanner di immagini per container Anchore

Clicca il Installa senza riavvio opzione.

Dopo la corretta installazione di Plug-in Anchore Container Image Scanner, il passaggio successivo è configurare le credenziali.

Vai al Jenkins menu e selezionare il Gestisci Jenkins linguetta.

Aperto Configura il sistema.

Individua il Configurazione dell’ancoraggio.

Selezionare Modalità motore

Inserisci il Anchore Engine dettagli (URL del motore, nome utente e password e porta 8228 – la porta predefinita per il motore).

URL: http: // your_server_IP: 8228 / v1

Immettere il nome utente = admin
Immettere la password = foobar o nuova password se è stata modificata Passaggio 3 (sopra)

Clic Salva

Configura Plugin Anchore

Passaggio 8: – Aggiunta e scansione di immagini

Clic Nuovo oggetto nella Dashboard di Jenkins nel menu in alto a sinistra

Questo aprirà una schermata con diverse opzioni.
Digitare il nome desiderato per il progetto di test nel campo Immettere il nome dell’elemento.

In questo progetto, useremo la build Pipeline.
Seleziona il Tubatura e clicca Ok.

Ora sei pronto per scansionare le immagini. Nel nostro caso, utilizzeremo le immagini già presenti nel registro docker accessibile da Anchore Engine.

Per fare ciò, aggiungerai lo script della pipeline che specificherà l’immagine da scansionare.

Passaggio 9: – Aggiungi script della pipeline

Scorri verso il basso fino alla sezione Pipeline e aggiungi lo script per specificare l’immagine da scansionare. Inizieremo con openjdk: 8-jre-alpine che contiene alcune vulnerabilità.

nodo {
def imageLine = ‘openjdk: 8-jre-alpine’`
file writeFile: ‘anchore_images’, testo: imageLine`
nome anchore: ‘anchore_images’`
}

Clic Salva

Passaggio 10: – Eseguire la compilazione e rivedere i rapporti di scansione

Dal menu Jenkins

Clic Costruisci ora

Questo avvierà il processo di compilazione, che richiede alcuni minuti a seconda delle dimensioni dell’immagine. Dopo il completamento, un numero e un pulsante colorato appariranno nella Cronologia build. Questo avrà un colore rosso per Fail o Blue for Pass. Facendo clic sul pulsante verranno visualizzati più risultati.

Passaggio 11: – Rivedere i risultati

Clicca su Build # per visualizzare maggiori dettagli
Questo apre a Uscita console finestra che indica un errore – Rapporto Anchore (FAIL)

I report dettagliati indicano se l’analisi è stata un errore o un pass e forniscono diversi report che mostrano le vulnerabilità, gli avvisi e altri in base alla configurazione. Per impostazione predefinita, il plug-in è configurato per fallire una compilazione (Fermare) ogni volta che ci sono vulnerabilità. Di seguito sono riportati gli screenshot per i rapporti su politica e sicurezza.

Riepilogo della valutazione della politica di Anchore

Di seguito è riportato uno screenshot dei risultati di sicurezza per l’immagine vulnerabile.

Elenco delle vulnerabilità e delle esposizioni comuni (CVE)

Se ora eseguiamo la scansione di un’immagine stabile, debian: latest, senza vulnerabilità, otteniamo i risultati di seguito.

Riepilogo valutazione politica di ancoraggio (Pass)

Pass dell’elenco CVE (Common Vulnerabilities and Exposures) 

Conclusione

Anchore Container Image Scanner è un potente strumento di analisi delle immagini che identifica una vasta gamma di vulnerabilità e problemi di policy nelle immagini Docker. Ha molte opzioni di personalizzazione e può essere configurato su come rispondere al rilevamento di problemi durante l’analisi. Uno di questi è quello di rompere la build quando il motore incontra una grave vulnerabilità.

Se stai cercando di costruire la tua carriera in DevSecOps, dai un’occhiata a questo Corso Udemy.

TAGS:

  • Open Source

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map