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

Laatste update: 10/07/2026
Auteur: Isaac

Containerbeveiliging

Ik weet zeker dat dit u wel eens is overkomen: u probeert een container voor persoonlijk gebruik in elkaar te zetten en u wilt deze veiliger maken door gebruik te maken van... containers zonder privileges En plotseling zit je vast in een doolhof van permissiefouten. Het is frustrerend om uren te besteden aan het configureren van mappen in de thuismap van de gebruiker, om er vervolgens achter te komen dat de container er niet naar kan schrijven, of dat de resulterende bestanden op de host beschadigd zijn als dat wel lukt. onmogelijk te beheren omdat ze toebehoren aan een spookgebruiker.

De realiteit is dat containerisatie de softwarelevering weliswaar heeft versneld, maar ook aanzienlijke risico's met zich meebrengt. Volgens recente gegevens bevat de overgrote meerderheid van de productie-images [onduidelijk - mogelijk "onduidelijk" of "onduidelijk"]. kritische kwetsbaarhedenDit maakt veiligheid tot een ononderhandelbare pijler. Het gaat er niet alleen om te voorkomen dat hackers ons aanvallen, maar ook om te begrijpen hoe het systeem werkt. proces isolatie zodat onze infrastructuur geen zeef wordt.

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

Inzicht in het ecosysteem voor containerbeveiliging

Om te voorkomen dat we moeten gissen naar de juiste machtigingen, moeten we eerst weten wat we beschermen. De architectuur van een container is opgedeeld in verschillende cruciale lagen. Ten eerste hebben we de afbeelding van de containerDit is het oorspronkelijke ontwerp; als dit kwetsbaar is, zullen alle instanties die u implementeert onveilig zijn. Daarom is het essentieel om te gebruiken vertrouwde basisafbeeldingen en zorg dat ze actueel blijven.

Toen de runtimedie fungeert als scheidsrechter tussen het hostbesturingssysteem en de applicatie. Als de runtime verouderd is, bestaat het risico op een container ontsnapping neemt dramatisch toe. Hieraan moeten we orchestratie toevoegen, zoals Kubernetes, waar de rolgebaseerde toegangscontrole (RBAC) Het is de enige echte barrière tegen ongeautoriseerde toegang tot de beheer-API.

Wij kunnen de host besturingssysteemAls een aanvaller erin slaagt de kernel van de host te compromitteren, heeft hij de sleutels tot het hele domein in handen. De aanbeveling is hier duidelijk: gebruik een minimaal besturingssysteem om het aanvalsoppervlak te verkleinen. Ten slotte is het netwerk het meest voorkomende toegangspunt; bijna 30% van de inbreuken vindt plaats door verbindingsproblemen, dus de netwerksegmentatie en TLS/SSL-versleuteling Ze zijn verplicht.

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

De hoofdpijn van machtigingen en de rootgebruiker

Het typische probleem voor hobbyisten is de workflow met volumes. Je maakt een map aan, koppelt deze, en dan, pats!, een foutmelding. Toegang geweigerdDit gebeurt omdat veel containers standaard als root starten. Wanneer je probeert dit af te dwingen, UID en GID op 0 Door ze te laten overeenkomen met je hostgebruiker creëer je een gevaarlijke brug. Als de container je niet toestaat deze ID's te configureren, zul je een hele middag kwijt zijn aan het uitzoeken welke interne gebruiker de applicatie gebruikt om een ​​bepaalde actie uit te voeren. chown manual.

  Wat is de Velxio-simulator en hoe zorgt deze voor een revolutie in de emulatie van Arduino, ESP32 en Raspberry Pi?

De efficiënte oplossing is om de principe van de minste privilegesJe moet niets als root uitvoeren, tenzij het absoluut noodzakelijk is. Om het probleem op te lossen van bestanden die in de container zijn aangemaakt en die je niet op de host kunt verwijderen, is het essentieel om het Dockerfile te configureren met de volgende instructie: GEBRUIKERwaarbij een gebruiker zonder privileges wordt gedefinieerd voordat de applicatie start.

Als je Podman gebruikt, is het concept van rootloze containers Het is een native functie en erg handig, maar je moet wel begrijpen hoe hostgebruikers aan containergebruikers worden gekoppeld. Om te voorkomen dat de machtigingen uit de hand lopen, zou de applicatie idealiter zo ontworpen moeten zijn dat er naar specifieke routes geschreven kan worden en dat de volumekartering Dit gebeurt rekening houdend met de werkelijke UID van de gebruiker die het proces start.

