Containers zonder root: een complete handleiding voor het uitvoeren van containers en het oplossen van problemen met machtigingen in beperkte omgevingen.

Laatste update: 09/07/2026
Auteur: Isaac
  • Fundamentele verschillen tussen rootful en rootless uitvoering voor het beveiligen van het hostsysteem.
  • Beveiligingstechnieken door het verwijderen van kernelfunctionaliteiten en het gebruik van alleen-lezen bestandssystemen.
  • Gebruikersnaamruimtebeheer en ID-toewijzing om processen in beperkte omgevingen te isoleren.
  • Beveiligingsstrategieën in de toeleveringsketen en realtime monitoring van containers.

Containerbeveiliging

Tegenwoordig gebruikt vrijwel elk ontwikkelteam containers om hun applicaties te implementeren. Er is echter een cruciaal aspect dat velen over het hoofd zien: echte beveiliging. Het lanceren van een service met de standaardconfiguratie is vaak de snelste route, maar ook de gevaarlijkste, omdat het open laten staan ​​van containers een kleine codefout kan veranderen in een complete ramp voor de serverinfrastructuur.

De sleutel tot het vermijden van zelfgenoegzaamheid ligt in het begrijpen dat isolatie geen toverkunst is, maar een nauwkeurige configuratie. Van het gebruik van niet-bevoorrechte gebruikers tot het volledig controleren van kerneloproepen: het verkleinen van het aanvalsoppervlak is de enige manier om te garanderen dat, mocht een aanvaller erin slagen een container te infiltreren, hij op een ondoordringbare muur stuit die hem de toegang tot het hostsysteem ontzegt.

Containers zonder root-toegang: hoe u ze kunt uitvoeren en problemen met machtigingen kunt oplossen in omgevingen met beperkte toegang.
Gerelateerd artikel:
Containers beheersen zonder root-toegang: een complete handleiding voor machtigingen en beveiliging.

Podman en het dilemma van wortelrijk versus wortelloos

Als we het over Podman hebben, zien we twee heel verschillende uitvoeringsfilosofieën. Enerzijds is de rootful container- modus de klassieke aanpak: het proces wordt gestart als de root-gebruiker van de host. Dit betekent dat de container absolute controle over het systeem heeft, wat een tikkende tijdbom is als er een kwetsbaarheid bestaat die een aanvaller in staat stelt om privileges te escaleren.

Om deze problemen te voorkomen, is er de rootless container -modus . Hierbij heeft de engine geen daemon met superkrachten nodig om te functioneren. Het is cruciaal om te begrijpen dat, hoewel de gebruiker in de container root lijkt te zijn, deze op de host in werkelijkheid een gebruiker zonder privileges is . Dit creëert een formidabele beveiligingsbarrière, omdat elke inbreuk beperkt blijft tot de context van de gebruiker met beperkte rechten.

  GRUB geeft het menu niet weer na het wijzigen van GRUB_TIMEOUT: oorzaken en definitieve oplossing

De rootless-modus heeft echter ook nadelen, want er zijn enkele technische beperkingen waarmee rekening moet worden gehouden. Zo kunnen we bijvoorbeeld geen geprivilegieerde poorten openen (poorten lager dan 1024), en sommige netwerkfuncties, zoals het pingen van externe servers, kunnen problemen veroorzaken als ze niet correct zijn geconfigureerd. Om dit poortprobleem op te lossen, is de oplossing eenvoudig: wijs hoge poorten , zoals 8080, toe aan de interne poort van de service.

Containers met Podman
Gerelateerd artikel:
Containers met Podman: een complete gids voor pods en volumes

Het geheim van namespaces en ID-mapping

Om een ​​gewone hostgebruiker in staat te stellen als root te fungeren binnen een container zonder het systeem te beschadigen, gebruikt Linux gebruikersnamespaces . Deze technologie stelt de kernel in staat een reeks geïsoleerde ID's toe te wijzen, waardoor een koppeling ontstaat tussen de UID's van de container en die van de host.

Als we naar de bestanden /etc/subuid en /etc/subgid kijken , zien we dat aan elke gebruiker een reeks identificaties is toegewezen. Een gebruiker met UID 1000 kan bijvoorbeeld gekoppeld worden aan duizenden extra ID's. Dit betekent dat wanneer we een proces uitvoeren als de gebruiker 'sync' (UID 5) in de container, de host dit ziet als een zeer hoge UID zonder rechten , waardoor het systeem volledig veilig blijft.

Als we willen onderzoeken wat er achter de schermen gebeurt zonder een volledige container te starten, kunnen we het commando `podman unshare` gebruiken . Met deze tool kunnen we de namespace van de gebruiker betreden om de ID-map te inspecteren en te controleren of de isolatie naar behoren werkt.

