Beveiliging · 30 september 2026

Architectuur voor veilige SSH-toegang in rootless Docker-containers

black computer keyboard on brown wooden table
Jessica Lam / Unsplash

Er is een architectuur ontwikkeld waarmee processen in een rootless Docker-container volledige SSH-toegang kunnen gebruiken zonder dat de private sleutel aan het proces wordt overhandigd. Deze methode voorkomt dat een private sleutel gestolen kan worden als een proces binnen de container wordt gecompromitteerd.

De opzet is bedoeld voor situaties waarin containers SSH nodig hebben voor taken zoals het klonen van private Git-repositories, het uitvoeren van commando's op externe servers, het overzetten van bestanden via scp of rsync, en het beheren van servers. In plaats van de private sleutel in de container te plaatsen of via een volume te koppelen, wordt een Unix-socket van ssh-agent naar de container doorgegeven. De communicatie verloopt via de variabele SSH_AUTH_SOCK, waardoor het proces authenticatie kan uitvoeren zonder direct toegang te hebben tot het sleutelmateriaal.

De configuratie hanteert strikte beveiligingseisen. De Docker daemon draait in rootless-modus zonder root-privileges op de host en het proces in de container draait eveneens niet als root. Daarnaast zijn Linux capabilities verwijderd, is het verkrijgen van nieuwe privileges verboden en is het wortelbestandssysteem van de container alleen-lezen. De private sleutel is volledig afwezig in de mount namespace van de container en het gebruik van StrictHostKeyChecking=no is verboden.

Traditionele methoden voor het doorgeven van geheimen, zoals omgevingsvariabelen of het koppelen van sleutels vanuit een geheimenopslag, worden als onvoldoende beschouwd omdat de sleutel dan leesbaar blijft voor het proces. Een specifiek technisch probleem bij deze rootless-aanpak is dat de gebruikers-ID van het proces in de container niet overeenkomt met de gebruikers-ID op de host, wat invloed heeft op de werking van de socket.

Als alternatief voor deze architectuur kan SSH-toegang volledig worden weggelaten door Git-operaties of externe systeeminteracties te verplaatsen naar een aparte API-service, zoals een MCP-server voor kunstmatige intelligentie-agenten. Dit kan echter leiden tot uitdagingen bij het synchroniseren van bestanden tussen twee onafhankelijke bestandssystemen, tenzij een gedeeld volume wordt gebruikt.