GNU/Linux >> Znalost Linux >  >> Linux

DevSecOps:Skenování obrázků ve vašich kanálech pomocí skeneru quay.io

Podle zprávy Sysdig 2021 Container Security and Usage Report je zabezpečení kontejnerů rostoucím problémem mnoha organizací. Stále však existují určité mezery. Skenování obrazu kontejnerů a privilegované kontejnery jsou dva z nejdůležitějších aspektů.

Kontejnery Podman bez rootu (viz Spuštění rootless Podman jako uživatel bez root a kontejnery Rootless s Podmanem:Základy) a OpenShift Container Platform ve výchozím nastavení implementují princip nejmenších oprávnění, což pomáhá správcům prosazovat osvědčené postupy zabezpečení. Nabídky registru kontejnerů Red Hat quay.io a Red Hat quay pomáhají správcům a vývojářům začlenit skenování zranitelnosti obrázků do jejich kanálů CI/CD.

[ Mohlo by se vám také líbit čtení: Vylepšená integrace systému s Podmanem 2.0 ]

Red Hat spravuje quay.io, hostovaný veřejný registr kontejnerů. Jednotlivci nebo podniky mohou používat registr k ukládání a sdílení obrázků kontejnerů (v rámci organizace nebo pro širokou veřejnost). Red Hat Universal Base Images (UBI) jsou založeny na RHEL a nabízejí způsob, jak volně vytvářet a sdílet obrázky aplikací.

Registr má vestavěný bezpečnostní skener, který kontroluje zranitelnosti obrázků, poskytuje podrobnosti o balíčcích v obrázku a identifikuje zranitelnosti s jejich přidruženými opravami. Organizuje zranitelnosti do kategorií nízké, střední a vysoké závažnosti. Poskytuje také metadata, jako je číslo CVE a odkaz na chyby související s chybami zabezpečení. Jak obrazy kontejnerů stárnou, objevují se nové CVE, takže v tomto článku se podíváme na starší verzi UBI. Například v době psaní tohoto článku mělo jedno z konkrétních sestavení ubi8 (8.2-299) následující výstup zvýrazňující 178 balíčků (10 balíčků s vysokým dopadem) a 38 zranitelností (10 vysoce).

Uživatelské rozhraní quay.io poskytuje informace týkající se zranitelností v uživatelsky přívětivém formátu. Je možné procházet seznam balíčků, zkontrolovat ovlivněné balíčky a zobrazit podrobnosti o zranitelnosti. U organizací zaměřených na DevSecOps je však výhodné získat tyto informace za chodu a využít je před každým nasazením, aby bylo zajištěno, že se do produkčního prostředí dostanou pouze zabezpečené obrazy.

Tento článek předpokládá určitou základní znalost konceptů quay.io, jako jsou úložiště, účty robotů a obecné úkoly, jako je vytváření obrázků (pomocí DockerFiles) a označování obrázků. V případě, že se chcete dozvědět více o těchto konceptech, můžete se podívat do uživatelských příruček quay.io.

Chcete-li získat informace o skenování prostřednictvím příkazového řádku, použijte skopeo a jq příkazy. Skopeo umožňuje uživatelům nejen prohlížet obrázky, aniž by je museli nejprve stahovat do místního počítače, ale také podporuje kopírování obrázků z jednoho úložiště (místního nebo vzdáleného) do druhého.

Následující příkaz načte metadata obrázku podobná docker inspect příkaz provedený proti místnímu obrazu:

# IMAGE_NAME='app-sre/ubi8-ubi'
# IMAGE_TAG='8.2-299'
# skopeo inspect docker://quay.io/$IMAGE_NAME:$IMAGE_TAG

Abychom získali jedinečný výtah obrázku, můžeme analyzovat přijatý výstup json pomocí jq příkaz.

# IMAGE_DIGEST=`skopeo inspect docker://quay.io/$IMAGE_NAME:$IMAGE_TAG | jq -r .Digest`

Pomocí výtahu můžete získat zprávu o zabezpečení obrázku dotazem na rozhraní API quay.io. Výstup (soubor json) můžeme uložit do lokálního souboru a využít jq pro filtrování požadovaného obsahu.

# curl -o `basename $IMAGE_NAME`.json https://quay.io/api/v1/repository/$IMAGE_NAME/manifest/$IMAGE_DIGEST/security?vulnerabilities=true

Chcete-li například získat informace týkající se zranitelností s vysokou závažností s přidruženým ID upozornění, adresou URL upozornění, názvem balíčku, jeho ovlivněnou verzí a verzí, která obsahuje opravy, lze použít následující příkaz:

jq '.data.Layer.Features[]' `basename $IMAGE_NAME`.json | jq -c '{"Name":.Name,"Version":.Version,"Advisory":.Vulnerabilities[]} | select(.Advisory.Severity=="High") | {"Advisory":.Advisory.Name,"Link":.Advisory.Link,"PACKAGE":.Name,"CURRENT VERSION":.Version,"FIXED IN VERSION":.Advisory.FixedBy }'

Příkaz vytvoří výstup podobný následujícímu, což znamená, že tento obrázek UBI (app-sre/ubi8-ubi) má 10 upozornění:

{"Advisory":"RHSA-2020:3014","Link":"https://access.redhat.com/errata/RHSA-2020:3014","PACKAGE":"dbus-tools","CURRENT VERSION":"1:1.12.8-9.el8","FIXED IN VERSION":"1:1.12.8-10.el8_2"}
{"Advisory":"RHSA-2020:3658","Link":"https://access.redhat.com/errata/RHSA-2020:3658","PACKAGE":"librepo","CURRENT VERSION":"1.11.0-2.el8","FIXED IN VERSION":"0:1.11.0-3.el8_2"}
{"Advisory":"RHSA-2020:3014","Link":"https://access.redhat.com/errata/RHSA-2020:3014","PACKAGE":"dbus-libs","CURRENT VERSION":"1:1.12.8-9.el8","FIXED IN VERSION":"1:1.12.8-10.el8_2"}
{"Advisory":"RHSA-2020:3014","Link":"https://access.redhat.com/errata/RHSA-2020:3014","PACKAGE":"dbus-common","CURRENT VERSION":"1:1.12.8-9.el8","FIXED IN VERSION":"1:1.12.8-10.el8_2"}
{"Advisory":"RHSA-2020:3014","Link":"https://access.redhat.com/errata/RHSA-2020:3014","PACKAGE":"dbus-daemon","CURRENT VERSION":"1:1.12.8-9.el8","FIXED IN VERSION":"1:1.12.8-10.el8_2"}
{"Advisory":"RHSA-2020:2755","Link":"https://access.redhat.com/errata/RHSA-2020:2755","PACKAGE":"libnghttp2","CURRENT VERSION":"1.33.0-1.el8_0.1","FIXED IN VERSION":"0:1.33.0-3.el8_2.1"}
{"Advisory":"RHSA-2020:5476","Link":"https://access.redhat.com/errata/RHSA-2020:5476","PACKAGE":"openssl-libs","CURRENT VERSION":"1:1.1.1c-15.el8","FIXED IN VERSION":"1:1.1.1g-12.el8_3"}
{"Advisory":"RHSA-2020:3658","Link":"https://access.redhat.com/errata/RHSA-2020:3658","PACKAGE":"python3-librepo","CURRENT VERSION":"1.11.0-2.el8","FIXED IN VERSION":"0:1.11.0-3.el8_2"}
{"Advisory":"RHSA-2020:2637","Link":"https://access.redhat.com/errata/RHSA-2020:2637","PACKAGE":"gnutls","CURRENT VERSION":"3.6.8-10.el8_2","FIXED IN VERSION":"0:3.6.8-11.el8_2"}
{"Advisory":"RHSA-2020:3014","Link":"https://access.redhat.com/errata/RHSA-2020:3014","PACKAGE":"dbus","CURRENT VERSION":"1:1.12.8-9.el8","FIXED IN VERSION":"1:1.12.8-10.el8_2"}

[ Volný kurz:Red Hat Satellite Technical Overview. ] 

Sbalit

V další části této série článků začleňuji informace z tohoto článku do vzorového kanálu, abych se mohl informovaně rozhodnout, zda pokračovat s tímto obrázkem a nasadit aplikace do produkce.


Linux
  1. Sestavte si svůj vlastní kontejner na Linuxu

  2. Jak snížit zátěž registru kontejnerů pomocí Quay.io

  3. Pomocí „Rufus“ vložte svůj ISO obraz na USB klíčenku

  1. Urychlení vytváření obrazu kontejneru pomocí Buildah

  2. Co je uvnitř obrázku/kontejneru Dockeru?

  3. Který operační systém běží v mém kontejneru Docker?

  1. Vyhledání podvodných zařízení ve vaší síti pomocí Nmap

  2. Přidejte tyto 4 nástroje do svého kontejneru nástrojů Linux

  3. Jak napsat text na obrázek pomocí příkazu Linux