Dołączanie podpisanego SBOM do obrazu kontenera
Programowy rachunek materiałów (SBOM) to manifest kompilacji, który zawiera listę składników używanych do tworzenia oprogramowania. SBOM może służyć do śledzenia pochodzenia oprogramowania, w tym obrazów kontenerów, w całym cyklu życia. W tym artykule pokazano, jak utworzyć obiekt SBOM dla obrazu kontenera, podpisać go i dołączyć go do obrazu przy użyciu narzędzi interfejsu wiersza polecenia. Możliwe są inne podejścia, w tym użycie potoku ciągłej integracji/ciągłego wdrażania w celu zautomatyzowania procesu.
Wymagania wstępne
Przed rozpoczęciem upewnij się, że masz następujące elementy:
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Zainstalowana i skonfigurowana dla subskrypcji najnowsza wersja interfejsu wiersza polecenia platformy Azure.
- Istniejąca usługa Azure Container Registry (ACR) w subskrypcji.
- Zainstalowany interfejs wiersza polecenia notacji.
- Zainstalowany interfejs wiersza polecenia USŁUGI ORAS.
- zainstalowane narzędzie sbom.
Zaloguj się do rejestru
Zaloguj się do usługi ACR i uzyskaj token dostępu dla rejestru. Na przykład następujące polecenia używają interfejsu wiersza polecenia platformy Azure do logowania się do rejestru i ustawiają token dostępu dla tego rejestru do zmiennej środowiskowej PASSWORD
.
# 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)
Uwaga
Usługi ACR i ORAS obsługują wiele opcji uwierzytelniania dla użytkowników i automatyzacji systemu. W tym artykule użyto tożsamości indywidualnej przy użyciu tokenu platformy Azure. Aby uzyskać więcej opcji uwierzytelniania, zobacz Uwierzytelnianie za pomocą rejestru kontenerów platformy Azure.
Kompilowanie i wypychanie obrazu kontenera
Służy az acr build
do kompilowania i wypychania obrazu kontenera do rejestru.
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
Zaloguj się przy użyciu interfejsu wiersza polecenia notacji
Użyj polecenia notation login
, aby zalogować się do rejestru.
Ważne
W przypadku korzystania z tokenu dostępu dla usługi ACR należy użyć 00000000-0000-0000-0000-000000000000
jako nazwy użytkownika.
export USER_NAME="00000000-0000-0000-0000-000000000000"
notation login -u $USER_NAME -p $PASSWORD $REGISTRY
Podpisywanie obrazu
Użyj notation sign
polecenia , aby podpisać obraz.
Ważne
Aby podpisać obraz, musisz mieć certyfikat podpisywania i parę kluczy. Na przykład Tworzenie, podpisywanie i weryfikowanie obrazów kontenerów przy użyciu notary i usługi Azure Key Vault pokazuje, jak za pomocą usługi Azure Key Vault utworzyć certyfikat podpisywania i parę kluczy.
notation sign $IMAGE
Użyj notation ls
polecenia , aby wyświetlić listę podpisów na obrazie.
notation ls $IMAGE
Poniższe przykładowe dane wyjściowe pokazują podpis na obrazie.
<acr-name>.azurecr.io/net-monitor@sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
└── application/vnd.cncf.notary.signature
└── sha256:111222333444555666777888999000aaabbbcccdddeeefff1112223334445556
Tworzenie rozwiązania SBOM
Użyj sbom-tool
polecenia , aby utworzyć element SBOM dla obrazu. Na przykład następujące polecenia tworzą SBOM dla obrazu i przechowują je w ./sbom
katalogu.
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
Dołączanie elementu SBOM do obrazu
Użyj polecenia oras attach
, aby dołączyć element SBOM do obrazu. Na przykład następujące polecenie dołącza manifest.spdx.json
plik do obrazu.
SBOM_FILE=$SBOM_DIR/_manifest/spdx_2.2/manifest.spdx.json
oras attach $IMAGE $SBOM_FILE --artifact-type example/sbom
Podpisywanie SBOM
Użyj oras discover
polecenia , aby pobrać skrót dla SBOM.
oras discover $IMAGE -o tree
W poniższych przykładowych danych wyjściowych przedstawiono skróty zarówno dla podpisu, jak i obrazu.
$ oras discover $IMAGE -o tree
<acr-name>.azurecr.io/net-monitor@sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
├── example/sbom
│ └── sha256:fffeeedddcccbbbaaa000999888777666555444333222111fffeeedddcccbbba
└── application/vnd.cncf.notary.signature
└── sha256:111222333444555666777888999000aaabbbcccdddeeefff1112223334445556
Użyj notation sign
polecenia , aby podpisać SBOM przy użyciu wartości skrótu SBOM z poprzedniego polecenia.
SBOM=$REGISTRY/${REPO}@sha256:fffeeedddcccbbbaaa000999888777666555444333222111fffeeedddcccbbba
notation sign $SBOM
Użyj notation ls
polecenia , aby wyświetlić listę podpisów w programie SBOM.
notation ls $SBOM
W poniższym przykładzie pokazano podpis dla SBOM.
$ notation ls $SBOM
<acr-name>.azurecr.io/net-monitor@sha256:fffeeedddcccbbbaaa000999888777666555444333222111fffeeedddcccbbba
└── application/vnd.cncf.notary.signature
└── sha256:fedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321
Następne kroki
Aby uzyskać więcej informacji, zobacz omówienie każdego etapu: