Securitatea imaginilor de container ar trebui să includă măsuri de control în fiecare etapă, de la selectarea imaginii de bază până la implementarea în mediul de producție. Un proces repetabil combină scanarea vulnerabilităților, detectarea informațiilor secrete și a malware-ului, listele de componente software (SBOM), semnarea imaginilor, politicile de registru, pragurile de gravitate, gestionarea excepțiilor și rescanările periodice.
Docker împachetează aplicațiile împreună cu codul, bibliotecile și dependențele necesare pentru a le rula în interiorul containerelor. Acest lucru face ca imaginea însăși să constituie o barieră importantă de securitate: conținutul selectat în timpul compilării poate trece de la testare la producție. Docker compilează și rulează aplicații în containere, iar izolarea containerelor depinde de împachetarea unei aplicații împreună cu dependențele sale.
Cuprins
1. Stabiliți o politică privind imaginile de bază
Începeți fiecare revizuire a imaginilor cu imaginea de bază. Înregistrați ce imagine de bază utilizează versiunea respectivă și aplicați aceleași reguli de aprobare pentru fiecare depozit. Politica ar trebui să definească:
- Ce imagini de bază sunt permise.
- Cine poate aproba o nouă imagine de bază.
- Când o imagine de bază trebuie înlocuită sau reconstruită.
- Ce rezultate privind vulnerabilitățile blochează compilarea.
- Cum este urmărită imaginea de bază selectată în înregistrarea imaginii și în SBOM.
Mențineți compilarea concentrată pe pachetele și dependențele necesare aplicației. Fiecare dependență inclusă în imagine devine parte a evaluării de securitate. Prin urmare, o modificare a imaginii de bază ar trebui să declanșeze o nouă scanare și o nouă evaluare a SBOM-ului rezultat.
2. Scanați imaginile înainte ca acestea să ajungă în registru
Adăugați o scanare a vulnerabilităților după ce imaginea este construită și înainte ca aceasta să fie acceptată de registru. Trivy, Grype și Docker Scout sunt exemple de instrumente care pot fi utilizate în această etapă. Selectați un instrument sau o combinație de instrumente, apoi aplicați aceleași reguli de acceptare și respingere în fiecare pipeline.
- Construiți imaginea containerului pornind de la imaginea de bază aprobată.
- Rulați scanerul de vulnerabilități configurat asupra imaginii construite.
- Stocați rezultatul scanării împreună cu înregistrarea de creare a imaginii.
- Comparați rezultatele cu pragul de gravitate al depozitului.
- Opriți publicarea atunci când un rezultat îndeplinește regula de blocare și nu are nicio excepție aprobată.
Pipeline-ul trebuie să evalueze imaginea care va fi publicată efectiv. Scanarea doar a unui depozit sursă sau doar a imaginii de bază nu înlocuiește scanarea imaginii finale, deoarece imaginea finală conține aplicația și dependențele sale selectate.
3. Definiți pragurile de gravitate
Pragurile de gravitate transformă rezultatele scanării într-o decizie de lansare consecventă. Definiți gravitatea minimă care blochează publicarea și aplicați această regulă atât constatărilor noi, cât și celor care rămân nerezolvate din versiunile anterioare.
| Rezultat | Acțiune necesară în pipeline |
|---|---|
| Constatare sub pragul de blocare | Înregistrați rezultatul și continuați conform politicii depozitului. |
| Constatare la sau peste pragul de blocare | Opriți publicarea, cu excepția cazului în care se aplică o excepție aprobată. |
| Constatare acoperită de o excepție aprobată | Înregistrați excepția, proprietarul acesteia, motivul și data revizuirii înainte de a permite parcursul de lansare definit. |
Mențineți politica privind pragul vizibilă pentru echipă. Un rezultat al scanării nu ar trebui să impună unui dezvoltator individual să decidă ce înseamnă “risc ridicat” pentru fiecare versiune.
4. Verificați prezența secretelor și a malware-ului
Scanarea vulnerabilităților este doar o parte a procesului de revizuire a imaginii. Adăugați verificări separate pentru informații confidențiale și malware înainte de publicare.
- Scanați conținutul imaginii și rezultatul compilării pentru a identifica credențiale, tokenuri, chei private și alte informații confidențiale.
- Scanați conținutul imaginii pentru a depista malware utilizând verificările de securitate selectate de organizația dumneavoastră.
- Blocați publicarea atunci când un rezultat privind informațiile confidențiale sau programele malware îndeplinește regula de blocare a depozitului.
- Înregistrați rezultatul fiecărei verificări împreună cu înregistrarea de compilare a imaginii.
Nu considerați o scanare de vulnerabilități ca dovadă că imaginea a trecut verificările privind informațiile confidențiale și programele malware. Păstrați aceste rezultate ca controale distincte, astfel încât fiecare să aibă un rezultat clar de "promovat" sau "respins".
5. Generați și păstrați un SBOM
Generați o listă de componente software (SBOM) pentru fiecare imagine care este luată în considerare pentru publicare. SBOM-ul trebuie să reprezinte imaginea finală și să enumere componentele aplicației, bibliotecile și dependențele incluse în aceasta.
Stocați SBOM-ul împreună cu înregistrarea de compilare a imaginii și asociați-l cu identificatorul imaginii. Regenerați-l atunci când imaginea este recompilată, când imaginea de bază se modifică sau când se modifică dependențele. Utilizați SBOM-ul ca înregistrare a componentelor pentru analiza vulnerabilităților, luarea deciziilor privind excepțiile și scanările recurente.
6. Semnați imaginile și aplicați controalele de registru
Semnați o imagine după ce verificările necesare ale compilării sunt trecute cu succes. Politica de registru ar trebui să accepte implementarea numai pentru imaginile care îndeplinesc cerința de semnare și politica de scanare configurată.
- Permiteți publicarea numai din fluxurile de compilare aprobate.
- Solicitați o semnătură validă înainte de implementare.
- Păstrați rezultatele scanării și SBOM-ul asociate imaginii publicate.
- Împiedicați implementarea imaginilor care depășesc pragul de gravitate.
- Utilizați aceleași controale pentru fiecare depozit de imagini de producție.
Aceste controale leagă decizia de compilare de decizia de implementare. O imagine care a fost scanată sau semnată la un moment dat nu ar trebui să ocolească politica registrului atunci când este selectată ulterior pentru producție.
7. Gestionați excepțiile ca decizii controlate
O excepție ar trebui să fie o decizie de securitate înregistrată, nu o aprobare informală într-un chat sau o setare a pipeline-ului care rămâne dezactivată. Pentru fiecare excepție, înregistrați:
- Imaginea și constatarea vizate.
- Motivul pentru care se permite publicarea.
- Responsabilul pentru decizie.
- Măsura compensatorie, dacă este definită de politică.
- Data revizuirii sau a expirării.
Asigurați-vă că fluxul de lucru verifică dacă excepția este încă activă. La expirare, pragul normal de gravitate ar trebui să se aplice din nou. Reevaluați excepția atunci când imaginea, setul de dependențe sau rezultatul vulnerabilității se modifică.
8. Rescanați imaginile după publicare
Efectuați rescanări periodice pentru imaginile care rămân disponibile în registru și pentru imaginile care sunt implementate. Noile informații privind vulnerabilitățile pot modifica rezultatul pentru o imagine care a trecut anterior prin procesul de verificare, astfel încât scanarea inițială a versiunii nu reprezintă sfârșitul procesului de revizuire.
- Selectați imaginile și depozitele incluse în scanările periodice.
- Rulați din nou verificările configurate privind vulnerabilitățile, secretele și malware-ul.
- Comparați noile rezultate cu pragul de gravitate al depozitului.
- Inițiați acțiuni de remediere pentru noile constatări care determină blocarea.
- Restricționați implementarea atunci când o imagine publicată nu mai respectă politica.
Păstrați rezultatul scanării periodice, SBOM-ul, starea semnăturii și înregistrarea excepțiilor asociate aceleiași identități de imagine. Acest lucru oferă echipei o singură pistă de audit de la compilare până la implementare.
Lista de verificare pentru lansarea finală
- Imaginea de bază aprobată a fost selectată și înregistrată.
- Imaginea finală a fost scanată cu Trivy, Grype, Docker Scout sau combinația aprobată de instrumente de scanare.
- Pragul de gravitate a fost aplicat în mod consecvent.
- Detectarea informațiilor secrete finalizată.
- Detectarea malware-ului finalizată.
- SBOM generat pentru imaginea finală.
- Imaginea semnată după verificări reușite.
- Politica de registru impune cerințele de scanare și semnare.
- Excepțiile sunt gestionate, documentate și limitate în timp.
- Sunt programate scanări recurente pentru imaginile păstrate și implementate.