إدارة OCI Artifacts و Supply Chain Artifacts باستخدام ORAS
يساعدك سجل حاويات Azure (ACR) على إدارة كل من البيانات الاصطناعية لمبادرة الحاوية المفتوحة (OCI) وبيانات سلسلة التوريد الاصطناعية. ترشدك هذه المقالة إلى كيفية استخدام ACR لإدارة بيانات OCI الاصطناعية وسلسلة التوريد بشكل فعال. تعلم كيفية تخزين وإدارة واسترداد كل من عناصر OCI ورسم بياني للبيانات الاصطناعية لسلسلة التوريد، بما في ذلك التواقيع وفاتورة البرامج للمواد (SBOM) ونتائج فحص الأمان وأنواع أخرى.
تنقسم هذه المقالة إلى قسمين رئيسيين:
- دفع وسحب البيانات الاصطناعية OCI باستخدام ORAS
- إرفاق عناصر سلسلة التوريد ودفعها وسحبها باستخدام ORAS
المتطلبات الأساسية
- سجل حاوية Azure - أنشئ سجل حاوية في اشتراك Azure الخاص بك. على سبيل المثال، استخدم مدخل Azure أو Azure CLI.
- Azure CLI - الإصدار أو الإصدار
2.29.1
الأحدث مطلوب. راجع تثبيت Azure CLI للتثبيت و/أو الترقية. - ORAS CLI - الإصدار
v1.1.0
أو الإصدار الأحدث مطلوب. راجع: تثبيت ORAS. - Docker (اختياري) - لإكمال المعاينة، تتم الإشارة إلى صورة حاوية.
يمكنك استخدام Docker المثبت محليا لإنشاء صورة حاوية ودفعها، أو استخدام
acr build
للبناء عن بعد في Azure.
في حين أن Docker Desktop غير مطلوب،oras
يستخدم cli مخزن بيانات اعتماد سطح المكتب Docker لتخزين بيانات الاعتماد. إذا تم تثبيت Docker Desktop، يجب أن يكون قيد التشغيل لoras login
.
قم بتكوين التسجيل
لتكوين بيئتك لتنفيذ الأمر بسهولة، اتبع الخطوات التالية:
ACR_NAME
تعيين المتغير إلى اسم السجل الخاص بك.REGISTRY
تعيين المتغير إلى$ACR_NAME.azurecr.io
.REPO
تعيين المتغير إلى اسم المستودع الخاص بك.- تعيين المتغير إلى العلامة
TAG
المطلوبة. IMAGE
تعيين المتغير إلى$REGISTRY/${REPO}:$TAG
.
تعيين متغيرات البيئة
تكوين اسم التسجيل وبيانات اعتماد تسجيل الدخول واسم المستودع والعلامة لدفع البيانات الاصطناعية وسحبها. يستخدم net-monitor
المثال التالي اسم المستودع وعلامة v1
. استبدل باسم المستودع الخاص بك وعلامة .
ACR_NAME=myregistry
REGISTRY=$ACR_NAME.azurecr.io
REPO=net-monitor
TAG=v1
IMAGE=$REGISTRY/${REPO}:$TAG
تسجيل الدخول إلى التسجيل
المصادقة باستخدام ACR، للسماح لك بسحب ودفع صور الحاوية.
az login
az acr login -n $REGISTRY
إذا لم يكن Docker متوفرا، يمكنك استخدام رمز AD المميز المقدم للمصادقة. المصادقة باستخدامهوية Microsoft Entra الفردية باستخدام رمز AD المميز. استخدم دائما "000..." ل USER_NAME
حيث يتم تحليل الرمز المميز من خلال PASSWORD
المتغير .
# Login to Azure
az login
تسجيل الدخول مع ORAS
قم بتوفير بيانات الاعتماد إلى oras login
.
oras login $REGISTRY \
--username $USER_NAME \
--password $PASSWORD
يمكنك هذا الإعداد من دفع البيانات الاصطناعية وسحبها بسلاسة من وإلى Azure Container Registry. اضبط المتغيرات حسب الحاجة للتكوين المحدد.
دفع وسحب OCI Artifacts باستخدام ORAS
يمكنك استخدام سجل حاوية Azure لتخزين وإدارة البيانات الاصطناعية لمبادرة الحاوية المفتوحة (OCI) بالإضافة إلى صور حاوية Docker وOCI.
لتوضيح هذه الإمكانية، يوضح هذا القسم كيفية استخدام OCI Registry as Storage (ORAS) CLI لدفع وسحب عناصر OCI من/إلى سجل حاوية Azure. يمكنك إدارة عناصر OCI المختلفة في سجل حاوية Azure باستخدام أدوات سطر أوامر مختلفة مناسبة لكل أداة.
إشعار
يدعم ACR وORAS خيارات مصادقة متعددة للمستخدمين وأتمتة النظام. تستخدم هذه المقالة الهوية الفردية، باستخدام رمز Azure المميز. لمزيد من خيارات المصادقة، راجع المصادقة باستخدام سجل حاوية Azure.
ادفع أداة
يمكن أن يكون عنصر ملف واحد ليس subject
له أصل أي شيء من صورة حاوية، ومخطط helm، وملف readme للمستودع. يمكن أن تكون البيانات الاصطناعية المرجعية أي شيء من التوقيع أو فاتورة المواد البرمجية أو تقارير المسح الضوئي أو الأنواع المتطورة الأخرى. البيانات الاصطناعية المرجعية، الموضحة في إرفاق ودفع وسحب البيانات الاصطناعية لسلسلة التوريد هي بيانات اصطناعية تشير إلى أداة أخرى.
دفع البيانات الاصطناعية أحادية الملف
في هذا المثال، قم بإنشاء محتوى يمثل ملف markdown:
echo 'Readme Content' > readme.md
تدفع readme.md
الخطوة التالية الملف إلى <myregistry>.azurecr.io/samples/artifact:readme
.
- يتم تعريف السجل باسم
<myregistry>.azurecr.io
التسجيل المؤهل بالكامل (جميع الأحرف الصغيرة)، متبوعا بمساحة الاسم والم repo:/samples/artifact
. - يتم وضع
:readme
علامة على الأداة ، لتعريفها بشكل فريد من البيانات الاصطناعية الأخرى المدرجة في المستودع (:latest, :v1, :v1.0.1
). - يميز الإعداد
--artifact-type readme/example
البيانات الاصطناعية عن صورة الحاوية، والتي تستخدمapplication/vnd.oci.image.config.v1+json
. ./readme.md
يعرف الملف الذي تم تحميله،:application/markdown
ويمثل IANAmediaType
للملف.
لمزيد من المعلومات، راجع OCI Artifact Authors Guidance.
oras push
استخدم الأمر لدفع الملف إلى السجل الخاص بك.
Linux أو WSL2 أو macOS
oras push $REGISTRY/samples/artifact:readme \
--artifact-type readme/example \
./readme.md:application/markdown
Windows
.\oras.exe push $REGISTRY/samples/artifact:readme ^
--artifact-type readme/example ^
.\readme.md:application/markdown
الإخراج لدفع ناجح مشابه للإخراج التالي:
Uploading 2fdeac43552b readme.md
Uploaded 2fdeac43552b readme.md
Pushed <myregistry>.azurecr.io/samples/artifact:readme
Digest: sha256:e2d60d1b171f08bd10e2ed171d56092e39c7bac1
aec5d9dcf7748dd702682d53
دفع بيانات اصطناعية متعددة الملفات
عند دفع عناصر 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
دفع البيانات الاصطناعية متعددة الملفات:
Linux أو WSL2 أو macOS
oras push $REGISTRY/samples/artifact:readme \
--artifact-type readme/example\
./readme.md:application/markdown\
./details
Windows
.\oras.exe push $REGISTRY/samples/artifact:readme ^
--artifact-type readme/example ^
.\readme.md:application/markdown ^
.\details
اكتشاف البيان
لعرض البيان الذي تم إنشاؤه كنتيجة ل oras push
، استخدم oras manifest fetch
:
oras manifest fetch --pretty $REGISTRY/samples/artifact:readme
يتشابه الإخراج مع:
{
"mediaType": "application/vnd.oci.artifact.manifest.v1+json",
"artifactType": "readme/example",
"blobs": [
{
"mediaType": "application/markdown",
"digest": "sha256:2fdeac43552b71eb9db534137714c7bad86b53a93c56ca96d4850c9b41b777fc",
"size": 15,
"annotations": {
"org.opencontainers.image.title": "readme.md"
}
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:0d6c7434a34f6854f971487621426332e6c0fda08040b9e6cc8a93f354cee0b1",
"size": 189,
"annotations": {
"io.deis.oras.content.digest": "sha256:11eceb2e7ac3183ec9109003a7389468ec73ad5ceaec0c4edad0c1b664c5593a",
"io.deis.oras.content.unpack": "true",
"org.opencontainers.image.title": "details"
}
}
],
"annotations": {
"org.opencontainers.artifact.created": "2023-01-10T14:44:06Z"
}
}
سحب الأدوات
إنشاء دليل نظيف للتنزيل.
mkdir ./download
قم بتشغيل الأمر oras pull
لسحب الأداة من السجل الخاص بك.
oras pull -o ./download $REGISTRY/samples/artifact:readme
عرض الملفات التي تم سحبها
tree ./download
إزالة الأداة (اختياري)
لإزالة البيانات الاصطناعية من السجل الخاص بك، استخدم oras manifest delete
الأمر .
oras manifest delete $REGISTRY/samples/artifact:readme
إرفاق عناصر سلسلة التوريد ودفعها وسحبها باستخدام ORAS
لتوضيح هذه الإمكانية، توضح هذه المقالة كيفية استخدام OCI Registry ك Storage (ORAS) CLI إلى push
و discover
و pull
رسم بياني للبيانات الاصطناعية لسلسلة التوريد إلى سجل حاوية Azure.
يتم تغطية تخزين البيانات الاصطناعية OCI الفردية (الموضوع) في دفع وسحب البيانات الاصطناعية OCI.
لتخزين رسم بياني للبيانات الاصطناعية، يتم تعريف مرجع إلى subject
أداة باستخدام بيان صورة OCI، وهو جزء من مواصفات توزيع OCI 1.1 التجريبية.
دفع صورة حاوية
لربط رسم بياني للبيانات الاصطناعية بصورة حاوية باستخدام Azure CLI:
يمكنك إنشاء صورة حاوية ودفعها، أو تخطي هذه الخطوة إذا كانت $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، يتم دفع كل مرجع ملف ككائن ثنائي كبير الحجم. لدفع الكائنات الثنائية كبيرة الحجم المنفصلة، قم بالإشارة إلى الملفات بشكل فردي، أو مجموعة من الملفات عن طريق الرجوع إلى دليل.
لمزيد من المعلومات حول كيفية دفع مجموعة من الملفات، راجع دفع البيانات الاصطناعية مع ملفات متعددة.
اكتشاف المراجع الاصطناعية
تحدد مواصفات 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 وإرفاقه بالسجل:
إنشاء نموذج 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
هام
توصي Microsoft باستخدام أداة توقيع تشفير آمنة، مثل Notation لتوقيع الصورة وإنشاء توقيع لتوقيع SBOMs.
البيانات الاصطناعية التي يتم دفعها كمراجع، عادة لا تحتوي على علامات لأنها تعتبر جزءا من البيانات الاصطناعية subject
. لدفع توقيع إلى عنصر اصطناعي تابع لقطعة اصطناعية أخرى، استخدم تصفية oras discover
مع --artifact-type
للعثور على الملخص. يستخدم هذا المثال توقيع JSON بسيطا لأغراض العرض التوضيحي.
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
عرض المستودع وقائمة العلامات
تمكن ORAS من دفع الرسوم البيانية للبيانات الاصطناعية، اكتشافها، سحبها، ونسخها دون الحاجة إلى تعيين علامات. كما أنه يمكن قائمة العلامات من التركيز على البيانات الاصطناعية التي يفكر فيها المستخدمون، بدلا من التواقيع وSBOMs المرتبطة بصور الحاوية ومخططات helm والبيانات الاصطناعية الأخرى.
عرض قائمة العلامات
oras repo tags $REGISTRY/$REPO
حذف كافة البيانات الاصطناعية في الرسم البياني
يتيح دعم مواصفات OCI v1.1 حذف الرسم البياني للبيانات الاصطناعية المرتبطة بالبيانات الاصطناعية للموضوع. oras manifest 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.
الملخص
في هذه المقالة، تعلمت كيفية استخدام Azure Container Registry لتخزين وإدارة واسترداد كل من عناصر OCI وسلسلة التوريد. لقد استخدمت ORAS CLI لدفع البيانات الاصطناعية وسحبها من/إلى Azure Container Registry. اكتشفت أيضا بيان البيانات الاصطناعية التي تم دفعها وعرض الرسم البياني للبيانات الاصطناعية المرفقة بصورة الحاوية.
الخطوات التالية
- تعرف على مراجع البيانات الاصطناعية، والتوقيعات المرتبطة، وفاتورة البرامج للمواد وأنواع المراجع الأخرى.
- تعرف على المزيد حول مشروع ORAS، بما في ذلك كيفية تكوين بيان للبيانات الاصطناعية.
- تفضل بزيارة مستودع OCI Artifacts للحصول على معلومات مرجعية حول أنواع البيانات الاصطناعية الجديدة.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