GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak podepsat své obrázky dockeru, abyste zvýšili důvěru

Většina obrázků Docker je distribuována bez jakéhokoli ověření, že jsou tím, za co se vydávají. Důvěru ve své obrázky můžete zvýšit jejich digitálním podpisem. To uživatelům dokazuje, že jste obrázek publikovali vy, nikoli podvodník.

Podepisovací systém Docker je známý jako důvěryhodnost obsahu. Zpřístupňuje se prostřednictvím docker trust příkaz CLI. Content Trust používá sady klíčů, které umožňují registrům ověřit identitu potenciálních vydavatelů. Uživatelé podepsaných obrázků si mohou být jisti, že pocházejí z očekávaného zdroje.

Generování klíčů

Abyste mohli začít používat Content Trust, budete potřebovat pár klíčů. Páry klíčů mohou být vydány certifikačními autoritami nebo vygenerovány rozhraním CLI Docker.

Spusťte docker trust key generate your-name vytvořit klíč. Budete vyzváni k zadání přístupové fráze. Ten bude nutné zadat pokaždé, když použijete klíč k podepisování nebo ověřování obrázků. Pokračujte stisknutím klávesy Enter při každé výzvě.

Až budete hotovi, vygenerují se dva soubory v ~/.docker/trust :soukromý klíč a jeho odpovídající veřejný klíč. Podobně jako u SSH klíčů by soukromý klíč neměl být nikdy sdílen a nesmí být ztracen. Pokud se potřebujete přesouvat mezi počítači, můžete importovat soubor soukromého klíče do jiné instalace Dockeru pomocí docker trust key load my-key.pem .

Přidání veřejného klíče do vašeho registru

Docker Hub podporuje všechny funkce docker trust . Pokud používáte soukromý server registru Docker, je vyžadován složitější proces nastavení.

Server registru nenabízí integrovanou podporu podpisů. Potřebujete samostatnou službu Docker Notary, která se postará o ověření podpisu pro odesílání a stahování obrázků. Notary má tři součásti, server, podepisovací službu a databázi MySQL. Měl by být nasazen na stejné adrese URL jako váš server registru.

Notary můžete spustit a spustit pomocí jeho souboru Docker Compose:

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

Toto základní nasazení poběží s certifikátem TLS s vlastním podpisem. Je určen pouze pro vývojářské použití. Budete muset důvěřovat souboru certifikační autority fixtures/root-ca.crt v úložišti, než se klienti budou moci úspěšně připojit.

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

Výše uvedené příkazy zkopírují soubor certifikátu do ca-certificates umístění skladu. update-ca-certificates znovu načte všechny certifikáty a přidá do vašeho systému notářské oprávnění.

Pokud budete Notary provozovat v produkci, budete muset nastavit ověřování, aby nové klíče mohli přidávat pouze oprávnění uživatelé. NOTARY_AUTH proměnná prostředí by měla být nastavena při spouštění služby pomocí docker-compose . Toto přijímá přihlašovací údaje zakódované v Base64 v username:password formát. Budete vyzváni k jejich poskytnutí při interakci s Notary.

export NOTARY_AUTH=$(echo "username" | base64):$(echo "password" | base64)
docker-compose up -d

Nyní jste připraveni přidat svůj veřejný klíč na server Notary. Klíče jsou přidávány na základě jednotlivých úložišť. To vám umožní izolovat obrázky od sebe a umožňuje podporu pro delegované přispěvatele třetích stran. Další osoby s právy k publikování můžete přidat později tak, že je přimějete opakovat příkaz se svým soukromým klíčem.

docker trust signer add your-key-name registry.example.com/my-image

Budete muset zadat přístupovou frázi klíče. Poté bude k dispozici na vašem registru serveru.

Podepisování obrázků

Jakmile je váš klíč v registru, můžete začít podepisovat obrázky. Použijte docker trust sign příkaz. Ujistěte se, že každý obrázek je označen správnou adresou URL registru.

docker trust sign registry.example.com/my-image:latest

