Udostępnij za pośrednictwem


Dołączanie podpisanego SBOM do obrazu kontenera

Programowy rachunek materiałów (SBOM) to manifest kompilacji, który zawiera listę składników używanych do tworzenia oprogramowania. SBOM może służyć do śledzenia pochodzenia oprogramowania, w tym obrazów kontenerów, w całym cyklu życia. W tym artykule pokazano, jak utworzyć obiekt SBOM dla obrazu kontenera, podpisać go i dołączyć go do obrazu przy użyciu narzędzi interfejsu wiersza polecenia. Możliwe są inne podejścia, w tym użycie potoku ciągłej integracji/ciągłego wdrażania w celu zautomatyzowania procesu.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że masz następujące elementy:

Zaloguj się do rejestru

Zaloguj się do usługi ACR i uzyskaj token dostępu dla rejestru. Na przykład następujące polecenia używają interfejsu wiersza polecenia platformy Azure do logowania się do rejestru i ustawiają token dostępu dla tego rejestru do zmiennej środowiskowej PASSWORD .

# 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)

Uwaga

Usługi ACR i ORAS obsługują wiele opcji uwierzytelniania dla użytkowników i automatyzacji systemu. W tym artykule użyto tożsamości indywidualnej przy użyciu tokenu platformy Azure. Aby uzyskać więcej opcji uwierzytelniania, zobacz Uwierzytelnianie za pomocą rejestru kontenerów platformy Azure.

Kompilowanie i wypychanie obrazu kontenera

Służy az acr build do kompilowania i wypychania obrazu kontenera do rejestru.

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

Zaloguj się przy użyciu interfejsu wiersza polecenia notacji

Użyj polecenia notation login , aby zalogować się do rejestru.

Ważne

W przypadku korzystania z tokenu dostępu dla usługi ACR należy użyć 00000000-0000-0000-0000-000000000000 jako nazwy użytkownika.

export USER_NAME="00000000-0000-0000-0000-000000000000"
notation login -u $USER_NAME -p $PASSWORD $REGISTRY

Podpisywanie obrazu

Użyj notation sign polecenia , aby podpisać obraz.

Ważne

Aby podpisać obraz, musisz mieć certyfikat podpisywania i parę kluczy. Na przykład Tworzenie, podpisywanie i weryfikowanie obrazów kontenerów przy użyciu notary i usługi Azure Key Vault pokazuje, jak za pomocą usługi Azure Key Vault utworzyć certyfikat podpisywania i parę kluczy.

notation sign $IMAGE

Użyj notation ls polecenia , aby wyświetlić listę podpisów na obrazie.

notation ls $IMAGE

Poniższe przykładowe dane wyjściowe pokazują podpis na obrazie.

<acr-name>.azurecr.io/net-monitor@sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
└── application/vnd.cncf.notary.signature
    └── sha256:111222333444555666777888999000aaabbbcccdddeeefff1112223334445556

Tworzenie rozwiązania SBOM

Użyj sbom-tool polecenia , aby utworzyć element SBOM dla obrazu. Na przykład następujące polecenia tworzą SBOM dla obrazu i przechowują je w ./sbom katalogu.

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

Dołączanie elementu SBOM do obrazu

Użyj polecenia oras attach , aby dołączyć element SBOM do obrazu. Na przykład następujące polecenie dołącza manifest.spdx.json plik do obrazu.

SBOM_FILE=$SBOM_DIR/_manifest/spdx_2.2/manifest.spdx.json
oras attach $IMAGE $SBOM_FILE --artifact-type example/sbom

Podpisywanie SBOM

Użyj oras discover polecenia , aby pobrać skrót dla SBOM.

oras discover $IMAGE -o tree

W poniższych przykładowych danych wyjściowych przedstawiono skróty zarówno dla podpisu, jak i obrazu.

$ oras discover $IMAGE -o tree

<acr-name>.azurecr.io/net-monitor@sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
├── example/sbom
│   └── sha256:fffeeedddcccbbbaaa000999888777666555444333222111fffeeedddcccbbba
└── application/vnd.cncf.notary.signature
    └── sha256:111222333444555666777888999000aaabbbcccdddeeefff1112223334445556

Użyj notation sign polecenia , aby podpisać SBOM przy użyciu wartości skrótu SBOM z poprzedniego polecenia.

SBOM=$REGISTRY/${REPO}@sha256:fffeeedddcccbbbaaa000999888777666555444333222111fffeeedddcccbbba
notation sign $SBOM

Użyj notation ls polecenia , aby wyświetlić listę podpisów w programie SBOM.

notation ls $SBOM

W poniższym przykładzie pokazano podpis dla SBOM.

$ notation ls $SBOM

<acr-name>.azurecr.io/net-monitor@sha256:fffeeedddcccbbbaaa000999888777666555444333222111fffeeedddcccbbba
└── application/vnd.cncf.notary.signature
    └── sha256:fedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321

Następne kroki

Aby uzyskać więcej informacji, zobacz omówienie każdego etapu: