Zijn uw containers veilig genoeg voor productie?Containers bieden een uitstekende isolatie tussen applicaties, maar verkeerde configuraties, kwetsbare images en onveilige runtime-instellingen kunnen containers van een beveiligingsvoordeel in een risico veranderen. Deze handleiding behandelt de beveiligingspraktijken die productiecontaineromgevingen vereisen.
Belangrijkste afhaalrestaurants
- Begin met minimale afbeeldingen:Distroless- en Alpine-images verminderen het aanvalsoppervlak met 90% vergeleken met volledige OS-images.
- Scannen in elke fase:Bouwen, pushen, implementeren en continu in het register registreren. Kwetsbaarheden worden pas na de implementatie ontdekt.
- Voer nooit als root uit:Rootcontainers kunnen naar de host ontsnappen. Niet-rootcontainers blijven onder controle, zelfs als ze gecompromitteerd zijn.
- Alleen-lezen bestandssystemen:Als de container niet hoeft te schrijven, maakt u het bestandssysteem alleen-lezen om persistentie van malware te voorkomen.
- Runtime-monitoring vangt op wat scannen mist:Zero-day-exploits, supply chain-aanvallen en insider-bedreigingen vereisen runtime-detectie.
Beeldbeveiliging
Gebruik minimale basisafbeeldingen
Elk pakket in een containerimage is een potentieel aanvalsoppervlak. Een typisch Ubuntu-image bevat meer dan 100 pakketten; een distributieloze afbeelding bevat alleen de runtime van de applicatie. Gebruik Google Distroless voor Java, Python, Node.js en Go-applicaties. Gebruik Alpine (5MB) als je een shell nodig hebt voor foutopsporing. Gebruik nooit volledige OS-images (Ubuntu, Debian, CentOS) in productie; deze bevatten honderden onnodige pakketten met bekende kwetsbaarheden.
Bouwt in meerdere fasen
Gebruik Dockerfiles met meerdere fasen om build-afhankelijkheden te scheiden van runtime-images. De bouwfase omvat compilers, pakketbeheerders en ontwikkelingstools. De laatste fase bevat alleen de gecompileerde applicatie en minimale runtime-afhankelijkheden. Dit voorkomt dat buildtools (die vaak CVE's met een hoge ernst hebben) in productie-images verschijnen.
Pijplijn voor het scannen van afbeeldingen
- Bouwtijd:Scan in de CI-pijplijn voordat u deze naar het register pusht. Blokbouwingen met kritieke kwetsbaarheden.
- Register:Continu scannen in ECR, ACR of Harbor vangt nieuw ontdekte CVE's op in bestaande afbeeldingen.
- Toegang:Kubernetes toegangscontrollers verifiëren de resultaten van de beeldscan voordat ze de implementatie toestaan.
- Looptijd:Controleer op afwijkend containergedrag dat kan duiden op misbruik van niet-gepatchte kwetsbaarheden.
Runtime-beveiliging
Harden van containers
| Instelling | Aanbevolen waarde | Waarom |
|---|---|---|
| runAsNonRoot | waar | Voorkomt containerontsnapping via rootrechten |
| readOnlyRootFilesystem | waar | Voorkomt dat malware naar bestandssysteem |
| schrijft allowPrivilegeEscalatie | vals | Voorkomt dat processen extra rechten krijgen |
| mogelijkheden | drop: ["ALLE"] | Verwijdert alle Linux mogelijkheden, voeg alleen toe wat nodig is |
| seccompProfiel | RuntimeDefault | Beperkt systeemaanroepen die beschikbaar zijn voor de container |
| bronnen.limieten | CPU en geheugen instellen | Voorkomt misbruik van hulpbronnen (crypto-mining, DoS) |
Runtime-monitoring met Falco
Falco controleert het gedrag van containers op basis van de beveiligingsregels en waarschuwt bij overtredingen. Standaardregels detecteren: shell voortgebracht in een container, toegang tot gevoelige bestanden (/etc/shadow, /etc/passwd), onverwachte netwerkverbindingen, pogingen tot escalatie van bevoegdheden, uitvoering van pakketbeheerder in productiecontainers en crypto-mining-processen. Aangepaste regels kunnen worden toegevoegd voor uw specifieke applicatiegedrag.
Beveiliging van de toeleveringsketen
Ondertekening en verificatie van afbeeldingen
Onderteken containerimages tijdens het bouwen met cosign (Sigstore) of Docker Content Trust. Verifieer handtekeningen bij implementatie via Kubernetes toegangscontrollers. Dit zorgt ervoor dat alleen images die door uw CI/CD-pijplijn zijn gebouwd, kunnen worden ingezet, waardoor aanvallen in de supply chain worden voorkomen waarbij aanvallers kwaadaardige afbeeldingen naar uw register pushen.
Software stuklijst (SBOM)
Genereer SBOM's voor elke containerimage met Syft of Trivy. Een SBOM vermeldt elk onderdeel (OS-pakketten, bibliotheken, afhankelijkheden) in de afbeelding. Wanneer er een nieuwe kwetsbaarheid wordt onthuld, kunt u onmiddellijk identificeren welke afbeeldingen getroffen zijn zonder alles opnieuw te scannen. SBOM's worden steeds vaker vereist door regelgeving en zakelijke klanten.
Hoe Opsio containers beveiligt
- Afbeeldingspijplijn:We implementeren scannen, ondertekenen en beleidshandhaving gedurende de gehele levenscyclus van uw containerimage.
- Runtime-beveiliging:Wij implementeren en beheren Falco/Sysdig voor continue monitoring van de containerruntime.
- Kubernetes verharding:We versterken clusterconfiguraties volgens CIS-benchmarks met voortdurende monitoring van de naleving.
- Reactie op incidenten:Ons SOC-team reageert op containerveiligheidsincidenten met containment- en forensische capaciteiten.
Veelgestelde vragen
Zijn containers veiliger dan VM's?
Containers bieden isolatie op procesniveau via Linux naamruimten en cgroups, terwijl VM's isolatie op hardwareniveau bieden via hypervisors. VM's hebben sterkere isolatiegrenzen. Containers bieden een snellere implementatie en een kleiner aanvalsoppervlak (bij gebruik van minimale images). In de praktijk zijn goed geconfigureerde containers met runtime-beveiligingsmonitoring veilig genoeg voor de meeste productieworkloads. Zeer gevoelige werklasten kunnen profiteren van isolatie op VM-niveau of container-sandboxing (gVisor, Kata Containers).
Wat is het grootste veiligheidsrisico voor containers?
Containers uitvoeren als root met onbeperkte mogelijkheden. Een rootcontainer met alle mogelijkheden kan ontsnappen naar het hostsysteem en toegang krijgen tot andere containers, hostbronnen en mogelijk de Kubernetes API server. De oplossing is eenvoudig: stel runAsNonRoot: true in, laat alle mogelijkheden vallen en gebruik alleen-lezen bestandssystemen. Deze drie instellingen elimineren het grootste deel van de containerveiligheidsrisico's.
Hoe ga ik om met geheimen in containers?
Bak nooit geheimen in containerimages en geef ze nooit door als omgevingsvariabelen (zichtbaar in procesoverzichten en logboeken). Gebruik extern geheimbeheer: HashiCorp Vault met zijspaninjectie, AWS Secrets Manager met ECS/EKS integratie, of Azure Key Vault met CSI-stuurprogramma. Geheimen moeten tijdens runtime worden geïnjecteerd en alleen in het geheugen worden opgeslagen, nooit op schijf.
