Containere uden root: En komplet guide til kørsel og fejlfinding af tilladelser i begrænsede miljøer

Sidste ændring: 10/07/2026
Forfatter: Isaac

Containersikkerhed

Jeg er sikker på, at dette er sket for dig: du prøver at samle en beholder til personlig brug, og du vil gøre den mere sikker at bruge. uprivilegerede containere Og pludselig befinder du dig fanget i en labyrint af tilladelsesfejl. Det er frustrerende at bruge timevis på at konfigurere mapper i brugerens hjemmemappe, kun for at opdage, at containeren ikke kan skrive til dem, eller at når den gør det, er de resulterende filer på værten beskadiget. umulig at administrere fordi de tilhører en fantombruger.

Realiteten er, at selvom containerisering har fremskyndet softwarelevering, har det åbnet døren for betydelige risici. Ifølge nylige data indeholder langt de fleste produktionsbilleder [uklar - muligvis "uklar" eller "uklar"] kritiske sårbarhederDette gør sikkerhed til en ufravigelig søjle. Det handler ikke kun om at forhindre hackere i at angribe os, men om at forstå, hvordan systemet fungerer. procesisolering så vores infrastruktur ikke bliver en si.

Containere uden root: Sådan kører og foretager du fejlfinding af tilladelser i begrænsede miljøer
Relateret artikel:
Containere uden root: en komplet guide til kørsel og fejlfinding af tilladelser i begrænsede miljøer

Forståelse af containersikkerhedsøkosystemet

For at stoppe med at gætte med tilladelser, skal vi først vide, hvad vi beskytter. En containers arkitektur er opdelt i flere kritiske lag. Først har vi billede af beholderenhvilket er den originale blueprint; hvis denne er sårbar, vil alle instanser, du implementerer, være usikre. Derfor er det vigtigt at bruge billeder af betroede baser og holde dem opdaterede.

Så den kørselstidsom fungerer som mægler mellem værtens operativsystem og applikationen. Hvis runtime-programmet er forældet, er risikoen for en containerflugt stiger dramatisk. Dertil skal vi tilføje orkestrering, såsom Kubernetes, hvor rollebaseret adgangskontrol (RBAC) Det er den eneste reelle barriere mod uautoriseret adgang til administrations-API'en.

Vi kan ikke glemme værtsoperativsystemHvis en angriber formår at kompromittere værtskernen, har de nøglerne til hele domænet. Anbefalingen her er klar: brug en minimalt operativsystem for at reducere angrebsfladen. Endelig er netværket det mest almindelige indgangspunkt; næsten 30 % af brud sker på grund af forbindelsesfejl, så netværkssegmentering og TLS/SSL-kryptering De er obligatoriske.

Beholdere med Podman
Relateret artikel:
Containere med Podman: en komplet guide til pods og volumener

Hovedpinen med tilladelser og root-brugeren

Det typiske problem for hobbybrugere er arbejdsgangen med volumener. Man opretter en mappe, monterer den, og så, boom!, en fejl. tilladelse nægtetDette sker fordi mange containere som standard starter som root. Når du forsøger at tvinge UID og GID ved 0 For at få dem til at matche din værtsbruger, opretter du en farlig bro. Hvis containeren ikke tillader dig at konfigurere disse ID'er, ender du med at spilde en eftermiddag på at finde ud af, hvilken intern bruger applikationen bruger til at udføre en chown brugervejledning.

  Hvad er Velxio-simulatoren, og hvordan revolutionerer den emuleringen af ​​Arduino, ESP32 og Raspberry Pi?

Den effektive løsning er at anvende princippet om mindste privilegierDu bør ikke køre noget som root, medmindre det er absolut nødvendigt. For at løse problemet med containeroprettede filer, som du ikke kan slette på værten, er det vigtigt at konfigurere Dockerfile med følgende instruktion: BRUGER, definerer en bruger uden rettigheder, før applikationen starter.

Hvis du bruger Podman, konceptet med rodløse beholdere Det er indbygget og meget nyttigt, men det kræver, at du forstår, hvordan værtsbrugere er knyttet til containerbrugere. For at forhindre, at tilladelser kommer ud af kontrol, bør applikationen ideelt set være designet til at skrive til bestemte ruter, og at volumenkortlægning Det gøres under hensyntagen til den faktiske UID for den bruger, der starter processen.

Strategier til opbygning af pansrede billeder

Hvis du vil stoppe med at lide, er du nødt til at ændre den måde, du konstruerer dine billeder på. En brutalt effektiv teknik er... flertrinsbyggerierGrundlæggende bruger du et kraftigt billede med alle byggeværktøjerne til at generere den binære fil, og derefter kopierer du kun den fil til et endeligt billede. ekstremt let.

Containere uden root: Sådan kører og foretager du fejlfinding af tilladelser i begrænsede miljøer
Relateret artikel:
Mastering af containere uden root: en komplet guide til tilladelser og sikkerhed

Du kan endda gå videre ved at bruge billedet ridseDette skaber en container, der absolut ingenting har: ingen shell, ingen pakkehåndtering, kun din applikation. Dette gør det praktisk talt umuligt for en angriber at udføre ondsindede kommandoer, hvis de formår at komme ind, da Der er ingen kommandofortolker tilgængelig.

En anden sikkerhedsforanstaltning er at rense billedet af enhver binær fil med tilladelser setuid eller setgidDisse tilladelser tillader, at en fil udføres med filejerens privilegier og ikke den bruger, der starter den, hvilket er en motorvej for... privilegieeskaleringEn simpel kommando til at søge efter og fjerne disse bits under billedopbygning kan spare dig for en masse besvær.

  Hvad er en LST fil? Hvad det er til, og hvordan man åbner en

Farerne ved privilegeret tilstand og Linux' muligheder

Nogle gange, i desperation over ikke at kunne løse et tilladelsesproblem, falder vi for fristelsen til at bruge flaget –privilegeredeGlem alt om at gøre det. Privilegeret tilstand bryder containerens isolation og giver dig fuld adgang til værtens enheder. Det er ligesom at give nøglerne til dit hus til en fremmed, bare fordi de ikke vidste, hvordan man åbner havelågen.

I stedet bør du lege med Linux-funktionerDocker tildeler et sæt standardtilladelser (f.eks. CAP_CHOWN eller CAP_NET_RAW). Hvis din applikation ikke behøver at manipulere netværket på et lavt niveau, er den smarteste tilgang eliminer unødvendige funktioner og tilføj kun dem, der er strengt nødvendige af --cap-add.

For dem, der håndterer mere seriøse miljøer, er der autorisations-plugins såsom opa-docker-authz. Disse tillader opsnapping af kald til Docker-daemonens API og blokering af ethvert forsøg på at starte en container i privilegeret tilstand, hvilket sikrer, at ingen, selv ved en fejl, lader døren stå åben for værten.

Miljøoptimering og vedligeholdelse

Du skal ikke hænge dig op i billedstørrelsen på 5 MB, når du bruger Alpine Linux, hvis det forårsager kompatibilitetsproblemer med bibliotekerne. Nogle gange er et lidt større Debian-billede at foretrække. stabiliseret og kendt af teamet. Det afgørende er at implementere en sårbarhedsscanning Automatiseret CI/CD-pipeline til at detektere CVE'er, før billedet når produktionsstedet.

Med hensyn til lagring forhindrer det applikationen i at skrive til rodfilsystemet. Konfigurer skrivebeskyttet filsystem (rootfs) og definerer specifikke volumener kun for de data, der skal gemmes permanent. Dette er ikke kun mere sikkert, men det fremtvinger også en renere arkitektur og ejendomsløsletter horisontal skalering.

For planlagte processer, placer ikke et cron-job inde i website-containeren. Den gyldne regel er én proces pr. containerDen reneste fremgangsmåde er at bruge din apps image til at starte en kortvarig container, der udfører opgaven og derefter ødelægger sig selv, eller at administrere cron'en fra værten ved at kalde containermotoren ved hjælp af kommandoer.

  Hvad er en TXZ fil? Hvad det er til, og hvordan man åbner en

Containersikkerhed er en løbende proces, der involverer eliminering af root-adgang, begrænsning af kernefunktioner og fjernelse af unødvendige værktøjer fra containerbilleder. Ved at kombinere ikke-privilegerede brugere med runtime-hærdning og konstant overvågning opnås et miljø, hvor funktionaliteten ikke kompromitterer værtssystemets integritet.

Oprettelse af lette containere med Podman på Linux
Relateret artikel:
Letvægtscontainere med Podman på Linux: En praktisk guide