Aracılığıyla paylaş


Kapsayıcı görüntüsüne imzalı SBOM ekleme

Yazılım Malzeme Listesi (SBOM), bir yazılım parçası oluşturmak için kullanılan bileşenleri listeleyen bir derleme bildirimidir. SBOM, yaşam döngüsü boyunca kapsayıcı görüntüleri de dahil olmak üzere bir yazılım parçasının başarısının izlenmesi için kullanılabilir. Bu makalede, CLI araçlarını kullanarak bir kapsayıcı görüntüsü için SBOM oluşturma, imzalama ve resme ekleme gösterilmektedir. İşlemi otomatikleştirmek için CI/CD işlem hattı kullanmak da dahil olmak üzere diğer yaklaşımlar mümkündür.

Önkoşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

Kayıt defterinizde oturum açın

ACR'nizde oturum açın ve kayıt defterinizin erişim belirtecini alın. Örneğin, aşağıdaki komutlar kayıt defterinizde oturum açmak için Azure CLI'yi kullanır ve bu kayıt defterinizin erişim belirtecini ortam değişkenine PASSWORD ayarlar.

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

Not

ACR ve ORAS, kullanıcılar ve sistem otomasyonu için birden çok kimlik doğrulama seçeneğini destekler. Bu makalede Azure belirteci kullanılarak tek tek kimlik kullanılır. Daha fazla kimlik doğrulama seçeneği için bkz . Azure kapsayıcı kayıt defteriyle kimlik doğrulaması.

Kapsayıcı görüntüsü oluşturma ve gönderme

Kapsayıcı görüntüsü oluşturmak ve kayıt defterinize göndermek için kullanın az acr build .

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

Notation CLI ile oturum açma

Kayıt defterinizde oturum açmak için kullanın notation login .

Önemli

ACR'niz için erişim belirtecini kullanırken kullanıcı adı olarak kullanmanız 00000000-0000-0000-0000-000000000000 gerekir.

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

Resmi imzalama

Resmi imzalamak için kullanın notation sign .

Önemli

Resmi imzalamak için bir imzalama sertifikasına ve anahtar çiftine sahip olmanız gerekir. Örneğin Noter ve Azure Key Vault kullanarak kapsayıcı görüntülerini derleme, imzalama ve doğrulama, Azure Key Vault'u kullanarak imzalama sertifikası ve anahtar çifti oluşturmayı gösterir.

notation sign $IMAGE

Resimdeki imzaları listelemek için kullanın notation ls .

notation ls $IMAGE

Aşağıdaki örnek çıktı görüntüdeki imzayı gösterir.

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

SBOM oluşturma

Görüntü için bir SBOM oluşturmak için kullanın sbom-tool . Örneğin, aşağıdaki komutlar görüntü için bir SBOM oluşturur ve bunu dizinde ./sbom depolar.

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

Görüntüye SBOM ekleme

SBOM'yi görüntüye eklemek için kullanın oras attach . Örneğin, aşağıdaki komut dosyayı görüntüye ekler manifest.spdx.json .

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

SBOM'yi imzalama

SBOM'un özetini almak için kullanın oras discover .

oras discover $IMAGE -o tree

Aşağıdaki örnek çıktıda hem imza hem de görüntü için özetler gösterilmektedir.

$ oras discover $IMAGE -o tree

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

Önceki komuttan SBOM özet değerini kullanarak SBOM'yi imzalamak için kullanın notation sign .

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

SBOM'da imzaları listelemek için kullanın notation ls .

notation ls $SBOM

Aşağıdaki örnekte SBOM'da imza gösterilmektedir.

$ notation ls $SBOM

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

Sonraki Adımlar

Daha fazla bilgi için her aşamaya genel bakışa bakın: