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:
- Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Azure CLI'nın en son sürümü, aboneliğiniz için yüklü ve yapılandırılmıştır.
- Aboneliğinizde mevcut bir Azure Container Registry (ACR).
- Notation CLI yüklü.
- ORAS CLI yüklü.
- sbom-tool yüklü.
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: