إن دفع البيانات الاصطناعية لسلسلة التوريد وسحبها باستخدام Azure Registry (معاينة)

استخدم سجل حاويات Azure لتخزين وإدارة رسم بياني للبيانات الاصطناعية لسلسلة التوريد، بما في ذلك التواقيع وفاتورة البرامج للمواد (SBOM) ونتائج فحص الأمان وأنواع أخرى.

Graph of artifacts, including a container image, signature and signed software bill of materials

لتوضيح هذه الإمكانية، توضح هذه المقالة كيفية استخدام OCI Registry ك Storage (ORAS) CLI إلى push، discover ورسم pull بياني للبيانات الاصطناعية لسلسلة التوريد إلى سجل حاوية Azure. يتم تغطية تخزين البيانات الاصطناعية OCI الفردية (الجذر) في دفع وسحب البيانات الاصطناعية OCI.

لتخزين رسم بياني للبيانات الاصطناعية، يتم تعريف مرجع إلى subject أداة باستخدام بيان البيانات الاصطناعية OCI، الذي يعد جزءا من مواصفات توزيع OCI 1.1 قبل الإصدار. دعم بيان البيانات الاصطناعية OCI 1.1 هو ميزة معاينة ACR وتخضع للقيود.

المتطلبات الأساسية

  • سجل حاوية Azure - أنشئ سجل حاوية في اشتراك Azure الخاص بك. على سبيل المثال، استخدم مدخل Azure أو Azure CLI.
    راجع قيود المعاينة لدعم سحابة Azure.
  • Azure CLI - الإصدار أو الإصدار 2.29.1 الأحدث مطلوب. راجع تثبيت Azure CLI للتثبيت و/أو الترقية.
  • ORAS CLI - الإصدار v0.16.0 مطلوب. راجع: تثبيت ORAS.
  • Docker (اختياري) - لإكمال المعاينة، تتم الإشارة إلى صورة حاوية. يمكنك استخدام Docker المثبت محليا لإنشاء صورة حاوية ودفعها، أو استخدام acr build للبناء عن بعد في Azure.
    في حين أن Docker Desktop غير مطلوب، oras يستخدم cli مخزن بيانات اعتماد سطح المكتب Docker لتخزين بيانات الاعتماد. إذا تم تثبيت Docker Desktop، يجب أن يكون قيد التشغيل ل oras login.

قيود المعاينة

يتوفر دعم بيان البيانات الاصطناعية ل OCI (مواصفات OCI 1.1) في جميع مناطق Azure العامة. Microsoft Azure التي تديرها 21Vianet والسحب الحكومية غير مدعومة حتى الآن.

تكوين السجل

تكوين متغيرات البيئة لنسخ/لصق الأوامر بسهولة في قوقعتك. يمكن تشغيل الأوامر محليا أو في Azure Cloud Shell.

ACR_NAME=myregistry
REGISTRY=$ACR_NAME.azurecr.io
REPO=net-monitor
TAG=v1
IMAGE=$REGISTRY/${REPO}:$TAG

المصادقة باستخدام هوية Microsoft Entra الفردية باستخدام رمز AD المميز. استخدم دائما "000..." ل USER_NAME حيث يتم تحليل الرمز المميز من خلال PASSWORD المتغير .

# 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)

إشعار

يدعم ACR وORAS خيارات مصادقة متعددة للمستخدمين وأتمتة النظام. تستخدم هذه المقالة الهوية الفردية، باستخدام رمز Azure المميز. لمزيد من خيارات المصادقة، راجع المصادقة باستخدام سجل حاوية Azure

تسجيل الدخول مع ORAS

قم بتوفير بيانات الاعتماد إلى oras login.

oras login $REGISTRY \
  --username $USER_NAME \
  --password $PASSWORD

دفع صورة حاوية

يربط هذا المثال رسماً بالبيانات الاصطناعية بصورة حاوية.

إنشاء صورة حاوية ودفعها، أو تخطي هذه الخطوة إذا كانت $IMAGE تشير إلى صورة موجودة في السجل.

az acr build -r $ACR_NAME -t $IMAGE https://github.com/wabbit-networks/net-monitor.git#main

إنشاء نموذج توقيع لصورة الحاوية

echo '{"artifact": "'${IMAGE}'", "signature": "jayden hancock"}' > signature.json

إرفاق التوقيع إلى السجل، كمرجع لصورة الحاوية

oras attach ينشئ الأمر مرجعا بين الملف (./signature.json) إلى $IMAGE. يوفر --artifact-type إمكانية تمييز العناصر الملموسة، على غرار ملحقات الملفات التي تتيح أنواعاً مختلفة من الملفات. يمكن إرفاق ملف أو أكثر بتحديد [file]:[mediaType].

oras attach $IMAGE \
    --artifact-type signature/example \
    ./signature.json:application/json

لمزيد من المعلومات حول إرفاق oras، راجع وثائق ORAS.

إرفاق البيانات الاصطناعية متعددة الملفات كمرجع

عند دفع عناصر OCI إلى سجل باستخدام ORAS، يتم دفع كل مرجع ملف ككائن ثنائي كبير الحجم. لدفع الكائنات الثنائية كبيرة الحجم المنفصلة، قم بالإشارة إلى الملفات بشكل فردي، أو مجموعة من الملفات عن طريق الرجوع إلى دليل.
لمزيد من المعلومات حول كيفية دفع مجموعة من الملفات، راجع دفع البيانات الاصطناعية مع ملفات متعددة.

إنشاء بعض الوثائق حول البيانات الاصطناعية:

echo 'Readme Content' > readme.md
mkdir details/
echo 'Detailed Content' > details/readme-details.md
echo 'More detailed Content' > details/readme-more-details.md

إرفاق البيانات الاصطناعية متعددة الملفات كمرجع إلى $IMAGE:

Linux أو WSL2 أو 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

اكتشاف المراجع الاصطناعية

تحدد مواصفات OCI v1.1 واجهة برمجة تطبيقات المراجع لاكتشاف المراجع إلى البيانات الاصطناعيةsubject. يمكن للأمر oras discover إظهار قائمة المراجع لصورة الحاوية.

باستخدام oras discover، اعرض الرسم البيانات الاصطناعية المخزنة الآن في التسجيل.

oras discover -o tree $IMAGE

يُظهر الإخراج بداية رسم البيانات الاصطناعية، حيث يُنظر إلى التوقيع والمستندات على أنها عناصر فرعية لصورة الحاوية.

myregistry.azurecr.io/net-monitor:v1
├── signature/example
│   └── sha256:555ea91f39e7fb30c06f3b7aa483663f067f2950dcb...
└── readme/example
    └── sha256:1a118663d1085e229ff1b2d4d89b5f6d67911f22e55...

إنشاء رسوم بيانية عميقة من البيانات الاصطناعية

تتيح مواصفات OCI v1.1 الرسوم البيانية العميقة، مما يتيح فاتورة البرامج الموقعة للمواد (SBOM) وأنواع البيانات الاصطناعية الأخرى.

إنشاء نموذج SBOM

echo '{"version": "0.0.0.0", "artifact": "'${IMAGE}'", "contents": "good"}' > sbom.json

إرفاق نموذج SBOM بالصورة في السجل

Linux أو WSL2 أو 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

البيانات الاصطناعية التي يتم دفعها كمراجع، عادة لا تحتوي على علامات لأنها تعتبر جزءا من البيانات الاصطناعية subject . لدفع توقيع إلى عنصر اصطناعي تابع لقطعة اصطناعية أخرى، استخدم تصفية oras discover مع --artifact-type للعثور على الملخص.

SBOM_DIGEST=$(oras discover -o json \
                --artifact-type sbom/example \
                $IMAGE | jq -r ".manifests[0].digest")

إنشاء توقيع SBOM

echo '{"artifact": "'$IMAGE@$SBOM_DIGEST'", "signature": "jayden hancock"}' > sbom-signature.json

إرفاق توقيع SBOM

oras attach $IMAGE@$SBOM_DIGEST \
  --artifact-type 'signature/example' \
  ./sbom-signature.json:application/json

عرض الرسم البياني

oras discover -o tree $IMAGE

يولد الإخراج التالي:

myregistry.azurecr.io/net-monitor:v1
├── sbom/example
│   └── sha256:4f1843833c029ecf0524bc214a0df9a5787409fd27bed2160d83f8cc39fedef5
│       └── signature/example
│           └── sha256:3c43b8cb0c941ec165c9f33f197d7f75980a292400d340f1a51c6b325764aa93
├── readme/example
│   └── sha256:5fafd40589e2c980e2864a78818bff51ee641119cf96ebb0d5be83f42aa215af
└── signature/example
    └── sha256:00da2c1c3ceea087b16e70c3f4e80dbce6f5b7625d6c8308ad095f7d3f6107b5

ترقية الرسم البياني

