Docker: Korjaa kuvien haavoittuvuudet Trivyn ja Copan avulla
Docker-konttikuvat sisältävät usein tietoturva-aukkoja, jotka periytyvät niiden perustana olevista käyttöjärjestelmäpaketeista. Kuvia ei tarvitse rakentaa uudelleen alusta alkaen, vaan voit käyttää Trivyä haavoittuvuuksien skannaamiseen ja Copa:ta niiden korjaamiseen suoraan. Tämä opas näyttää, kuinka tunnistaa ja korjata konttien haavoittuvuuksia Ubuntu-, Debian-, RHEL-, CentOS- ja Fedora-järjestelmissä näiden kahden tehokkaan avoimen lähdekoodin työkalun avulla.
Tässä oppaassa opit:
- Kuinka asentaa Trivy-haavoittuvuusskanneri Ubuntulle/Debianille
- Kuinka asentaa Copa-säiliön korjaustyökalu
- Kuinka skannata Docker-kuvia käyttöjärjestelmän haavoittuvuuksien varalta
- Kuinka korjata kontin haavoittuvuudet automaattisesti
- Kuinka varmistaa, että korjatut kuvat ovat haavoittumattomia
Artikkelin yhteenveto: Skannaa Docker-kuvat haavoittuvuuksien varalta Trivyn avulla ja korjaa ne automaattisesti Copan avulla.
| Askellus | Komento/Toiminto |
|---|---|
| 1. Skannaa kuva | |
| 2. Vie JSON-raportti | |
| 3. Käynnistä BuildKit | |
| 4. Korjauskuva | |
Vaihe 1: Asenna Trivy-haavoittuvuusskanneri
Trivy on Aqua Securityn kehittämä avoimen lähdekoodin haavoittuvuusskanneri. Se havaitsee haavoittuvuuksia käyttöjärjestelmän paketeissa, sovellusten riippuvuuksissa ja konttikuvissa.
Ubuntu/Debian
-
Asenna riippuvuudet: Asenna ensin wget- ja gnupg-paketit, jotka tarvitaan repositorion lisäämiseen:
$ sudo apt-get install wget gnupg -y Lisää Trivy GPG -avain: Lataa ja lisää Trivyn arkiston allekirjoitusavain:
$ wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/nullLisää Trivy-repositorio: Lisää virallinen Trivy-repositorio lähdeluetteloosi:
$ echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb generic main" | sudo tee -a /etc/apt/sources.list.d/trivy.listAsenna Trivy: Päivitä pakettien luettelo ja asenna Trivy:
$ sudo apt-get update $ sudo apt-get install trivy -y
RHEL/CentOS/Fedora
Lisää Trivy-tietovarasto: Luo Trivy-tietovarastotiedosto:
# sudo tee /etc/yum.repos.d/trivy.repo << 'EOF' [trivy] name=Trivy repository baseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://aquasecurity.github.io/trivy-repo/rpm/public.key EOFAsenna Trivy: Käytä dnf- tai yum-komentoa asennukseen:
# sudo dnf install trivy -y
Varmista asennus tarkistamalla versio:
$ trivy --versionVaihe 2: Asenna Copa-patchausohjelma
Copa (Copacetic) on CNCF:n sandbox-projekti, joka korjaa konttikuvia suoraan ilman täydellistä uudelleenrakennusta. Se käyttää skannereiden kuten Trivyn haavoittuvuusselosteita turvallisuuspäivitysten soveltamiseen. Copa jaetaan yhtenä binääritiedostona, joka toimii kaikissa Linux-jakelussa.
Lataa Copa-binaari: Hanki valmiiksi käännetty binaari viralliselta Copa GitHub -julkaisusivulta:
$ wget https://github.com/project-copacetic/copacetic/releases/download/v0.9.0/copa_0.9.0_linux_amd64.tar.gzPura arkisto: Pura ladattu tar-tiedosto:
$ tar -xzf copa_0.9.0_linux_amd64.tar.gz-
Asenna Copa: Siirrä suoritettava tiedosto järjestelmän polkuun:
$ sudo mv copa /usr/local/bin/ Tarkista asennus: Varmista, että Copa on asennettu oikein:
$ copa --version
Vaihe 3: Skannaa säiliökuva haavoittuvuuksien varalta
Ennen korjaamista sinun täytyy tunnistaa haavoittuvuudet konttikuvassasi. Seuraavat vaiheet käyttävät esimerkkinä linuxconfig/instantprivacy – korvaa se omalla kuvasi nimellä.
Lataa konttikuva: Lataa kuva, jonka haluat skannata:
$ sudo docker pull linuxconfig/instantprivacyTarkista haavoittuvuudet: Suorita Trivy tarkistaaksesi käyttöjärjestelmätason haavoittuvuudet.
--ignore-unfixed-lipuke sulkee pois haavoittuvuudet, joihin ei ole saatavilla korjausta:$ sudo trivy image --vuln-type os --ignore-unfixed linuxconfig/instantprivacyVie JSON-raportti: Copa vaatii skannaustulokset JSON-muodossa:
$ trivy image --vuln-type os --ignore-unfixed -f json -o instantprivacy.json linuxconfig/instantprivacy
Vaihe 4: Päivitä säiliökuva Copan avulla
Copa käyttää BuildKitiä konttikuvien korjausten soveltamiseen.
Käynnistä BuildKit-säilö: Käynnistä BuildKit privilegoituna säilönä:
$ sudo docker run --detach --rm --privileged \ -p 127.0.0.1:8888:8888/tcp \ --name buildkitd \ --entrypoint buildkitd \ moby/buildkit:v0.11.4 \ --addr tcp://0.0.0.0:8888-
Varmista, että BuildKit on käynnissä: Vahvista, että kontti käynnistyi onnistuneesti:
$ sudo docker ps Korjaa konttikuvake: Käytä Copa-sovellusta tietoturvakorjausten tekemiseen.
-t-lipuke määrittää korjatun kuvan tunnisteen:$ sudo copa patch \ -i docker.io/linuxconfig/instantprivacy \ -r instantprivacy.json \ -t patched \ -a tcp://0.0.0.0:8888Copa lataa tietoturvapäivitykset ja luo uuden kuvatason, johon päivitykset on sovellettu. Päivitetty kuva merkitään nimellä
linuxconfig/instantprivacy:patched.
Vaihe 5: Vahvista korjattu kuva
Skannaa korjattu kuva: Varmista, että kaikki haavoittuvuudet on korjattu:
$ sudo trivy image --vuln-type os --ignore-unfixed linuxconfig/instantprivacy:patchedTestaa korjattu kuva: Varmista, että korjattu kuva toimii oikein:
$ sudo docker run --name=instantprivacy -d -p 8118:8118 linuxconfig/instantprivacy:patched $ export http_proxy="http://localhost:8118" $ curl api.ipify.org 45.84.107.174Siivous: Pysäytä BuildKit-säilö, kun työ on valmis:
$ sudo docker stop buildkitd
Johtopäätös
Olet onnistuneesti skannannut Docker-konttikuvan turvallisuuspuutteiden varalta Trivyn avulla ja korjannut ne automaattisesti Copan avulla. Tämä lähestymistapa on nopeampi kuin kuvien uudelleenrakentaminen alusta alkaen ja lisää vain yhden korjauskerroksen, säilyttäen alkuperäisen kuvan rakenteen. Tuotantoympäristöissä integroi nämä työkalut CI/CD-putkeesi, jotta voit skannata ja korjata konttikuvat automaattisesti ennen käyttöönottoa. Lisätietoja saat virallisesta Trivyn dokumentaatiosta ja Copa-projektin verkkosivuilta.
Usein Kysytyt Kysymykset
- Minkä tyyppisiä haavoittuvuuksia Copa voi korjata? Copa korjaa vain käyttöjärjestelmätason pakettien haavoittuvuuksia (kuten Debian-, Ubuntu-, Alpine- tai RHEL-paketteja). Se ei pysty korjaamaan sovellustason riippuvuuksia, kuten npm-paketteja, Python pip -moduuleja tai Go-moduuleja. Näissä tapauksissa sinun tulee uudelleenrakentaa sovellus päivitettyjen riippuvuuksien kanssa.
- Miksi tarvitsen BuildKitin Copa:n ajamiseen? Copa käyttää BuildKitin ero- ja yhdistämistoimintoja luodakseen uuden kuvaruudun, joka sisältää vain korjatut tiedostot. BuildKit toimii etuoikeutetussa kontissa, joka hoitaa matalan tason kuvan käsittelyt. Ilman BuildKitiä Copa ei voi soveltaa korjauksia kontti-tiedostojärjestelmään.
- Voinko päivittää kuvia yksityisistä rekistereistä? Kyllä, Copa tukee yksityisiä rekistereitä. Sinun on kirjauduttava sisään
docker loginennen patch-komennon suorittamista. Copa käyttää Docker-tunnuksiasi peruskuvan hakemiseen ja päivitetyn tuloksen työntämiseen tarvittaessa. - Mitä tapahtuu, jos Copa ei voi korjata kaikkia haavoittuvuuksia? Joihinkin haavoittuvuuksiin ei ehkä ole vielä saatavilla korjausta. Trivyn
--ignore-unfixed-lipuke poistaa nämä raportista. Copa korjaa kaiken, mihin löytyy saatavilla oleva korjaus. Suorita Trivy uudelleen ilman--ignore-unfixed-lippua nähdäksesi kaikki haavoittuvuudet, mukaan lukien ne, joihin odotetaan korjausta. - Kuinka päivitän Copan uusimpaan versioon? Lataa uusin versio Copan GitHubin release-sivulta ja korvaa binääritiedosto kansiossa
/usr/local/bin/. Tarkista nykyinen versio komennollacopa --version.





