Er dine containere sikre nok til produktion?Containere giver fremragende isolation mellem applikationer, men fejlkonfigurationer, sårbare billeder og usikre runtime-indstillinger kan gøre containere fra en sikkerhedsfordel til en forpligtelse. Denne vejledning dækker den sikkerhedspraksis, som produktionscontainermiljøer kræver.
Key Takeaways
- Start med minimale billeder:Distroless og alpine billeder reducerer angrebsoverfladen med 90 % sammenlignet med fuld OS-billeder.
- Scan på hvert trin:Byg, skub, implementer og løbende i registreringsdatabasen. Sårbarheder opdages efter implementering.
- Kør aldrig som root:Rodbeholdere kan undslippe til værten. Ikke-rodbeholdere er indeholdt, selvom de er kompromitteret.
- Skrivebeskyttede filsystemer:Hvis containeren ikke behøver at skrive, skal du gøre filsystemet skrivebeskyttet for at forhindre, at malware fortsætter.
- Runtime-overvågning fanger, hvad scanningen går glip af:Zero-day exploits, supply chain-angreb og insidertrusler kræver runtime-detektion.
Billedsikkerhed
Brug minimale basisbilleder
Hver pakke i et containerbillede er potentiel angrebsoverflade. Et typisk Ubuntu-billede indeholder mere end 100 pakker; et distroløst billede indeholder kun programmets runtime. Brug Google Distroless til Java, Python, Node.js og Go applikationer. Brug Alpine (5MB), når du har brug for en shell til fejlretning. Brug aldrig fulde OS-billeder (Ubuntu, Debian, CentOS) i produktionen - de indeholder hundredvis af unødvendige pakker med kendte sårbarheder.
Byg i flere trin
Brug flertrins Dockerfiler til at adskille build-afhængigheder fra runtime-billeder. Byggestadiet inkluderer compilere, pakkeadministratorer og udviklingsværktøjer. Den sidste fase indeholder kun den kompilerede applikation og minimale runtime-afhængigheder. Dette forhindrer byggeværktøjer (som ofte har CVE'er af høj grad) i at blive vist i produktionsbilleder.
Billedscanningspipeline
- Byggetid:Scan i CI pipeline, før du skubber til registreringsdatabasen. Bloker builds med kritiske sårbarheder.
- Register:Kontinuerlig scanning i ECR, ACR eller Harbor fanger nyopdagede CVE'er i eksisterende billeder.
- Entré:Kubernetes adgangscontrollere bekræfter billedscanningsresultater, før de tillader implementering.
- Køretid:Overvåg for unormal containeradfærd, der kan indikere udnyttelse af uoprettede sårbarheder.
Runtime Security
Beholderhærdning
| Indstilling | Anbefalet værdi | Hvorfor |
|---|---|---|
| runAsNonRoot | sandt | Forhindrer containerescape gennem root-privilegier |
| readOnlyRootFilesystem | sandt | Forhindrer malware i at skrive til filsystemet |
| allowPrivilegeEscalation | falsk | Forhindrer processer i at opnå yderligere privilegier |
| kapaciteter | drop: ["ALLE"] | Fjerner alle Linux-funktioner, tilføj kun det nødvendige |
| secompProfil | RuntimeDefault | Begrænser systemopkald, der er tilgængelige for containeren |
| resources.limits | Indstil CPU og hukommelse | Forhindrer ressourcemisbrug (crypto-mining, DoS) |
Kørselsovervågning med Falco
Falco overvåger containeradfærd i forhold til sikkerhedsregler og advarer om overtrædelser. Standardregler detekterer: shell skabt inde i en container, følsom filadgang (/etc/shadow, /etc/passwd), uventede netværksforbindelser, privilegie-eskaleringsforsøg, pakkehåndteringsudførelse i produktionscontainere og krypto-mining-processer. Brugerdefinerede regler kan tilføjes til din specifikke applikationsadfærd.
Supply Chain Security
Billedsignering og -verifikation
Signer containerbilleder på byggetidspunktet ved hjælp af cosign (Sigstore) eller Docker Content Trust. Bekræft signaturer ved implementering gennem Kubernetes adgangscontrollere. Dette sikrer, at kun billeder bygget af din CI/CD-pipeline kan implementeres - forhindrer forsyningskædeangreb, hvor angribere skubber ondsindede billeder til dit register.
Softwarestykliste (SBOM)
Generer SBOM'er for hvert containerbillede ved hjælp af Syft eller Trivy. En SBOM viser hver komponent (OS-pakker, biblioteker, afhængigheder) i billedet. Når en ny sårbarhed afsløres, kan du straks identificere, hvilke billeder der er berørt uden at genscanne alt. SBOM'er kræves i stigende grad af regler og virksomhedskunder.
Hvordan Opsio sikrer containere
- Billedpipeline:Vi implementerer scanning, signering og håndhævelse af politikker på tværs af dit containerbilledes livscyklus.
- Kørselssikkerhed:Vi implementerer og administrerer Falco/Sysdig til kontinuerlig overvågning af containerkørsel.
- Kubernetes hærdning:Vi hærder klyngekonfigurationer i henhold til CIS-benchmarks med løbende overholdelsesovervågning.
- Hændelsesreaktion:Vores SOC-team reagerer på containersikkerhedshændelser med indeslutning og retsmedicinsk kapacitet.
Ofte stillede spørgsmål
Er containere mere sikre end VM'er?
Containere leverer isolation på procesniveau gennem Linux navnerum og cgroups, mens VM'er leverer isolation på hardwareniveau gennem hypervisorer. VM'er har stærkere isolationsgrænser. Containere tilbyder hurtigere implementering og mindre angrebsflade (når der bruges minimale billeder). I praksis er korrekt konfigurerede containere med runtime sikkerhedsovervågning sikre nok til de fleste produktionsarbejdsbelastninger. Meget følsomme arbejdsbelastninger kan drage fordel af VM-niveauisolering eller containersandboxing (gVisor, Kata Containers).
Hvad er den største containersikkerhedsrisiko?
Kører containere som root med ubegrænsede muligheder. En root-container med alle muligheder kan undslippe til værtssystemet, få adgang til andre containere, værtsressourcer og potentielt Kubernetes API-serveren. Rettelsen er enkel: indstil runAsNonRoot: sand, slip alle kapaciteter, og brug skrivebeskyttede filsystemer. Disse tre indstillinger eliminerer størstedelen af containersikkerhedsrisikoen.
Hvordan håndterer jeg hemmeligheder i containere?
Bag aldrig hemmeligheder ind i containerbilleder eller videregiv dem som miljøvariabler (synlige i proceslister og logfiler). Brug ekstern hemmelig styring: HashiCorp Vault med sidevognsinjektion, AWS Secrets Manager med ECS/EKS integration eller Azure Key Vault med CSI driver. Hemmeligheder bør injiceres under kørsel og kun gemmes i hukommelsen, aldrig på disken.