Strategieën voor het opbouwen van gepantserde beelden

Als je wilt stoppen met lijden, moet je de manier waarop je je beelden construeert veranderen. Een uiterst effectieve techniek is... meerfasige bouwprojectenIn principe gebruik je een zware image met alle buildtools om het binaire bestand te genereren, en vervolgens kopieer je alleen dat bestand naar een uiteindelijke image. extreem licht.

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.

Je kunt zelfs nog verder gaan met behulp van de afbeelding. krassenDit creëert een container die absoluut niets bevat: geen shell, geen pakketbeheerder, alleen uw applicatie. Hierdoor is het voor een aanvaller vrijwel onmogelijk om kwaadaardige commando's uit te voeren als hij erin slaagt binnen te komen, aangezien Er is geen opdrachtinterpreter. beschikbaar.

Een andere beveiligingsmaatregel is het verwijderen van alle binaire bestanden met machtigingen uit de image. setuid of setgidDeze machtigingen maken het mogelijk dat een bestand wordt uitgevoerd met de rechten van de eigenaar van het bestand en niet met die van de gebruiker die het opent, wat een toegangspoort is tot... privilege-escalatieEen eenvoudig commando om deze onderdelen tijdens het bouwen van de image op te sporen en te verwijderen, kan je een hoop problemen besparen.

  Wat is een LST-bestand? Waar het voor is en hoe u er een kunt openen

De gevaren van de geprivilegieerde modus en de mogelijkheden van Linux

Soms, uit pure wanhoop omdat we een probleem met de machtigingen niet kunnen oplossen, bezwijken we voor de verleiding om de vlag te gebruiken. –bevoorrechtVergeet dat maar. De geprivilegieerde modus verbreekt de isolatie van de container en geeft je volledige toegang tot de apparaten van de host. Het is alsof je de sleutels van je huis aan een vreemde geeft, alleen omdat die niet wist hoe je het tuinhek openmaakt.

In plaats daarvan zou je moeten spelen met de Linux-mogelijkhedenDocker wijst een set standaardrechten toe (zoals CAP_CHOWN of CAP_NET_RAW). Als uw applicatie het netwerk niet op een laag niveau hoeft te manipuleren, is de slimste aanpak... Elimineer onnodige mogelijkheden en voeg alleen die toe die strikt noodzakelijk zijn door --cap-add.

Voor diegenen die met meer serieuze omgevingen werken, zijn er autorisatieplugins zoals opa-docker-authz. Deze tools maken het mogelijk om API-aanroepen naar de Docker-daemon te onderscheppen en elke poging om een ​​container in geprivilegieerde modus te starten te blokkeren, zodat niemand, zelfs niet per ongeluk, de deur naar de host open laat staan.

Optimalisatie en onderhoud van de omgeving

Laat je niet afschrikken door de maximale afbeeldingsgrootte van 5 MB bij het gebruik van Alpine Linux als dit compatibiliteitsproblemen met de bibliotheken veroorzaakt. Soms is een iets grotere Debian-image beter. gestabiliseerd en bekend door het team. Cruciaal is de implementatie van een kwetsbaarheidsscanning Geautomatiseerde CI/CD-pipeline om CVE's te detecteren voordat de image in productie wordt genomen.

Wat betreft opslag, voorkomt dit dat de applicatie naar het rootbestandssysteem schrijft. Configureer de alleen-lezen bestandssysteem (rootfs) en definieert specifieke volumes alleen voor de gegevens die bewaard moeten blijven. Dit is niet alleen veiliger, maar het dwingt ook een schonere architectuur af. zonder bezittingenHet faciliteren van horizontale schaalvergroting.

Voor geplande processen: plaats geen cronjob in de websitecontainer. De gouden regel is: één proces per containerDe meest elegante aanpak is om de image van je app te gebruiken om een ​​tijdelijke container te starten die de taak uitvoert en zichzelf vervolgens weer verwijdert, of om de cronjob vanaf de host te beheren door de containerengine aan te roepen met behulp van commando's.

  Wat is een TXZ-bestand? Waar het voor is en hoe u er een kunt openen

Containerbeveiliging is een continu proces dat bestaat uit het elimineren van root-toegang, het beperken van kernelmogelijkheden en het verwijderen van onnodige tools uit containerimages. Door niet-geprivilegieerde gebruikers te combineren met runtime-beveiliging en constante monitoring, wordt een omgeving gecreëerd waarin functionaliteit de integriteit van het hostsysteem niet in gevaar brengt.

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