Docker-beveiliging: het beveiligen van de uitvoering

Lichtgewicht containers maken met Podman op Linux
Gerelateerd artikel:
Lichtgewicht containers met Podman op Linux: een praktische gids

Als je Docker gebruikt in je omgeving, moet je een agressieve beveiligingsstrategie hanteren. De eerste stap is het toepassen van het principe van minimale bevoegdheden . Sta de container niet toe meer te doen dan strikt noodzakelijk is. Een sterke configuratie houdt in dat je de image start met de optie `--read-only` , waardoor het bestandssysteem alleen-lezen wordt en een aanvaller geen malware kan installeren of binaire bestanden kan wijzigen.

  Lekken van broncode: reële risico's en hoe u uw software kunt beschermen

Bovendien is het essentieel om de mogelijkheden van de kernel te wissen. Met `--cap-drop ALL` worden alle speciale machtigingen van de container verwijderd. Als de container specifieke machtigingen nodig heeft (zoals het openen van een bepaalde poort), herstellen we deze met `--cap-add` . Door dit toe te voegen aan de optie `--security-opt no-new-privileges` wordt elke poging tot privilege-escalatie binnen het proces geblokkeerd.

Voor beheerders van complexere implementaties is het ideaal om dit alles in het compose.yaml- bestand op te nemen . Door proceslimieten te definiëren met pids_limit en het CPU- en geheugengebruik te beperken, wordt voorkomen dat een container die zich misdraagt ​​of gecompromitteerd is, alle serverbronnen verbruikt en een denial-of-service-aanval voor de rest van de applicaties veroorzaakt.

Beveiliging van imago en toeleveringsketen

Een veilige runtime-omgeving is nutteloos als de gedownloade image vol zit met kwetsbaarheden. De sleutel is om officiële, lichtgewicht images te gebruiken . In plaats van een volledige Ubuntu-distributie te gebruiken, is het veel verstandiger om te kiezen voor slanke of Alpine Linux- versies , die het aantal geïnstalleerde tools dat een aanvaller zou kunnen misbruiken drastisch verminderen.

Een cruciale fout is het toestaan ​​dat de applicatie als root wordt uitgevoerd binnen het Dockerfile. De juiste aanpak is om een ​​specifieke gebruiker aan te maken met het commando `RUN adduser` en vervolgens de context te wijzigen met de `USER`- richtlijn . Op deze manier krijgt de applicatie nooit toegang tot het systeem met beheerdersrechten, ongeacht hoe de container wordt gestart.

Om de cyclus te voltooien, is het essentieel om geautomatiseerde kwetsbaarheidsscans in de CI/CD-pipeline te implementeren. Tools die imagelagen analyseren voordat ze de registry bereiken, voorkomen de implementatie van code met bekende kritieke fouten. Beveiliging is geen laatste stap; het moet gedurende de gehele softwarelevenscyclus worden geïntegreerd.

Toegangsbeheer en geavanceerde monitoring

In omgevingen waar meerdere ontwikkelaars Docker moeten gebruiken, is de verleiding groot om ze root-rechten te geven. Een beter alternatief is om de gebruikers toe te voegen aan de Dockerfile. Docker-groep door middel van usermod -aG dockerHet is echter belangrijk om te beseffen dat dit aanzienlijke macht verleent, dus het is raadzaam om de machtigingen aan te passen. Docker-socket operatief.

  Hoe synchroniseer en versleutel je cloudback-ups veilig?

Voor beveiliging op bedrijfsniveau is statische configuratie onvoldoende. Het is noodzakelijk om Seccomp-, AppArmor- of SELinux-profielen te implementeren . Deze mechanismen fungeren als een poortwachter en filteren systeemoproepen die de container probeert te doen naar de Linux-kernel, waardoor verdachte of ongeautoriseerde verzoeken worden geblokkeerd.

Het laatste puzzelstukje is realtime inzicht . Omdat containers tijdelijk zijn, schieten traditionele logbestanden tekort. Het centraliseren van logbestanden en het gebruik van monitoringtools die afwijkend gedrag detecteren, zoals vreemde processen die uit het niets verschijnen of pogingen om verbinding te maken met ongeautoriseerde externe netwerken, is cruciaal.

Beveiliging van virtualisatie op besturingssysteemniveau is gebaseerd op een combinatie van image-hygiëne, strikte uitvoeringsbeperkingen en constante monitoring. Door het gebruik van gebruikers zonder speciale rechten, intelligente ID-mapping en het verwijderen van onnodige kernelfunctionaliteiten bereiken we infrastructuurveerkracht en neutraliseren we elke potentiële inbraak volledig zonder de applicatieprestaties te beïnvloeden.