Tento příkaz podepíše obrázek vaším klíčem a poté jej vloží přímo do registru. Není třeba ručně spouštět docker push později. Budete muset nastavit klíč úložiště a přístupovou frázi, abyste chránili důvěryhodná data jednotlivých obrázků. Podle každé výzvy nastavte své podpisové klíče.

Pokud máte existující pracovní postupy pomocí docker push , můžete se rozhodnout pro tento příkaz namísto docker trust . Dokončením předchozích kroků vytvořte klíč a přidejte jej do Notary. Nastavte DOCKER_CONTENT_TRUST prostředí, aby příkazy Docker CLI detekovaly Content Trust a automaticky jej aplikovaly.

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

Uvidíte, že výstup shellu odpovídá docker trust sign vyrábí. Docker provádí stejné akce jako explicitnější příkaz.

Ověřování důvěryhodných obrázků

DOCKER_CONTENT_TRUST proměnná se znovu objeví s větší důležitostí, pokud jde o ověřování vytažených obrázků. Docker se ve výchozím nastavení nepokouší ověřovat obrázky, i když obsahují důvěryhodná data. Chcete-li aktivovat ověření důvěryhodnosti obsahu, musíte ve svém prostředí nastavit proměnnou prostředí.

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

Když je proměnná nastavena, všechna stahování obrázků budou zkontrolována proti notářskému serveru jejich registru. Pokud Notary nemůže poskytnout žádná důvěryhodná data, bude se s obrázkem nakládat jako s nepodepsaným a stahování bude přerušeno. To vás chrání před obrázky publikovanými zlomyslnými herci vydávajícími se za skutečného vydavatele.

Uživatelé Docker Enterprise mohou nakonfigurovat volitelné nastavení démona, aby zabránili Docker Engine pracovat s nedůvěryhodnými obrázky, které jsou již na hostiteli. Ty mohly být doručeny v tar archivy z nebezpečného zdroje.

Upravte /etc/docker/daemon.json a přidejte následující klíč:

{
    "content-trust": {
        "mode": "enforced"
    }
}

Znovu načtěte konfiguraci démona Docker pomocí systemctl reload docker aplikujte změnu.

Stav důvěryhodnosti obrázku můžete zkontrolovat pomocí docker trust inspect . Zobrazí se podpisy spojené s obrázkem, což vám umožní zkontrolovat, zda byl podepsán.

docker trust inspect registry.example.com/my-image:latest

Pokud jste publikovali obrázek, který již nechcete podepisovat, použijte docker trust revoke příkaz. Tím se vymažou důvěryhodná data obrázku, což způsobí, že selžou všechna následná ověření klienta Docker.

docker trust revoke registry.example.com/my-image:latest

Přehled

Docker Content Trust přidává digitální podpisy do ekosystému Docker, čímž zvyšuje bezpečnost při používání obrázků. Pokud posíláte obrázky do Docker Hub, máte již vše, co potřebujete k použití této funkce. Nastavte DOCKER_CONTENT_TRUST prostředí a používejte příkazy Docker jako obvykle.

Pro uživatele registru s vlastním hostitelem je nastavení složitější, ale stále stojí za námahu v prostředí kritickém pro důvěru. V době psaní tohoto článku Notary stále nemá oficiální stabilní verzi a dokumentace je uložena v jeho úložišti GitHub.


Docker
  1. Jak přesunout obrazy Dockeru mezi hostiteli

  2. Jak vyhledávat, stahovat, seznamovat a odstraňovat obrázky Docker v systému Linux

  3. Jak používat obrázky, kontejnery a soubory Docker do hloubky

  1. Jak sdílet obrázky Docker s ostatními

  2. Jak nainstalovat Nextcloud s Dockerem na váš Linux Server

  3. Úvod do Docker Images

  1. Jak analyzovat a prozkoumat obsah obrázků Docker

  2. Jak nastavit automatické sestavení pro obrázky Docker na GitHubu

  3. Jak upravit obrázky Docker