Artefacten van supply chain pushen en ophalen met behulp van Azure Registry (preview)
Gebruik een Azure-containerregister voor het opslaan en beheren van een grafiek met toeleveringsketenartefacten, waaronder handtekeningen, softwarefactuur van materialen (SBOM), resultaten van beveiligingsscans en andere typen.
Om deze mogelijkheid te demonstreren, laat dit artikel zien hoe u de OCI Registry as Storage (ORAS) CLI gebruikt voor push
en discover
pull
een grafiek van toeleveringsketenartefacten naar een Azure-containerregister.
Het opslaan van afzonderlijke (hoofd) OCI-artefacten wordt behandeld in Push- en pull-OCI-artefacten.
Voor het opslaan van een grafiek met artefacten wordt een verwijzing naar een subject
artefact gedefinieerd met behulp van het OCI-artefactmanifest, dat deel uitmaakt van de distributiespecificatie van de voorlopige versie van OCI 1.1.
Ondersteuning voor OCI 1.1 Artifact Manifest is een ACR Preview-functie en is onderhevig aan beperkingen.
Vereisten
- Azure-containerregister: maak een containerregister in uw Azure-abonnement. Gebruik bijvoorbeeld De Azure-portal of de Azure CLI.
Bekijk preview-beperkingen voor Azure-cloudondersteuning. - Azure CLI : versie
2.29.1
of hoger is vereist. Zie Azure CLI installeren voor installatie en/of upgrade. - ORAS CLI : versie
v0.16.0
is vereist. Zie: ORAS-installatie. - Docker (optioneel): er wordt verwezen naar een containerinstallatiekopieën om het overzicht te voltooien.
U kunt Docker gebruiken die lokaal is geïnstalleerd om een containerinstallatiekopieën te bouwen en te pushen of
acr build
om extern te bouwen in Azure.
Docker Desktop is niet vereist, maar deoras
cli maakt gebruik van het docker-bureaubladreferentiearchief voor het opslaan van referenties. Als Docker Desktop is geïnstalleerd, moet deze worden uitgevoerd voororas login
.
Preview-beperkingen
Ondersteuning voor OCI Artifact Manifest (OCI 1.1-specificatie) is beschikbaar in alle openbare Azure-regio's. Microsoft Azure beheerd door 21Vianet- en overheidsclouds wordt nog niet ondersteund.
Een register configureren
Configureer omgevingsvariabelen om opdrachten eenvoudig te kopiëren/plakken in uw shell. De opdrachten kunnen lokaal of in De Azure Cloud Shell worden uitgevoerd.
ACR_NAME=myregistry
REGISTRY=$ACR_NAME.azurecr.io
REPO=net-monitor
TAG=v1
IMAGE=$REGISTRY/${REPO}:$TAG
Verifieer met uw afzonderlijke Microsoft Entra-identiteit met behulp van een AD-token. Gebruik altijd '000...' als USER_NAME
het token wordt geparseerd via de PASSWORD
variabele.
# 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)
Notitie
ACR en ORAS ondersteunen meerdere verificatieopties voor gebruikers en systeemautomatisering. In dit artikel wordt gebruikgemaakt van een afzonderlijke identiteit, met behulp van een Azure-token. Zie Verifiëren met een Azure-containerregister voor meer verificatieopties
Aanmelden met ORAS
Geef de referenties op voor oras login
.
oras login $REGISTRY \
--username $USER_NAME \
--password $PASSWORD
Een containerinstallatiekopieën pushen
In dit voorbeeld wordt een grafiek met artefacten gekoppeld aan een containerinstallatiekopieën.
Bouw en push een containerinstallatiekopieën of sla deze stap over als $IMAGE
deze verwijst naar een bestaande installatiekopieën in het register.
az acr build -r $ACR_NAME -t $IMAGE https://github.com/wabbit-networks/net-monitor.git#main
Een voorbeeldhandtekening maken voor de containerinstallatiekopieën
echo '{"artifact": "'${IMAGE}'", "signature": "jayden hancock"}' > signature.json
Voeg een handtekening toe aan het register als verwijzing naar de containerinstallatiekopieën
Met de oras attach
opdracht maakt u een verwijzing tussen het bestand (./signature.json
) naar de $IMAGE
. De --artifact-type
functie biedt voor het onderscheiden van artefacten, vergelijkbaar met bestandsextensies die verschillende bestandstypen inschakelen. Een of meer bestanden kunnen worden bijgevoegd door op te [file]:[mediaType]
geven.
oras attach $IMAGE \
--artifact-type signature/example \
./signature.json:application/json
Zie de ORAS-documentatie voor meer informatie over oras-bijlage.
Een artefact met meerdere bestanden toevoegen als verwijzing
Wanneer OCI-artefacten worden gepusht naar een register met ORAS, wordt elke bestandsreferentie gepusht als een blob. Als u afzonderlijke blobs wilt pushen, verwijst u naar de bestanden afzonderlijk of verzameling bestanden door te verwijzen naar een map.
Zie Artefacten pushen met meerdere bestanden voor meer informatie over het pushen van een verzameling bestanden.
Maak een aantal documentatie over een artefact:
echo 'Readme Content' > readme.md
mkdir details/
echo 'Detailed Content' > details/readme-details.md
echo 'More detailed Content' > details/readme-more-details.md
Voeg het artefact met meerdere bestanden toe als verwijzing naar $IMAGE
:
Linux, WSL2 of 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
Artefactverwijzingen detecteren
De OCI v1.1-specificatie definieert een verwijzings-API voor het detecteren van verwijzingen naar een subject
artefact. Met oras discover
de opdracht kunt u de lijst met verwijzingen naar de containerinstallatiekopieën weergeven.
Bekijk met behulp oras discover
van de grafiek van artefacten die nu zijn opgeslagen in het register.
oras discover -o tree $IMAGE
In de uitvoer ziet u het begin van een grafiek met artefacten, waarbij de handtekening en documenten worden weergegeven als onderliggende elementen van de containerinstallatiekopieën.
myregistry.azurecr.io/net-monitor:v1
├── signature/example
│ └── sha256:555ea91f39e7fb30c06f3b7aa483663f067f2950dcb...
└── readme/example
└── sha256:1a118663d1085e229ff1b2d4d89b5f6d67911f22e55...
Een diepe grafiek van artefacten maken
De OCI v1.1-specificatie maakt diepe grafieken mogelijk, waardoor ondertekende softwarefactuur van materialen (SBOM) en andere artefacttypen mogelijk is.
Een voorbeeld-SBOM maken
echo '{"version": "0.0.0.0", "artifact": "'${IMAGE}'", "contents": "good"}' > sbom.json
Een voorbeeld-SBOM koppelen aan de installatiekopieën in het register
Linux, WSL2 of 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
De SBOM ondertekenen
Artefacten die als verwijzingen worden gepusht, hebben doorgaans geen tags omdat ze worden beschouwd als onderdeel van het subject
artefact. Als u een handtekening wilt pushen naar een artefact dat een onderliggend element van een ander artefact is, gebruikt u de oras discover
functie met --artifact-type
filteren om de samenvatting te vinden.
SBOM_DIGEST=$(oras discover -o json \
--artifact-type sbom/example \
$IMAGE | jq -r ".manifests[0].digest")
Een handtekening van een SBOM maken
echo '{"artifact": "'$IMAGE@$SBOM_DIGEST'", "signature": "jayden hancock"}' > sbom-signature.json
De SBOM-handtekening bijvoegen
oras attach $IMAGE@$SBOM_DIGEST \
--artifact-type 'signature/example' \
./sbom-signature.json:application/json
De grafiek weergeven
oras discover -o tree $IMAGE
Hiermee wordt de volgende uitvoer gegenereerd:
myregistry.azurecr.io/net-monitor:v1
├── sbom/example
│ └── sha256:4f1843833c029ecf0524bc214a0df9a5787409fd27bed2160d83f8cc39fedef5
│ └── signature/example
│ └── sha256:3c43b8cb0c941ec165c9f33f197d7f75980a292400d340f1a51c6b325764aa93
├── readme/example
│ └── sha256:5fafd40589e2c980e2864a78818bff51ee641119cf96ebb0d5be83f42aa215af
└── signature/example
└── sha256:00da2c1c3ceea087b16e70c3f4e80dbce6f5b7625d6c8308ad095f7d3f6107b5
De grafiek promoveren
Een typische DevOps-werkstroom promoot artefacten van dev via fasering naar de productieomgeving Veilige supply chain-werkstromen bevorderen openbare inhoud naar privé beveiligde omgevingen. In beide gevallen wilt u de handtekeningen, SBOM's, scanresultaten en ander gerelateerd artefact met het hoofdartefact promoveren om een volledige grafiek met afhankelijkheden te hebben.
Met behulp van de oras copy
opdracht kunt u een gefilterde grafiek van artefacten in registers promoveren.
Kopieer de net-monitor:v1
installatiekopie en de gerelateerde artefacten naar sample-staging/net-monitor:v1
:
TARGET_REPO=$REGISTRY/sample-staging/$REPO
oras copy -r $IMAGE $TARGET_REPO:$TAG
De uitvoer van 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
De grafiek met gepromoveerde artefacten ontdekken
oras discover -o tree $TARGET_REPO:$TAG
Uitvoer van 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
Een artefact waarnaar wordt verwezen ophalen
Als u een specifiek artefact wilt ophalen waarnaar wordt verwezen, wordt de samenvatting van de verwijzing gedetecteerd met de oras discover
opdracht:
DOC_DIGEST=$(oras discover -o json \
--artifact-type 'readme/example' \
$TARGET_REPO:$TAG | jq -r ".manifests[0].digest")
Een schone map maken om te downloaden
mkdir ./download
Haal de documenten naar de downloadmap
oras pull -o ./download $TARGET_REPO@$DOC_DIGEST
De documenten weergeven
tree ./download
De uitvoer van tree
:
./download
├── details
│ ├── readme-details.md
│ └── readme-more-details.md
└── readme.md
De opslagplaats en tagvermelding weergeven
Met het OCI-artefactmanifest kunnen artefactgrafieken worden gepusht, gedetecteerd, opgehaald en gekopieerd zonder tags toe te wijzen. Met artefactmanifesten kan een tagvermelding zich richten op de artefacten die gebruikers bedenken, in plaats van de handtekeningen en SBOM's die zijn gekoppeld aan de containerinstallatiekopieën, Helm-grafieken en andere artefacten.
Een lijst met tags weergeven
oras repo tags $REGISTRY/$REPO
Een lijst met manifesten weergeven
Een opslagplaats kan een lijst met manifesten bevatten die zowel zijn getagd als niet-gemarkeerd. Bekijk met behulp van de az acr manifest
CLI de volledige lijst met manifesten:
az acr manifest list-metadata \
--name $REPO \
--registry $ACR_NAME \
--output jsonc
Let op de manifesten voor containerinstallatiekopieën, "tags"
terwijl de verwijzingstypen ("mediaType": "application/vnd.oci.artifact.manifest.v1+json"
) dat niet doen.
In de uitvoer wordt de handtekening niet gemarkeerd, maar bijgehouden als verwijzing oci.artifact.manifest
naar de containerinstallatiekopieën:
{
"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"
}
Alle artefacten in de grafiek verwijderen
Ondersteuning voor de OCI v1.1-specificatie maakt het mogelijk om de grafiek te verwijderen van artefacten die zijn gekoppeld aan het hoofdartefact. Gebruik de oras delete
opdracht om de grafiek van artefacten (handtekening, SBOM en de handtekening van de SBOM) te verwijderen.
oras manifest delete -f $REGISTRY/$REPO:$TAG
oras manifest delete -f $REGISTRY/sample-staging/$REPO:$TAG
De resterende manifesten weergeven
Door het hoofdartefact te verwijderen, worden alle gerelateerde artefacten ook verwijderd, waardoor een schone omgeving wordt achtergelaten:
az acr manifest list-metadata \
--name $REPO \
--registry $ACR_NAME -o jsonc
Uitvoer:
2023-01-10 18:38:45.366387 Error: repository "net-monitor" is not found.
Samenvatting
In dit artikel wordt een grafiek gemaakt van toeleveringsketenartefacten, gedetecteerd, gepromoveerd en opgehaald met levenscyclusbeheer van de artefacten waarvan u bouwt en afhankelijk bent.
Volgende stappen
- Meer informatie over de ORAS CLI
- Meer informatie over het OCI-artefactmanifest voor het pushen, detecteren, ophalen, kopiëren van een grafiek van toeleveringsketenartefacten