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:
- Ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- Die neueste Version der Azure CLI wurde installiert und für Ihr Abonnement konfiguriert.
- Eine vorhandene Azure Container Registry (ACR) in Ihrem Abonnement.
- Notation CLI installiert.
- ORAS CLI installiert.
- sbom-tool installiert.
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: