Docker: Remediați vulnerabilitățile imaginilor cu Trivy și Copa
Imaginile container Docker conțin adesea vulnerabilități de securitate moștenite de la pachetele sistemului de operare de bază. În loc să reconstruiți imaginile de la zero, puteți folosi Trivy pentru a scana vulnerabilitățile și Copa pentru a le remedia direct. Acest tutorial demonstrează cum să identificați și să remediați vulnerabilitățile containerelor pe sistemele Ubuntu, Debian, RHEL, CentOS și Fedora folosind aceste două instrumente open-source puternice.
În acest tutorial vei învăța:
- Cum să instalezi scanner-ul de vulnerabilități Trivy pe Ubuntu/Debian
- Cum să instalezi instrumentul de patching pentru containere Copa
- Cum să scanezi imaginile Docker pentru vulnerabilități ale sistemului de operare
- Cum să remediați automat vulnerabilitățile containerelor
- Cum să verifici dacă imaginile patch-uite sunt lipsite de vulnerabilități
Rezumat al articolului: Scanează imaginile Docker pentru vulnerabilități cu Trivy și aplică-le automat patch-uri folosind Copa.
| Pas | Comandă/Acțiune |
|---|---|
| 1. Scanează imaginea | |
| 2. Exportă raport JSON | |
| 3. Pornește BuildKit | |
| 4. Imagine cu patch | |
Pasul 1: Instalează scannerul de vulnerabilități Trivy
Trivy este un scanner de vulnerabilități open-source dezvoltat de Aqua Security. Acesta detectează vulnerabilități în pachetele sistemului de operare, în dependențele aplicațiilor și în imaginile containerelor.
Ubuntu/Debian
-
Instalează dependențele: Mai întâi instalează pachetele wget și gnupg necesare pentru adăugarea depozitului:
$ sudo apt-get install wget gnupg -y Adaugă cheia GPG Trivy: Descarcă și adaugă cheia de semnătură a depozitului Trivy:
$ wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/nullAdaugă depozitul Trivy: Adaugă depozitul oficial Trivy în lista ta de surse:
$ 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.listInstalează Trivy: Actualizează lista de pachete și instalează Trivy:
$ sudo apt-get update $ sudo apt-get install trivy -y
RHEL/CentOS/Fedora
Adaugă depozitul Trivy: Creează fișierul repo Trivy:
# 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 EOFInstalează Trivy: Folosește dnf sau yum pentru a instala:
# sudo dnf install trivy -y
Verificați instalarea verificând versiunea:
$ trivy --versionPasul 2: Instalați instrumentul de patching Copa
Copa (Copacetic) este un proiect CNCF sandbox care aplică patch-uri imaginilor de containere direct, fără a necesita o reconstruire completă. Folosește rapoarte de vulnerabilitate de la scanere precum Trivy pentru a aplica actualizările de securitate. Copa este distribuit ca un singur fișier binar care funcționează pe toate distribuțiile Linux.
Descarcă binarul Copa: Obține binarul pre-compilat de pe pagina oficială de release-uri Copa de pe GitHub:
$ wget https://github.com/project-copacetic/copacetic/releases/download/v0.9.0/copa_0.9.0_linux_amd64.tar.gzExtrageți arhiva: Dezarhivați fișierul tar descărcat:
$ tar -xzf copa_0.9.0_linux_amd64.tar.gz-
Instalează Copa: Mută fișierul binar în calea sistemului tău:
$ sudo mv copa /usr/local/bin/ Verificați instalarea: Confirmați că Copa este instalat corect:
$ copa --version
Pasul 3: Scanați imaginea containerului pentru vulnerabilități
Înainte de a aplica patch-uri, trebuie să identificați vulnerabilitățile din imaginea containerului vostru. Următorii pași folosesc linuxconfig/instantprivacy ca exemplu – înlocuiți-l cu numele propriei imagini.
Trageți imaginea containerului: Descărcați imaginea pe care doriți să o scanați:
$ sudo docker pull linuxconfig/instantprivacyScanare pentru vulnerabilități: Rulează Trivy pentru a scana vulnerabilități la nivel de sistem de operare. Flag-ul
--ignore-unfixedexclude vulnerabilitățile fără soluții disponibile:$ sudo trivy image --vuln-type os --ignore-unfixed linuxconfig/instantprivacyExportă raportul JSON: Copa necesită rezultatele scanării în format JSON:
$ trivy image --vuln-type os --ignore-unfixed -f json -o instantprivacy.json linuxconfig/instantprivacy
Pasul 4: Repararea imaginii containerului cu Copa
Copa folosește BuildKit pentru a aplica patch-uri imaginilor de container.
Pornește containerul BuildKit: Lansează BuildKit ca un container privilegiat:
$ 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-
Verificați dacă BuildKit rulează: Confirmați că containerul a pornit cu succes:
$ sudo docker ps Aplicați patch pe imaginea containerului: Folosiți Copa pentru a aplica patch-uri de securitate. Flagul
-tspecifică eticheta pentru imaginea patch-uită:$ sudo copa patch \ -i docker.io/linuxconfig/instantprivacy \ -r instantprivacy.json \ -t patched \ -a tcp://0.0.0.0:8888Copa descarcă actualizări de securitate și creează un nou strat de imagine cu patch-urile aplicate. Imaginea patch-uită va fi etichetată ca
linuxconfig/instantprivacy:patched.
Pasul 5: Verifică imaginea patch-uită
Scanează imaginea patch-uită: Confirmă că toate vulnerabilitățile au fost rezolvate:
$ sudo trivy image --vuln-type os --ignore-unfixed linuxconfig/instantprivacy:patchedTestează imaginea patch-uită: Verifică dacă imaginea patch-uită rulează corect:
$ 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.174Curățare: Opriți containerul BuildKit după ce ați terminat:
$ sudo docker stop buildkitd
Concluzie
Ai scanat cu succes o imagine de container Docker pentru vulnerabilități de securitate folosind Trivy și le-ai reparat automat cu Copa. Această abordare este mai rapidă decât reconstruirea imaginilor de la zero și adaugă doar un singur strat de corecție, păstrând structura originală a imaginii. Pentru mediile de producție, integrează aceste instrumente în fluxul tău CI/CD pentru a scana și remedia automat imaginile de container înainte de implementare. Pentru mai multe informații, consultă documentația oficială Trivy și site-ul proiectului Copa.
Întrebări frecvente
- Ce tipuri de vulnerabilități poate remedia Copa? Copa remediază doar vulnerabilitățile la nivel de pachete OS (precum pachetele Debian, Ubuntu, Alpine sau RHEL). Nu poate remedia dependențele la nivel de aplicație, cum ar fi pachetele npm, modulele Python pip sau modulele Go. Pentru acestea, este necesar să reconstruiești aplicația cu dependențe actualizate.
- De ce am nevoie de BuildKit pentru a rula Copa? Copa folosește capabilitățile de diferențiere și fuziune ale BuildKit pentru a crea un nou strat de imagine care conține doar fișierele patch-uite. BuildKit rulează ca un container privilegiat care se ocupă de manipularea la nivel scăzut a imaginilor. Fără BuildKit, Copa nu poate aplica patch-uri la sistemul de fișiere al containerului.
- Pot să actualizez imagini din registre private? Da, Copa suportă registrele private. Trebuie să te autentifici cu
docker loginînainte de a rula comanda de patch. Copa folosește acreditările tale Docker pentru a trage imaginea de bază și pentru a împinge rezultatul actualizat, dacă este necesar. - Ce se întâmplă dacă Copa nu poate remedia toate vulnerabilitățile? Unele vulnerabilități s-ar putea să nu aibă încă remedieri disponibile. Flagul
--ignore-unfixeddin Trivy le exclude din raport. Copa va remedia tot ce are o soluție disponibilă. Rulați din nou Trivy fără--ignore-unfixedpentru a vedea toate vulnerabilitățile, inclusiv pe cele care așteaptă patch-uri. - Cum actualizez Copa la cea mai recentă versiune? Descarcă ultima versiune de pe pagina de release-uri Copa de pe GitHub și înlocuiește binarul din
/usr/local/bin/. Verifică versiunea curentă cucopa --version.





