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: