다음을 통해 공유


서명된 SBOM을 컨테이너 이미지에 연결

SBOM(소프트웨어 청구서)은 소프트웨어 조각을 빌드하는 데 사용되는 구성 요소를 나열하는 빌드 매니페스트입니다. SBOM을 사용하여 수명 주기 내내 컨테이너 이미지를 포함한 소프트웨어의 출처를 추적할 수 있습니다. 이 문서에서는 CLI 도구를 사용하여 컨테이너 이미지에 대한 SBOM을 만들고, 서명하고, 이미지에 연결하는 방법을 보여줍니다. CI/CD 파이프라인을 사용하여 프로세스를 자동화하는 등 다른 방법이 가능합니다.

필수 조건

시작하기 전에 다음이 있는지 확인합니다.

레지스트리에 로그인

ACR에 로그인하고 레지스트리에 대한 액세스 토큰을 가져옵니다. 예를 들어 다음 명령은 Azure CLI를 사용하여 레지스트리에 로그인하고 해당 레지스트리의 액세스 토큰을 환경 변수로 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)

참고 항목

ACR 및 ORAS는 사용자 및 시스템 자동화를 위한 여러 인증 옵션을 지원합니다. 이 문서에서는 Azure 토큰을 사용하여 개별 ID를 사용합니다. 더 많은 인증 옵션은 Azure 컨테이너 레지스트리를 사용하여 인증을 참조 하세요.

컨테이너 이미지 빌드 및 푸시

컨테이너 이미지를 빌드하고 레지스트리에 푸시하는 데 사용합니다 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를 사용하여 로그인

레지스트리에 로그인하는 데 사용합니다 notation login .

Important

ACR에 대한 액세스 토큰을 사용하는 경우 사용자 이름으로 사용해야 00000000-0000-0000-0000-000000000000 합니다.

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

이미지 서명

이미지에 서명하는 데 사용합니다 notation sign .

Important

이미지에 서명하려면 서명 인증서와 키 쌍이 있어야 합니다. 예를 들어 Notary 및 Azure Key Vault를 사용하여 컨테이너 이미지를 빌드, 서명 및 확인하면 Azure Key Vault 를 사용하여 서명 인증서 및 키 쌍을 만드는 방법을 보여 줍니다.

notation sign $IMAGE

이미지의 서명을 나열하는 데 사용합니다 notation ls .

notation ls $IMAGE

다음 예제 출력은 이미지의 서명을 보여줍니다.

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

SBOM 만들기

이미지에 대한 SBOM을 만드는 데 사용합니다 sbom-tool . 예를 들어 다음 명령은 이미지에 대한 SBOM을 만들고 디렉터리에 저장 ./sbom 합니다.

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

이미지에 SBOM 연결

SBOM을 이미지에 연결하는 데 사용합니다 oras attach . 예를 들어 다음 명령은 파일을 이미지에 연결합니다 manifest.spdx.json .

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

SBOM 서명

SBOM에 대한 다이제스트를 가져오는 데 사용합니다 oras discover .

oras discover $IMAGE -o tree

다음 예제 출력은 서명과 이미지 모두에 대한 다이제스트를 보여 줍니다.

$ oras discover $IMAGE -o tree

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

이전 명령에서 SBOM의 다이제스트 값을 사용하여 SBOM에 서명하는 데 사용합니다 notation sign .

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

SBOM의 서명을 나열하는 데 사용합니다 notation ls .

notation ls $SBOM

다음 예제에서는 SBOM의 서명을 보여줍니다.

$ notation ls $SBOM

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

다음 단계

자세한 내용은 각 단계의 개요를 참조하세요.