Sdílet prostřednictvím


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ř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í: