Azure Kayıt Defteri'ni kullanarak tedarik zinciri yapıtlarını gönderme ve çekme (Önizleme)
İmzalar, yazılım malzeme listesi (SBOM), güvenlik taraması sonuçları ve diğer türler de dahil olmak üzere tedarik zinciri yapıtlarının grafiğini depolamak ve yönetmek için Bir Azure kapsayıcı kayıt defteri kullanın.
Bu özelliği göstermek için, bu makalede OCI Kayıt Defteri'nin için Depolama (ORAS) CLI push
discover
olarak nasıl kullanılacağı ve pull
Azure kapsayıcı kayıt defterine tedarik zinciri yapıtlarının grafiği gösterilir.
Tek tek (kök) OCI Yapıtlarının depolanması, gönderme ve çekme OCI yapıtları kapsamındadır.
Yapıt grafiğini depolamak için, yayın öncesi OCI 1.1 Dağıtım belirtiminin bir parçası olan OCI Yapıt Bildirimi kullanılarak bir subject
yapıta başvuru tanımlanır.
OCI 1.1 Yapıt Bildirimi desteği bir ACR önizleme özelliğidir ve sınırlamalara tabidir.
Ön koşullar
- Azure kapsayıcısı kayıt defteri -Azure aboneliğinizde bir kapsayıcı kayıt defteri oluşturun. Örneğin, Azure portalını veya Azure CLI'yı kullanın.
Bkz. Azure bulut desteği için önizleme sınırlamaları . - Azure CLI - Sürüm
2.29.1
veya üzeri gereklidir. Yükleme ve/veya yükseltme için bkz . Azure CLI'yi yükleme. - ORAS CLI - Sürüm
v0.16.0
gereklidir. Bkz. ORAS yüklemesi. - Docker (İsteğe bağlı) - İzlenecek yolu tamamlamak için bir kapsayıcı görüntüsüne başvurulur.
Yerel olarak yüklenen Docker'ı kullanarak bir kapsayıcı görüntüsü derleyebilir ve gönderebilirsiniz ya da Azure'da uzaktan derlemek için kullanabilirsiniz
acr build
.
Docker Desktop gerekli olmasa da cli,oras
kimlik bilgilerini depolamak için Docker masaüstü kimlik bilgisi depounu kullanır. Docker Desktop yüklüyse, içinoras login
çalışıyor olmalıdır.
Önizleme sınırlamaları
OCI Yapıt Bildirimi desteği (OCI 1.1 belirtimi) tüm Azure genel bölgelerinde kullanılabilir. 21Vianet tarafından sağlanan Microsoft Azure ve kamu bulutları henüz desteklenmemektedir.
Kayıt defterini yapılandırma
Ortam değişkenlerini, komutları kolayca kopyalayıp kabuğunuza yapıştıracak şekilde yapılandırın. Komutlar yerel olarak veya Azure Cloud Shell'de çalıştırılabilir.
ACR_NAME=myregistry
REGISTRY=$ACR_NAME.azurecr.io
REPO=net-monitor
TAG=v1
IMAGE=$REGISTRY/${REPO}:$TAG
AD belirteci kullanarak bireysel Microsoft Entra kimliğinizle kimlik doğrulaması. Belirteç değişken aracılığıyla PASSWORD
ayrıştırıldığından USER_NAME
her zaman için "000..." kullanın.
# 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)
Dekont
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ı
ORAS ile oturum açma
kimlik bilgilerini adresine oras login
sağlayın.
oras login $REGISTRY \
--username $USER_NAME \
--password $PASSWORD
Kapsayıcı görüntüsü gönderme
Bu örnek, yapıtların grafiğini bir kapsayıcı görüntüsüyle ilişkilendirir.
Kapsayıcı görüntüsü oluşturup gönderin veya kayıt defterinde var olan bir görüntüye başvuruda bulunursa $IMAGE
bu adımı atlayın.
az acr build -r $ACR_NAME -t $IMAGE https://github.com/wabbit-networks/net-monitor.git#main
Kapsayıcı görüntüsüne örnek imza oluşturma
echo '{"artifact": "'${IMAGE}'", "signature": "jayden hancock"}' > signature.json
Kapsayıcı görüntüsüne başvuru olarak kayıt defterine imza ekleme
komutu, oras attach
dosyası (./signature.json
) arasında öğesine $IMAGE
bir başvuru oluşturur. , --artifact-type
farklı dosya türlerini etkinleştiren dosya uzantılarına benzer şekilde yapıtları ayırt etmek için sağlar. belirterek [file]:[mediaType]
bir veya daha fazla dosya eklenebilir.
oras attach $IMAGE \
--artifact-type signature/example \
./signature.json:application/json
Oras ekleme hakkında daha fazla bilgi için ORAS belgelerine bakın.
Çok dosyalı yapıtı başvuru olarak ekleme
OCI yapıtları ORAS ile bir kayıt defterine gönderildiğinde, her dosya başvurusu blob olarak gönderilir. Ayrı bloblar göndermek için dosyalara tek tek veya bir dizine başvurarak dosya koleksiyonuna başvurun.
Bir dosya koleksiyonunu gönderme hakkında daha fazla bilgi için bkz . Yapıtları birden çok dosyayla gönderme.
Yapıtla ilgili bazı belgeler oluşturun:
echo 'Readme Content' > readme.md
mkdir details/
echo 'Detailed Content' > details/readme-details.md
echo 'More detailed Content' > details/readme-more-details.md
Çok dosyalı yapıtı öğesine $IMAGE
başvuru olarak ekleyin:
Linux, WSL2 veya 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
Yapıt başvurularını bulma
OCI v1.1 Belirtimi, bir yapıt başvurularını bulmak için başvuranlar subject
API'sini tanımlar. komutu, oras discover
kapsayıcı görüntüsüne yapılan başvuruların listesini gösterebilir.
kullanarak oras discover
artık kayıt defterinde depolanan yapıtların grafiğini görüntüleyin.
oras discover -o tree $IMAGE
Çıktı, imzanın ve belgelerin kapsayıcı görüntüsünün alt öğeleri olarak görüntülendiği yapıt grafiğinin başlangıcını gösterir.
myregistry.azurecr.io/net-monitor:v1
├── signature/example
│ └── sha256:555ea91f39e7fb30c06f3b7aa483663f067f2950dcb...
└── readme/example
└── sha256:1a118663d1085e229ff1b2d4d89b5f6d67911f22e55...
Yapıtların derin graflarını oluşturma
OCI v1.1 Belirtimi, ayrıntılı grafiklere olanak tanıyarak imzalı yazılım ürün reçetesini (SBOM) ve diğer yapıt türlerini etkinleştirir.
Örnek SBOM oluşturma
echo '{"version": "0.0.0.0", "artifact": "'${IMAGE}'", "contents": "good"}' > sbom.json
Kayıt defterindeki görüntüye örnek bir SBOM ekleme
Linux, WSL2 veya 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
SBOM'yi imzalama
Başvuru olarak gönderilen yapıtların genellikle yapıtın parçası subject
olarak kabul edildiği için etiketleri yoktur. başka bir yapıtın alt öğesi olan bir yapıta imza göndermek için özetini oras discover
bulmak için ile --artifact-type
filtrelemesini kullanın.
SBOM_DIGEST=$(oras discover -o json \
--artifact-type sbom/example \
$IMAGE | jq -r ".manifests[0].digest")
SBOM imzası oluşturma
echo '{"artifact": "'$IMAGE@$SBOM_DIGEST'", "signature": "jayden hancock"}' > sbom-signature.json
SBOM imzasını ekleme
oras attach $IMAGE@$SBOM_DIGEST \
--artifact-type 'signature/example' \
./sbom-signature.json:application/json
Grafiği görüntüleme
oras discover -o tree $IMAGE
Aşağıdaki çıkışı oluşturur:
myregistry.azurecr.io/net-monitor:v1
├── sbom/example
│ └── sha256:4f1843833c029ecf0524bc214a0df9a5787409fd27bed2160d83f8cc39fedef5
│ └── signature/example
│ └── sha256:3c43b8cb0c941ec165c9f33f197d7f75980a292400d340f1a51c6b325764aa93
├── readme/example
│ └── sha256:5fafd40589e2c980e2864a78818bff51ee641119cf96ebb0d5be83f42aa215af
└── signature/example
└── sha256:00da2c1c3ceea087b16e70c3f4e80dbce6f5b7625d6c8308ad095f7d3f6107b5
Grafiği yükseltme
Tipik bir DevOps iş akışı, geliştirmeden hazırlamaya kadar yapıtları üretim ortamına yükseltecek Güvenli tedarik zinciri iş akışları, genel içeriği özel olarak güvenli ortamlara yükseltecektir. Her iki durumda da imzaları, SBOM'ları, tarama sonuçlarını ve kök yapıtla ilgili diğer yapıtları yükselterek bağımlılıkların eksiksiz bir grafiğine sahip olmak istersiniz.
oras copy
komutunu kullanarak kayıt defterleri arasında filtrelenmiş yapıt grafiğini yükseltebilirsiniz.
net-monitor:v1
Görüntüyü kopyalayın ve ilgili yapıtları öğesine sample-staging/net-monitor:v1
kopyalayın:
TARGET_REPO=$REGISTRY/sample-staging/$REPO
oras copy -r $IMAGE $TARGET_REPO:$TAG
çıktısı 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
Yükseltilen yapıt grafını keşfedin
oras discover -o tree $TARGET_REPO:$TAG
çıktısı 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
Başvurulan yapıtı çekme
Başvuruda bulunılan belirli bir yapıtı çekmek için, başvuru özeti komutuyla oras discover
bulunur:
DOC_DIGEST=$(oras discover -o json \
--artifact-type 'readme/example' \
$TARGET_REPO:$TAG | jq -r ".manifests[0].digest")
İndirme için temiz bir dizin oluşturma
mkdir ./download
Belgeleri indirme dizinine çekme
oras pull -o ./download $TARGET_REPO@$DOC_DIGEST
Belgeleri görüntüleme
tree ./download
çıktısı tree
:
./download
├── details
│ ├── readme-details.md
│ └── readme-more-details.md
└── readme.md
Depoyu ve etiket listesini görüntüleme
OCI Yapıt Bildirimi, etiket atamak zorunda kalmadan yapıt grafiklerinin gönderilmesini, bulunmasını, çekilmesini ve kopyalanmasına olanak tanır. Yapıt bildirimleri, kapsayıcı görüntüleri, helm grafikleri ve diğer yapıtlarla ilişkili imzalar ve SBOM'lar yerine, etiket listesinin kullanıcıların düşündüğü yapıtlara odaklanmasını sağlar.
Etiket listesini görüntüleme
oras repo tags $REGISTRY/$REPO
Bildirimlerin listesini görüntüleme
Bir depo hem etiketli hem de etiketsiz bildirimlerin bir listesine sahip olabilir. CLI kullanarak az acr manifest
bildirimlerin tam listesini görüntüleyin:
az acr manifest list-metadata \
--name $REPO \
--registry $ACR_NAME \
--output jsonc
Kapsayıcı görüntüsü bildirimlerinde "tags"
, başvuru türleri ("mediaType": "application/vnd.oci.artifact.manifest.v1+json"
) yoktur.
Çıktıda imza etiketsizdir, ancak kapsayıcı görüntüsüne başvuru oci.artifact.manifest
olarak izlenir:
{
"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"
}
Grafikteki tüm yapıtları silme
OCI v1.1 Belirtimi desteği, kök yapıtla ilişkili yapıtların grafiğinin silinmesini sağlar. Yapıtların grafiğini oras delete
(imza, SBOM ve SBOM imzası) silmek için komutunu kullanın.
oras manifest delete -f $REGISTRY/$REPO:$TAG
oras manifest delete -f $REGISTRY/sample-staging/$REPO:$TAG
Kalan bildirimleri görüntüleme
Kök yapıt silinerek, tüm ilgili yapıtlar temiz bir ortamdan ayrılarak da silinir:
az acr manifest list-metadata \
--name $REPO \
--registry $ACR_NAME -o jsonc
Çıkış:
2023-01-10 18:38:45.366387 Error: repository "net-monitor" is not found.
Özet
Bu makalede, oluşturduğunuz ve bağlı olduğunuz yapıtların yaşam döngüsü yönetimini sağlayan tedarik zinciri yapıtlarının grafiği oluşturulur, keşfedilir, yükseltilir ve çekilir.
Sonraki adımlar
- ORAS CLI hakkında daha fazla bilgi edinin
- Tedarik zinciri yapıtlarının grafiğini gönderme, keşfetme, çekme, kopyalama hakkında daha fazla bilgi edinin