سيعزز سير عمل DevOps النموذجي البيانات الاصطناعية من التطوير من خلال التقسيم المرحلي، إلى بيئة الإنتاج، تعمل مهام سير عمل سلسلة التوريد الآمنة على ترقية المحتوى العام إلى بيئات آمنة بشكل خاص. في كلتا الحالتين، ستحتاج إلى ترقية التواقيع وSBOMs ونتائج الفحص وغيرها من البيانات الاصطناعية ذات الصلة باستخدام البيانات الاصطناعية الجذرية للحصول على رسم بياني كامل للتبعيات.

باستخدام الأمر ، يمكنك ترقية oras copy رسم بياني مصفاة للبيانات الاصطناعية عبر السجلات.

انسخ net-monitor:v1 الصورة، وهي البيانات الاصطناعية ذات الصلة إلى sample-staging/net-monitor:v1:

TARGET_REPO=$REGISTRY/sample-staging/$REPO
oras copy -r $IMAGE $TARGET_REPO:$TAG

إخراج 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

اكتشاف الرسم البياني المصطنع الذي تمت ترقيته

oras discover -o tree $TARGET_REPO:$TAG

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

سحب القطعة الاصطناعية المشار إليها

لسحب أداة محددة مرجعية، يتم اكتشاف ملخص المرجع باستخدام oras discover الأمر :

DOC_DIGEST=$(oras discover -o json \
              --artifact-type 'readme/example' \
              $TARGET_REPO:$TAG | jq -r ".manifests[0].digest")

إنشاء دليل نظيف للتنزيل

mkdir ./download

سحب المستندات إلى دليل التنزيل

oras pull -o ./download $TARGET_REPO@$DOC_DIGEST

عرض المستندات

tree ./download

إخراج tree:

./download
├── details
│   ├── readme-details.md
│   └── readme-more-details.md
└── readme.md

عرض المستودع وقائمة العلامات

يتيح بيان البيانات الاصطناعية OCI دفع الرسوم البيانية للبيانات الاصطناعية، اكتشافها، سحبها ونسخها دون الحاجة إلى تعيين علامات. تمكن بيانات البيانات الاصطناعية قائمة العلامات من التركيز على البيانات الاصطناعية التي يفكر فيها المستخدمون، بدلا من التواقيع وSBOMs المقترنة بصور الحاوية ومخططات helm والبيانات الاصطناعية الأخرى.

عرض قائمة العلامات

oras repo tags $REGISTRY/$REPO

عرض قائمة البيانات

يمكن أن يحتوي المستودع على قائمة من البيانات التي تم وضع علامة عليها وغير المميزة. az acr manifest باستخدام CLI، اعرض القائمة الكاملة للبيانات:

az acr manifest list-metadata \
  --name $REPO \
  --registry $ACR_NAME \
  --output jsonc

لاحظ أن بيانات صورة الحاوية تحتوي على ، بينما لا تحتوي "tags"الأنواع المرجعية ("mediaType": "application/vnd.oci.artifact.manifest.v1+json") على .

في الإخراج، يتم إلغاء علامة التوقيع، ولكن يتم تعقبه كمرجع oci.artifact.manifest إلى صورة الحاوية:

{
  "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"
}

حذف كل البيانات الاصطناعية في الرسم البياني

يتيح دعم مواصفات OCI v1.1 حذف الرسم البياني للبيانات الاصطناعية المرتبطة بالبيانات الاصطناعية الجذرية. oras delete استخدم الأمر لحذف الرسم البياني للبيانات الاصطناعية (التوقيع وSBOM وتوقيع SBOM).

oras manifest delete -f $REGISTRY/$REPO:$TAG

oras manifest delete -f $REGISTRY/sample-staging/$REPO:$TAG

عرض البيانات المتبقية

من خلال حذف البيانات الاصطناعية الجذر، يتم أيضا حذف جميع البيانات الاصطناعية ذات الصلة تاركة بيئة نظيفة:

az acr manifest list-metadata \
  --name $REPO \
  --registry $ACR_NAME -o jsonc

إخراج:

2023-01-10 18:38:45.366387 Error: repository "net-monitor" is not found.

الملخص

في هذه المقالة، يتم إنشاء رسم بياني للبيانات الاصطناعية لسلسلة التوريد، اكتشافها، تعزيزها وسحبها لتوفير إدارة دورة حياة البيانات الاصطناعية التي تبنيها وتعتمد عليها.

الخطوات التالية

  • تعرف على المزيد حول ORAS CLI
  • تعرف على المزيد حول بيان البيانات الاصطناعية ل OCI لكيفية دفع واكتشاف وسحب ونسخ رسم بياني للبيانات الاصطناعية لسلسلة التوريد