Připojení podepsaného SBOM k imagi kontejneru
Software Bill of Materials (SBOM) je manifest sestavení, který obsahuje seznam součástí použitých k sestavení části softwaru. SBOM se dá použít ke sledování původu části softwaru, včetně imagí kontejnerů, během životního cyklu. V tomto článku se dozvíte, jak vytvořit SBOM pro image kontejneru, podepsat ji a připojit ji k imagi pomocí nástrojů rozhraní příkazového řádku. Další přístupy jsou možné, včetně použití kanálu CI/CD k automatizaci procesu.
Požadavky
Než začnete, ujistěte se, že máte následující:
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
- Nainstalovaná a nakonfigurovaná nejnovější verze Azure CLI pro vaše předplatné
- Existující služba Azure Container Registry (ACR) ve vašem předplatném.
- Nainstalované rozhraní příkazového řádku notace
- Nainstalované rozhraní příkazového řádku ORAS
- Nainstalován nástroj sbom-tool .
Přihlášení k registru
Přihlaste se ke službě ACR a získejte přístupový token pro váš registr. Například následující příkazy používají Azure CLI k přihlášení k registru a nastavení přístupového tokenu pro daný registr na proměnnou PASSWORD
prostředí.
# Update the ACR_NAME variable with the name of your registry
ACR_NAME=<acr-name>
PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
Poznámka:
ACR a ORAS podporují více možností ověřování pro uživatele a automatizaci systému. Tento článek používá jednotlivé identity pomocí tokenu Azure. Další možnosti ověřování najdete v tématu Ověřování pomocí registru kontejneru Azure.
Sestavení a nasdílení image kontejneru
Slouží az acr build
k sestavení a nasdílení image kontejneru do registru.
REPO=net-monitor
TAG=v1
REGISTRY=$ACR_NAME.azurecr.io
IMAGE=$REGISTRY/${REPO}:$TAG
IMAGE_SOURCE=https://github.com/wabbit-networks/net-monitor.git#main
az acr build -r $ACR_NAME -t $IMAGE $IMAGE_SOURCE
Přihlášení pomocí rozhraní příkazového řádku notace
Slouží notation login
k přihlášení k registru.
Důležité
Při použití přístupového tokenu pro službu ACR musíte použít 00000000-0000-0000-0000-000000000000
jako uživatelské jméno.
export USER_NAME="00000000-0000-0000-0000-000000000000"
notation login -u $USER_NAME -p $PASSWORD $REGISTRY
Podepsat obrázek
Slouží notation sign
k podepsání obrázku.
Důležité
Abyste mohli podepsat image, musíte mít podpisový certifikát a pár klíčů. Například sestavení, podepsání a ověření imagí kontejnerů pomocí notáře a služby Azure Key Vault ukazuje, jak pomocí služby Azure Key Vault vytvořit podpisový certifikát a pár klíčů.
notation sign $IMAGE
Slouží notation ls
k výpisu podpisů na obrázku.
notation ls $IMAGE
Následující příklad výstupu ukazuje podpis na obrázku.
<acr-name>.azurecr.io/net-monitor@sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
└── application/vnd.cncf.notary.signature
└── sha256:111222333444555666777888999000aaabbbcccdddeeefff1112223334445556
Vytvoření SBOM
Slouží sbom-tool
k vytvoření SBOM pro image. Například následující příkazy vytvoří SBOM pro image a uloží ji do ./sbom
adresáře.
SBOM_DIR=./sbom
PACKAGE_SUPPLIER=MyCompany
PACKAGE_NAME=TestProject
PACKAGE_VERSION=1.0.0
mkdir $SBOM_DIR
sbom-tool generate -m $SBOM_DIR -di $IMAGE -ps $PACKAGE_SUPPLIER -pn $PACKAGE_NAME -pv $PACKAGE_VERSION
Připojení SBOM k imagi
Slouží oras attach
k připojení SBOM k imagi. Například následující příkaz připojí manifest.spdx.json
soubor k obrázku.
SBOM_FILE=$SBOM_DIR/_manifest/spdx_2.2/manifest.spdx.json
oras attach $IMAGE $SBOM_FILE --artifact-type example/sbom
Podepsání SBOM
Slouží oras discover
k získání přehledu pro SBOM.
oras discover $IMAGE -o tree
Následující příklad výstupu ukazuje hodnoty hash pro podpis i obrázek.
$ oras discover $IMAGE -o tree
<acr-name>.azurecr.io/net-monitor@sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
├── example/sbom
│ └── sha256:fffeeedddcccbbbaaa000999888777666555444333222111fffeeedddcccbbba
└── application/vnd.cncf.notary.signature
└── sha256:111222333444555666777888999000aaabbbcccdddeeefff1112223334445556
Slouží notation sign
k podepsání SBOM pomocí hodnoty hash SBOM z předchozího příkazu.
SBOM=$REGISTRY/${REPO}@sha256:fffeeedddcccbbbaaa000999888777666555444333222111fffeeedddcccbbba
notation sign $SBOM
Slouží notation ls
k výpisu podpisů v SBOM.
notation ls $SBOM
Následující příklad ukazuje podpis na SBOM.
$ notation ls $SBOM
<acr-name>.azurecr.io/net-monitor@sha256:fffeeedddcccbbbaaa000999888777666555444333222111fffeeedddcccbbba
└── application/vnd.cncf.notary.signature
└── sha256:fedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321
Další kroky
Další informace najdete v přehledu jednotlivých fází: