Hur du signerar dina Docker-bilder för att öka förtroendet

0
146

De flesta Docker-bilder distribueras utan någon verifiering av att de är vad de påstår sig vara. Du kan öka förtroendet för dina bilder genom att signera dem digitalt. Detta bevisar för användare att du publicerade bilden, inte en bedragare.

Dockers signeringssystem kallas innehållsförtroende. Det exponeras genom dockarens förtroende CLI-kommando. Content Trust använder nyckeluppsättningar för att låta register verifiera identiteten på potentiella utgivare. Användare av signerade bilder kan vara säkra på att de kommer från den förväntade källan.

Generera nycklar

Du behöver ett nyckelpar för att börja använda innehåll Förtroende. Nyckelpar kan utfärdas av certifikatmyndigheter eller genereras av Docker CLI.

Kör förtroendenyckel för docker generera ditt namn för att skapa en nyckel. Du uppmanas att ange en lösenfras. Detta måste tillhandahållas varje gång du använder nyckeln för att signera eller verifiera bilder. Tryck på enter vid varje uppmaning för att fortsätta.

När du är klar genereras två filer i ~/.docker/trust: den privata nyckeln och dess motsvarande offentliga nyckel. På samma sätt som SSH-nycklar bör den privata nyckeln aldrig delas och får inte gå förlorad. Om du behöver flytta mellan maskiner kan du importera en privat nyckelfil till en annan Docker-installation med hjälp av docker-trustnyckel, ladda my-key.pem.

Lägga till din offentliga nyckel i ditt register

Docker Hub stöder alla funktioner i docker-förtroende. Om du använder en privat Docker Registry-server krävs en mer involverad installationsprocess.

Annons

Registreringsservern erbjuder inte inbyggt stöd för signaturer. Du behöver en separat Docker Notary-tjänst som hanterar signaturverifiering för bildtryckningar och -dragningar. Notarius har tre komponenter, servern, en signeringstjänst och en MySQL-databas. Den ska distribueras på samma URL som din registerserver.

Du kan starta Notarius med dess Docker Compose-fil:

git clone https://github.com/theupdateframework/notary.git docker-compose up -d

Denna grundläggande distribution körs med ett självsignerat TLS-certifikat. Den är endast avsedd för utvecklingsanvändning. Du måste lita på certifikatutfärdarens filarmaturer/root-ca.crt i arkivet innan klienterna lyckas ansluta.

sudo mkdir -p/usr/share/ca-certifikat/extra sudo cp-fixturer/root-ca.crt /usr/share/ca-certificates/extra/notary.crt sudo update-ca-certifikat

Kommandona ovan kopierar certifikatfilen till platsen för ca-certifikatlagring. update-ca-certifikat laddar om alla certifikat och lägger till Notary-myndigheten i ditt system.

Om du ska köra notarie i produktion måste du ställa in autentisering så att endast behöriga användare kan lägga till nya nycklar. Miljövariabeln NOTARY_AUTH bör ställas in när tjänsten startas med docker-compose. Detta accepterar Base64-kodade referenser i användarnamn: lösenordsformat. Du kommer att uppmanas att ange dessa när du interagerar med Notarius.

exportera NOTARY_AUTH = $ (echo “användarnamn” | base64): $ (echo “lösenord” | base64) docker-compose up -d Annons

Nu är du redo att lägga till din offentliga nyckel till din Notary-server. Nycklar läggs till per förvarbasis. Detta låter dig isolera bilder från varandra och möjliggör stöd för delegerade bidragsgivare från tredje part. Du kan lägga till andra personer med publiceringsrättigheter senare genom att få dem att upprepa kommandot med sin privata nyckel.

docker trust signer lägg till ditt nyckel-namn registry.example.com/my-image

Du & # 8217 ; jag måste ange nyckelns lösenfras. Det kommer då att finnas tillgängligt på din registerserver.

Underteckna bilder

När din nyckel finns i registret kan du börja signera bilder. Använd kommandot docker trust sign. Se till att varje bild är taggad med rätt register-URL. register. Det finns inget behov av att manuellt köra docker-push efteråt. Du måste ställa in en förvaringsnyckel och lösenfras för att skydda den enskilda bildens förtroendedata. Följ varje uppmaning för att ställa in dina signaturnycklar.

Om du har befintliga arbetsflöden med docker-push kan du välja det kommando istället för docker tillit. Slutför de föregående stegen för att skapa en nyckel och lägg till den i Notarie. Ställ in miljövariabeln DOCKER_CONTENT_TRUST så att Docker CLI-kommandon upptäcker Content Trust och tillämpar det automatiskt.

exportera DOCKER_CONTENT_TRUST = 1 docker push registry.example.com/my-image:latest

Du kommer att se att skalutgången matchar vad docker-förtroendetecknet producerar. Docker utför samma åtgärder som det mer explicita kommandot.

Verifiering av betrodda bilder

Variabeln DOCKER_CONTENT_TRUST återkommer med större betydelse när det gäller att verifiera bilder du drar. Docker försöker inte verifiera bilder som standard, även om de innehåller förtroendata. Du måste ställa in miljövariabeln i ditt skal för att aktivera validering av innehållsförtroende.

exportera DOCKER_CONTENT_TRUST = 1 docker pull registry.example.com/my-image:latest Annonsering

När variabeln är inställd kommer alla bildhämtningar att kontrolleras mot deras Notaris-server. Om Notarius inte kan tillhandahålla förtroendedata behandlas bilden som osignerad och dragningen avbryts. Detta skyddar dig från bilder som publiceras av skadliga skådespelare som maskerar sig som en äkta utgivare.

Docker Enterprise-användare kan konfigurera en valfri daemoninställning för att förhindra att Docker Engine arbetar med otillförlitliga bilder som redan finns på värden. Dessa kan ha kommit i tjärarkiv från en osäker källa.

Redigera /etc/docker/daemon.json och lägg till följande nyckel:

{“content-trust”: {“mode”: “enforced”}}

Ladda om Docker-daemon-konfigurationen med systemctl omladdningsdockare för att tillämpa ändringen.

Du kan inspektera tillitsstatusen för en bild med docker-trust-inspektion. Detta visar signaturerna som är associerade med bilden så att du kan kontrollera om den har signerats.

docker förtroende inspektera registry.example.com/my-image:latest

If du har publicerat en bild som du inte längre vill underteckna, använd kommandot docker trust revoke. Detta kommer att ta bort bildens förtroendedata och orsaka att alla efterföljande Docker-klientverifieringar misslyckas.

docker-förtroende återkallar registry.example.com/my-image:latest

Sammanfattning

Docker Content Trust lägger till digitala signaturer i Docker-ekosystemet, vilket ökar säkerheten när du använder bilder. Om du skickar bilder till Docker Hub har du redan allt du behöver för att använda funktionen. Ställ in miljövariabeln DOCKER_CONTENT_TRUST och använd Docker-kommandon som vanligt.

Annons

För självvärda registeranvändare är installationen mer komplicerad men ändå värt ansträngningen i en tillitskritisk miljö. I skrivande stund har Notarie fortfarande inte fått en officiell stabil release och dokumentationen finns i GitHub-förvaret.