Hoppa till innehållet

Driftsatte en containermiljö på Podman och Quadlet under systemd i stället för Docker, eftersom Docker publicerar containerportar ovanför värdbrandväggens egna regler — och gav driftsättningarna en oprivilegierad användare med ett enda fast kommando i stället för root.

containrar under systemd, inte ovanför brandväggen

Situation. Plattformen behövde någonstans att köra applikationscontainrar. Det självklara valet var branschens standard, och det självklara valet var fel för den här värden på ett specifikt sätt: det skriver om reglerna i kärnans paketfilter och publicerar containerportar ovanför de brandväggsregler som härdningsrollen installerar, så att en container i tysthet blir nåbar från internet oavsett vad brandväggen har instruerats att göra.

Uppgift. Ett containerskikt måste väljas som inte kringgår brandväggen, inte lägger till en andra tjänstehanterare bredvid den som redan är betrodd och inte kräver att en person är root för att göra en release.

Handling. Skiktet är en containermotor utan daemon som driver enheter genererade av operativsystemets egen tjänstehanterare. Det finns ingen andra processhanterare: containrar är tjänster, de startar på samma sätt som tjänster startar och de beskrivs i samma deklarativa form som allt annat. Containrarna använder värdnätverk utan några publicerade portar alls, vilket tar bort frågan om att kringgå brandväggen i stället för att mildra den. Enheterna körs på systemnivå snarare än rootless, och det är nedskrivet som en avvägning — det håller automatiseringen enkel och normal, till priset av den striktare isolering som rootless skulle ge, och anteckningen säger åt vilket håll man ska gå om containerutbrytning någon gång blir viktigare än en enkel automatisering. Driftsättning skildes från provisionering: root förbereder driftsättningsvägen en gång, och därefter driftsätter en oprivilegierad användare på nytt genom att köra ett enda fast skript via en avgränsad regel som tillåter just det kommandot och inga argument. Bygg avbildningen, starta om tjänsten. Inget root‑skal, inga godtyckliga kommandon.

Resultat. Containrar körs under den tjänstehanterare som redan var betrodd, bakom den brandvägg som redan var deklarerad, och en rutinmässig release kräver ingen privilegierad åtkomst. Valet mot standarden är nedskrivet med sitt skäl, vilket väger tyngre än själva valet — nästa person kommer att få höra att standarden ska användas i varenda artikel som den personen läser.

En del av en längre historik — och den finns i sin helhet här.

Varje post är skriven på samma sätt: situationen, uppgiften, vad vi gjorde och vad som förändrades.

Se hela historiken