Mendorong dan menarik artefak rantai pasokan menggunakan Azure Registry (Pratinjau)
Gunakan registri kontainer Azure untuk menyimpan dan mengelola grafik artefak rantai pasokan, termasuk tanda tangan, tagihan perangkat lunak bahan (SBOM), hasil pemindaian keamanan, dan jenis lainnya.
Untuk menunjukkan kemampuan ini, artikel ini menunjukkan cara menggunakan OCI Registry sebagai CLI Penyimpanan (ORAS) ke push
, discover
dan pull
grafik artefak rantai pasokan ke registri kontainer Azure.
Menyimpan Artefak OCI individu (root) tercakup dalam artefak Push dan pull OCI.
Untuk menyimpan grafik artefak, referensi ke subject
artefak didefinisikan menggunakan Manifes Artefak OCI, yang merupakan bagian dari spesifikasi Distribusi OCI 1.1 pra-rilis.
Dukungan Manifes Artefak OCI 1.1 adalah fitur pratinjau ACR dan tunduk pada batasan.
Prasyarat
- Azure Container Registry - Membuat registri kontainer pada langganan Azure Anda. Misalnya, gunakan portal Microsoft Azure atau Azure CLI.
Lihat Batasan pratinjau untuk dukungan cloud Azure. - Azure CLI - Versi atau yang
2.29.1
lebih baru diperlukan. Lihat Menginstal Azure CLI untuk penginstalan dan/atau peningkatan. - ORAS CLI - Versi
v0.16.0
diperlukan. Lihat: Penginstalan ORAS. - Docker (Opsional) - Untuk menyelesaikan panduan, gambar kontainer dirujuk.
Anda dapat menggunakan Docker yang diinstal secara lokal untuk membangun dan mendorong gambar kontainer, atau menggunakan
acr build
untuk membangun dari jarak jauh di Azure.
Meskipun Docker Desktop tidak diperlukan,oras
cli menggunakan penyimpanan kredensial desktop Docker untuk menyimpan kredensial. Jika Docker Desktop diinstal, Docker Desktop harus berjalan untukoras login
.
Batasan pratinjau
Dukungan Manifes Artefak OCI (spesifikasi OCI 1.1) tersedia di semua wilayah publik Azure. Microsoft Azure yang dioperasikan oleh 21Vianet dan cloud pemerintah belum didukung.
Mengonfigurasi registri
Konfigurasikan variabel lingkungan untuk menyalin/menempelkan perintah dengan mudah ke dalam shell Anda. Perintah dapat dijalankan secara lokal atau di Azure Cloud Shell.
ACR_NAME=myregistry
REGISTRY=$ACR_NAME.azurecr.io
REPO=net-monitor
TAG=v1
IMAGE=$REGISTRY/${REPO}:$TAG
Autentikasi dengan identitas Microsoft Entra individual Anda menggunakan token AD. Selalu gunakan "000..." untuk USER_NAME
saat token diurai melalui PASSWORD
variabel.
# Login to Azure
az login
# Login to ACR, using a token based on your Azure identity
USER_NAME="00000000-0000-0000-0000-000000000000"
PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
Catatan
ACR dan ORAS mendukung beberapa opsi autentikasi untuk pengguna dan otomatisasi sistem. Artikel ini menggunakan identitas individual, menggunakan token Azure. Untuk opsi autentikasi lainnya, lihat Mengautentikasi dengan registri kontainer Azure
Masuk dengan ORAS
Berikan kredensial ke oras login
.
oras login $REGISTRY \
--username $USER_NAME \
--password $PASSWORD
Mendorong gambar kontainer
Contoh ini mengaitkan grafik artefak dengan gambar kontainer.
Buat dan dorong gambar kontainer, atau lewati langkah ini jika $IMAGE
mereferensikan gambar yang ada di registri.
az acr build -r $ACR_NAME -t $IMAGE https://github.com/wabbit-networks/net-monitor.git#main
Membuat tanda tangan sampel ke gambar kontainer
echo '{"artifact": "'${IMAGE}'", "signature": "jayden hancock"}' > signature.json
Melampirkan tanda tangan ke registri, sebagai referensi ke gambar kontainer
Perintah oras attach
membuat referensi antara file (./signature.json
) ke $IMAGE
. --artifact-type
menyediakan artefak pembeda, mirip dengan ekstensi file yang memungkinkan jenis file yang berbeda. Satu atau beberapa file dapat dilampirkan dengan menentukan [file]:[mediaType]
.
oras attach $IMAGE \
--artifact-type signature/example \
./signature.json:application/json
Untuk informasi lebih lanjut tentang pelampiran oras, lihat dokumentasi ORAS.
Melampirkan artefak multi-file sebagai referensi
Ketika artefak OCI didorong ke registri dengan ORAS, setiap referensi file didorong sebagai blob. Untuk mendorong blob terpisah, referensikan file satu per satu, atau kumpulan file dengan mereferensikan direktori.
Untuk informasi selengkapnya cara mendorong kumpulan file, lihat Mendorong artefak dengan beberapa file.
Buat beberapa dokumentasi sekeliling artefak:
echo 'Readme Content' > readme.md
mkdir details/
echo 'Detailed Content' > details/readme-details.md
echo 'More detailed Content' > details/readme-more-details.md
Lampirkan artefak multi-file sebagai referensi ke $IMAGE
:
Linux, WSL2, atau macOS
oras attach $IMAGE \
--artifact-type readme/example \
./readme.md:application/markdown \
./details
Windows
.\oras.exe attach $IMAGE ^
--artifact-type readme/example ^
.\readme.md:application/markdown ^
.\details
Menemukan referensi artefak
Spesifikasi OCI v1.1 mendefinisikan API perujuk untuk menemukan referensi ke subject
artefak. Perintah oras discover
dapat menampilkan daftar referensi ke gambar kontainer.
Menggunakan oras discover
, lihat grafik artefak yang sekarang disimpan dalam registri.
oras discover -o tree $IMAGE
Output menunjukkan awal dari grafik artefak, di mana tanda tangan dan dokumen dianggap sebagai turunan dari gambar kontainer.
myregistry.azurecr.io/net-monitor:v1
├── signature/example
│ └── sha256:555ea91f39e7fb30c06f3b7aa483663f067f2950dcb...
└── readme/example
└── sha256:1a118663d1085e229ff1b2d4d89b5f6d67911f22e55...
Membuat grafik artefak mendalam
Spesifikasi OCI v1.1 memungkinkan grafik mendalam, memungkinkan tagihan perangkat lunak bahan (SBOM) yang ditandatangani dan jenis artefak lainnya.
Membuat sampel SBOM
echo '{"version": "0.0.0.0", "artifact": "'${IMAGE}'", "contents": "good"}' > sbom.json
Melampirkan sampel SBOM ke gambar di registri
Linux, WSL2, atau macOS
oras attach $IMAGE \
--artifact-type sbom/example \
./sbom.json:application/json
Windows
.\oras.exe attach $IMAGE ^
--artifact-type sbom/example ^
./sbom.json:application/json
Menandatangani SBOM
Artefak yang didorong sebagai referensi, biasanya tidak memiliki tag karena dianggap sebagai bagian subject
dari artefak. Untuk mendorong tanda tangan ke artefak yang merupakan turunan dari artefak lain, gunakan oras discover
dengan penyaringan --artifact-type
untuk menemukan digest.
SBOM_DIGEST=$(oras discover -o json \
--artifact-type sbom/example \
$IMAGE | jq -r ".manifests[0].digest")
Membuat tanda tangan SBOM
echo '{"artifact": "'$IMAGE@$SBOM_DIGEST'", "signature": "jayden hancock"}' > sbom-signature.json
Melampirkan tanda tangan SBOM
oras attach $IMAGE@$SBOM_DIGEST \
--artifact-type 'signature/example' \
./sbom-signature.json:application/json
Lihat grafik
oras discover -o tree $IMAGE
Menghasilkan output berikut:
myregistry.azurecr.io/net-monitor:v1
├── sbom/example
│ └── sha256:4f1843833c029ecf0524bc214a0df9a5787409fd27bed2160d83f8cc39fedef5
│ └── signature/example
│ └── sha256:3c43b8cb0c941ec165c9f33f197d7f75980a292400d340f1a51c6b325764aa93
├── readme/example
│ └── sha256:5fafd40589e2c980e2864a78818bff51ee641119cf96ebb0d5be83f42aa215af
└── signature/example
└── sha256:00da2c1c3ceea087b16e70c3f4e80dbce6f5b7625d6c8308ad095f7d3f6107b5
Mempromosikan grafik
Alur kerja DevOps yang khas akan mempromosikan artefak dari dev through staging, ke lingkungan produksi Alur kerja rantai pasokan aman mempromosikan konten publik ke lingkungan yang diamankan secara privat. Dalam kedua kasus, Anda ingin mempromosikan tanda tangan, SBOM, hasil pemindaian, dan artefak terkait lainnya dengan artefak akar untuk memiliki grafik dependensi yang lengkap.
oras copy
Dengan menggunakan perintah , Anda dapat mempromosikan grafik artefak yang difilter di seluruh registri.
net-monitor:v1
Salin gambar, dan artefak terkait ke sample-staging/net-monitor:v1
:
TARGET_REPO=$REGISTRY/sample-staging/$REPO
oras copy -r $IMAGE $TARGET_REPO:$TAG
Output dari oras copy
:
Copying 6bdea3cdc730 sbom-signature.json
Copying 78e159e81c6b sbom.json
Copied 6bdea3cdc730 sbom-signature.json
Copied 78e159e81c6b sbom.json
Copying 7cf1385c7f4d signature.json
Copied 7cf1385c7f4d signature.json
Copying 3e797ecd0697 details
Copying 2fdeac43552b readme.md
Copied 3e797ecd0697 details
Copied 2fdeac43552b readme.md
Copied demo42.myregistry.io/net-monitor:v1 => myregistry.azurecr.io/sample-staging/net-monitor:v1
Digest: sha256:ff858b2ea3cdf4373cba65d2ca6bcede4da1d620503a547cab5916614080c763
Menemukan grafik artefak yang dipromosikan
oras discover -o tree $TARGET_REPO:$TAG
Output dari oras discover
:
myregistry.azurecr.io/sample-staging/net-monitor:v1
├── sbom/example
│ └── sha256:4f1843833c029ecf0524bc214a0df9a5787409fd27bed2160d83f8cc39fedef5
│ └── signature/example
│ └── sha256:3c43b8cb0c941ec165c9f33f197d7f75980a292400d340f1a51c6b325764aa93
├── readme/example
│ └── sha256:5fafd40589e2c980e2864a78818bff51ee641119cf96ebb0d5be83f42aa215af
└── signature/example
└── sha256:00da2c1c3ceea087b16e70c3f4e80dbce6f5b7625d6c8308ad095f7d3f6107b5
Tarik artefak yang direferensikan
Untuk menarik artefak referensi tertentu, hash referensi ditemukan dengan oras discover
perintah :
DOC_DIGEST=$(oras discover -o json \
--artifact-type 'readme/example' \
$TARGET_REPO:$TAG | jq -r ".manifests[0].digest")
Buat direktori bersih untuk pengunduhan
mkdir ./download
Tarik dokumen ke dalam direktori unduhan
oras pull -o ./download $TARGET_REPO@$DOC_DIGEST
Lihat dokumen
tree ./download
Output dari tree
:
./download
├── details
│ ├── readme-details.md
│ └── readme-more-details.md
└── readme.md
Lihat repositori dan daftar tag
Manifes Artefak OCI memungkinkan grafik artefak didorong, ditemukan, ditarik, dan disalin tanpa harus menetapkan tag. Manifes artefak memungkinkan daftar tag untuk fokus pada artefak yang dipikirkan pengguna, dibandingkan dengan tanda tangan dan SBOM yang terkait dengan gambar kontainer, bagan helm, dan artefak lainnya.
Lihat daftar tag
oras repo tags $REGISTRY/$REPO
Lihat daftar manifes
Repositori dapat memiliki daftar manifes yang ditandai dan tidak diberi tag. az acr manifest
Menggunakan CLI, lihat daftar lengkap manifes:
az acr manifest list-metadata \
--name $REPO \
--registry $ACR_NAME \
--output jsonc
Perhatikan bahwa manifes gambar kontainer memiliki "tags"
, sementara jenis referensi ("mediaType": "application/vnd.oci.artifact.manifest.v1+json"
) tidak.
Dalam output, tanda tangan tidak diberi tag, tetapi dilacak sebagai oci.artifact.manifest
referensi ke gambar kontainer:
{
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"createdTime": "2023-01-10T17:58:28.4403142Z",
"digest": "sha256:00da2c1c3ceea087b16e70c3f4e80dbce6f5b7625d6c8308ad095f7d3f6107b5",
"imageSize": 80,
"lastUpdateTime": "2023-01-10T17:58:28.4403142Z",
"mediaType": "application/vnd.oci.artifact.manifest.v1+json"
}
Menghapus semua artefak di grafik
Dukungan untuk Spesifikasi OCI v1.1 memungkinkan penghapusan grafik artefak yang terkait dengan artefak akar. oras delete
Gunakan perintah untuk menghapus grafik artefak (tanda tangan, SBOM, dan tanda tangan SBOM).
oras manifest delete -f $REGISTRY/$REPO:$TAG
oras manifest delete -f $REGISTRY/sample-staging/$REPO:$TAG
Lihat manifes yang tersisa
Dengan menghapus artefak akar, semua artefak terkait juga dihapus meninggalkan lingkungan yang bersih:
az acr manifest list-metadata \
--name $REPO \
--registry $ACR_NAME -o jsonc
Output:
2023-01-10 18:38:45.366387 Error: repository "net-monitor" is not found.
Ringkasan
Dalam artikel ini, grafik artefak rantai pasokan dibuat, ditemukan, dipromosikan, dan ditarik memberikan manajemen siklus hidup artefak yang Anda bangun dan andalkan.