Partilhar via


Anexar uma SBOM assinada a uma imagem de contêiner

Uma Lista de Materiais de Software (SBOM) é um manifesto de compilação que lista os componentes usados para construir um software. Um SBOM pode ser usado para rastrear a procedência de um software, incluindo imagens de contêiner, durante todo o seu ciclo de vida. Este artigo mostra como criar um SBOM para uma imagem de contêiner, assiná-lo e anexá-lo à imagem usando as ferramentas da CLI. Outras abordagens são possíveis, incluindo o uso de um pipeline de CI/CD para automatizar o processo.

Pré-requisitos

Antes de estar, certifique-se de ter o seguinte:

Inicie sessão no seu registo

Inicie sessão no seu ACR e obtenha o token de acesso para o seu registo. Por exemplo, os comandos a seguir usam a CLI do Azure para entrar no Registro e define o token de acesso desse Registro para a PASSWORD variável de ambiente.

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

Observação

O ACR e o ORAS dão suporte a várias opções de autenticação para usuários e automação do sistema. Este artigo usa uma identidade individual, com um token do Azure. Para obter mais opções de autenticação, consulte Autenticar com um registro de contêiner do Azure.

Criar e enviar por push uma imagem de contêiner

Use az acr build para criar e enviar uma imagem de contêiner para o 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

Entrar com a CLI de Notação

Use notation login para entrar no registro.

Importante

Ao usar o token de acesso para seu ACR, você deve usar 00000000-0000-0000-0000-000000000000 como o nome de usuário.

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

Assine a imagem

Use notation sign para assinar a imagem.

Importante

Você deve ter um certificado de assinatura e um par de chaves para assinar a imagem. Por exemplo, Criar, assinar e verificar imagens de contêiner usando o Tabelião e o Cofre de Chaves do Azure mostra como usar o Cofre de Chaves do Azure para criar um certificado de assinatura e um par de chaves.

notation sign $IMAGE

Use notation ls para listar as assinaturas na imagem.

notation ls $IMAGE

A saída de exemplo a seguir mostra a assinatura na imagem.

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

Criar um SBOM

Use sbom-tool para criar um SBOM para a imagem. Por exemplo, os comandos a seguir criam um SBOM para a imagem e o armazenam no ./sbom diretório.

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

Anexar o SBOM à imagem

Use oras attach para anexar o SBOM à imagem. Por exemplo, o comando a seguir anexa o manifest.spdx.json arquivo à imagem.

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

Assinar a SBOM

Use oras discover para obter o resumo para o SBOM.

oras discover $IMAGE -o tree

A saída de exemplo a seguir mostra resumos para a assinatura e a imagem.

$ 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 assinar o SBOM usando o valor digest do SBOM do comando anterior.

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

Use notation ls para listar as assinaturas no SBOM.

notation ls $SBOM

O exemplo a seguir mostra a assinatura no SBOM.

$ notation ls $SBOM

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

Próximas etapas

Veja a visão geral de cada etapa para obter mais informações: