Freigeben über


Anfügen eines signierten SBOM an ein Containerimage

Eine Software Bill of Materials (SBOM) ist ein Buildmanifest, das die Komponenten auflistet, die zum Erstellen eines Softwareteils verwendet werden. Ein SBOM kann verwendet werden, um die Provenienz eines Softwarestücks, einschließlich Containerimages, während des gesamten Lebenszyklus nachzuverfolgen. In diesem Artikel erfahren Sie, wie Sie ein SBOM für ein Containerimage erstellen, signieren und mit CLI-Tools an das Image anfügen. Andere Ansätze sind möglich, z. B. die Verwendung einer CI/CD-Pipeline zur Automatisierung des Prozesses.

Voraussetzungen

Bevor Sie sein, stellen Sie sicher, dass Sie folgendes haben:

Melden Sie sich bei Ihrer Registrierung an

Melden Sie sich bei Ihrem ACR an, und rufen Sie das Zugriffstoken für Ihre Registrierung ab. Beispielsweise verwenden die folgenden Befehle die Azure CLI, um sich bei Ihrer Registrierung anzumelden und das Zugriffstoken für ihre Registrierung auf die PASSWORD Umgebungsvariable fest.

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

Hinweis

ACR und ORAS unterstützen mehrere Authentifizierungsoptionen für Benutzer und Systemautomatisierung. In diesem Artikel wird eine einzelne Identität mithilfe eines Azure-Tokens verwendet. Weitere Authentifizierungsoptionen finden Sie unter Authentifizieren mit einer Azure-Containerregistrierung.

Erstellen und Pushen eines Containerimages

Hier können Sie az acr build ein Containerimage erstellen und an Ihre Registrierung übertragen.

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

Melden Sie sich mit der Notation CLI an

Hier können Sie notation login sich bei Ihrer Registrierung anmelden.

Wichtig

Wenn Sie das Zugriffstoken für Ihr ACR verwenden, müssen Sie als Benutzernamen verwenden 00000000-0000-0000-0000-000000000000 .

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

Signieren des Bilds

Wird notation sign verwendet, um das Bild zu signieren.

Wichtig

Sie müssen über ein Signaturzertifikat und ein Schlüsselpaar verfügen, um das Bild zu signieren. Beispiel: Erstellen, Signieren und Überprüfen von Containerimages mit Notary und Azure Key Vault zeigt, wie Sie azure Key Vault zum Erstellen eines Signaturzertifikats und eines Schlüsselpaars verwenden.

notation sign $IMAGE

Dient notation ls zum Auflisten der Signaturen im Bild.

notation ls $IMAGE

Die folgende Beispielausgabe zeigt die Signatur auf dem Bild.

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

Erstellen eines SBOM

Dient sbom-tool zum Erstellen eines SBOM für das Image. Die folgenden Befehle erstellen z. B. ein SBOM für das Image und speichern es im ./sbom Verzeichnis.

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

Anfügen des SBOM an das Bild

Wird oras attach verwendet, um das SBOM an das Bild anzufügen. Beispielsweise fügt der folgende Befehl die manifest.spdx.json Datei an das Bild an.

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

Signieren der SBoM

Dient oras discover zum Abrufen des Digests für das SBOM.

oras discover $IMAGE -o tree

Die folgende Beispielausgabe zeigt Digests sowohl für die Signatur als auch für das Bild.

$ oras discover $IMAGE -o tree

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

Wird verwendet notation sign , um das SBOM mithilfe des Digestwerts des SBOM aus dem vorherigen Befehl zu signieren.

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

Dient notation ls zum Auflisten der Signaturen im SBOM.

notation ls $SBOM

Das folgende Beispiel zeigt die Signatur auf dem SBOM.

$ notation ls $SBOM

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

Nächste Schritte

Weitere Informationen finden Sie in der Übersicht über die einzelnen Phasen: