서명된 SBOM을 컨테이너 이미지에 연결
SBOM(소프트웨어 청구서)은 소프트웨어 조각을 빌드하는 데 사용되는 구성 요소를 나열하는 빌드 매니페스트입니다. SBOM을 사용하여 수명 주기 내내 컨테이너 이미지를 포함한 소프트웨어의 출처를 추적할 수 있습니다. 이 문서에서는 CLI 도구를 사용하여 컨테이너 이미지에 대한 SBOM을 만들고, 서명하고, 이미지에 연결하는 방법을 보여줍니다. CI/CD 파이프라인을 사용하여 프로세스를 자동화하는 등 다른 방법이 가능합니다.
필수 조건
시작하기 전에 다음이 있는지 확인합니다.
- Azure 구독 Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
- 구독에 대해 설치 및 구성된 Azure CLI 의 최신 버전입니다.
- 구독의 기존 ACR(Azure Container Registry) 입니다.
- 표기법 CLI 가 설치되었습니다.
- ORAS CLI 가 설치되었습니다.
- sbom-tool 이 설치되었습니다.
레지스트리에 로그인
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
다음 단계
자세한 내용은 각 단계의 개요를 참조하세요.