Compartir a través de


Asociación de un SBOM firmado a una imagen de contenedor

Una lista de materiales de software (SBOM) es un manifiesto de compilación que enumera los componentes usados para crear un fragmento de software. Un SBOM se puede usar para realizar un seguimiento de la procedencia de un fragmento de software, incluidas las imágenes de contenedor, a lo largo de su ciclo de vida. En este artículo se muestra cómo crear un SBOM para una imagen de contenedor, firmarla y adjuntarla a la imagen mediante herramientas de la CLI. Otros enfoques son posibles, incluido el uso de una canalización de CI/CD para automatizar el proceso.

Requisitos previos

Antes de estar, asegúrese de que tiene lo siguiente:

  • Suscripción a Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
  • La versión más reciente de la CLI de Azure instalada y configurada para la suscripción.
  • Una instancia de Azure Container Registry (ACR) existente en la suscripción.
  • Cli de notación instalada.
  • LA CLI de ORAS instalada.
  • sbom-tool instalado.

Inicio de sesión en el registro

Inicie sesión en ACR y obtenga el token de acceso del registro. Por ejemplo, los siguientes comandos usan la CLI de Azure para iniciar sesión en el registro y establece el token de acceso del registro en la variable de PASSWORD entorno.

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

Nota:

ACR y ORAS admiten varias opciones de autenticación para los usuarios y la automatización del sistema. En este artículo se usa una identidad individual, que emplea un token de Azure. Para más opciones de autenticación, consulte Autenticación con un registro de contenedor de Azure.

Compilación e inserción de una imagen de contenedor

Use az acr build para compilar e insertar una imagen de contenedor en el registro.

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

Inicio de sesión con la CLI de notación

Use notation login para iniciar sesión en el registro.

Importante

Al usar el token de acceso para ACR, debe usar 00000000-0000-0000-0000-000000000000 como nombre de usuario.

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

Firmar la imagen

Use notation sign para firmar la imagen.

Importante

Debe tener un certificado de firma y un par de claves para firmar la imagen. Por ejemplo, Compilar, firmar y comprobar imágenes de contenedor mediante Notary y Azure Key Vault muestra cómo usar Azure Key Vault para crear un certificado de firma y un par de claves.

notation sign $IMAGE

Use notation ls para enumerar las firmas de la imagen.

notation ls $IMAGE

En la salida de ejemplo siguiente se muestra la firma en la imagen.

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

Creación de un SBOM

Use sbom-tool para crear un SBOM para la imagen. Por ejemplo, los siguientes comandos crean un SBOM para la imagen y lo almacenan en el ./sbom directorio .

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

Adjuntar el SBOM a la imagen

Use oras attach para adjuntar el SBOM a la imagen. Por ejemplo, el siguiente comando adjunta el manifest.spdx.json archivo a la imagen.

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

Firma de la SBOM

Use oras discover para obtener el resumen de SBOM.

oras discover $IMAGE -o tree

En la salida de ejemplo siguiente se muestran resúmenes para la firma y la imagen.

$ oras discover $IMAGE -o tree

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

Use notation sign para firmar el SBOM con el valor de resumen del SBOM desde el comando anterior.

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

Use notation ls para enumerar las firmas del SBOM.

notation ls $SBOM

En el ejemplo siguiente se muestra la firma en el SBOM.

$ notation ls $SBOM

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

Pasos siguientes

Consulte información general de cada fase para obtener más información: