
cosign v3.1.3
توقيع الكود والشفافية للحاويات والملفات الثنائية
cosign
توقيع حاويات OCI (والتحف الأخرى) باستخدام Sigstore!
تهدف Cosign إلى جعل التوقيعات بنية تحتية غير مرئية.
يدعم Cosign ما يلي:
- التوقيع بدون مفاتيح ("Keyless signing") مع هيئة شهادات Fulcio للصالح العام من Sigstore وسجل الشفافية Rekor (الافتراضي)
- التوقيع عبر الأجهزة و KMS
- التوقيع باستخدام زوج مفاتيح خاص/عام مشفّر مُولَّد بواسطة cosign
- توقيع الحاويات والتحقق منها وتخزينها في سجل OCI.
- إحضار PKI الخاص بك
معلومات
تم تطوير Cosign كجزء من مشروع sigstore.
نستخدم أيضًا قناة slack!
انقر هنا للحصول على رابط الدعوة.
التثبيت
لتثبيتات Homebrew و Arch و Nix و GitHub Action و Kubernetes، راجع وثائق التثبيت.
للحصول على ثنائيات Linux و macOS، راجع أصول إصدارات GitHub.
🚨 إذا كنت تقوم بتنزيل إصدارات cosign من bucket GCS الخاصة بنا - فيرجى الاطلاع على مزيد من المعلومات حول إشعار الإهمال الصادر في 31 يوليو 2023 🚨
تثبيت المطورين
إذا كان لديك Go 1.22+، يمكنك إعداد بيئة تطوير:```shell $ git clone https://github.com/sigstore/cosign $ cd cosign $ go install ./cmd/cosign $ $(go env GOPATH)/bin/cosign
## المساهمة
إذا كنت مهتمًا بالمساهمة في `cosign`، فيرجى قراءة [وثائق المساهمة](https://github.com/sigstore/cosign/blob/main/CONTRIBUTING.md).
سيركز التطوير المستقبلي لـ Cosign على الإصدار الرئيسي القادم الذي سيعتمد على
[sigstore-go](https://github.com/sigstore/sigstore-go). سيركز المشرفون على تطوير الميزات داخل
sigstore-go. المساهمات في sigstore-go، خاصة فيما يتعلق بالمفاتيح التي توفرها بنفسك (bring-your-own keys) والتوقيع، محل تقدير.
يرجى الاطلاع على [متتبع المشكلات](https://github.com/sigstore/sigstore-go/issues) للحصول على قضايا أولى جيدة.
Cosign 2.x هو إصدار مستقر وسيستمر في تلقي تحديثات ميزات دورية وإصلاحات للأخطاء. طلبات السحب (PRs)
صغيرة النطاق والحجم هي الأكثر احتمالًا للحصول على مراجعة سريعة.
لن يتم قبول طلبات السحب التي تعدل أو تكسر API بشكل كبير. قد يتم قبول طلبات السحب ذات الحجم الكبير التي لا تُحدث تغييرات جذرية، لكنها ستُعتبر ذات أولوية أقل من طلبات السحب في sigstore-go.
## Dockerfile
فيما يلي كيفية تثبيت واستخدام cosign داخل Dockerfile من خلال صورة ghcr.io/sigstore/cosign/cosign:```shell
FROM ghcr.io/sigstore/cosign/cosign:v2.4.1 as cosign-bin
# Source: https://github.com/chainguard-images/static
FROM cgr.dev/chainguard/static:latest
COPY --from=cosign-bin /ko-app/cosign /usr/local/bin/cosign
ENTRYPOINT [ "cosign" ]
البدء السريع
يوضح هذا كيفية:
- توقيع صورة حاوية باستخدام طريقة "التوقيع بدون مفتاح" الافتراضية القائمة على الهوية (انظر التوثيق لمزيد من المعلومات)
- التحقق من صورة الحاوية
- استكشاف تدفقات أوسع لتوقيع/التحقق من blob بدون مفتاح في Sigstore Cosign Quickstart
توقيع حاوية وتخزين التوقيع في السجل
لاحظ أنه يجب عليك دائمًا توقيع الصور بناءً على بصمتها (@sha256:...)
بدلاً من وسم (:latest) لأنك بخلاف ذلك قد توقّع شيئًا
لم تقصده!```shell
cosign sign $IMAGE
Generating ephemeral keys... Retrieving signed certificate...
Note that there may be personally identifiable information associated with this signed artifact.
This may include the email address associated with the account with which you authenticate.
This information will be used for signing this artifact and will be stored in public transparency logs and cannot be removed later.
By typing 'y', you attest that you grant (or have permission to grant) and agree to have this information stored permanently in transparency logs. Are you sure you would like to continue? [y/N] y Your browser will now be opened to: https://oauth2.sigstore.dev/auth/auth?access_type=online&client_id=sigstore&code_challenge=OrXitVKUZm2lEWHVt1oQWR4HZvn0rSlKhLcltglYxCY&code_challenge_method=S256&nonce=2KvOWeTFxYfxyzHtssvlIXmY6Jk&redirect_uri=http%3A%2F%2Flocalhost%3A57102%2Fauth%2Fcallback&response_type=code&scope=openid+email&state=2KvOWfbQJ1caqScgjwibzK2qJmb Successfully verified SCT... tlog entry created with index: 12086900 Pushing signature to: $IMAGE
سيطالبك Cosign بالمصادقة عبر OIDC، حيث ستسجّل الدخول باستخدام بريدك الإلكتروني.
في الخلفية، سيطلب cosign شهادة توقيع تعليمات برمجية من سلطة الشهادات Fulcio.
سيتطابق موضوع الشهادة مع البريد الإلكتروني الذي سجّلت الدخول به.
بعد ذلك، سيخزّن cosign التوقيع والشهادة في سجل Rekor للشفافية، ويرفع التوقيع إلى سجل OCI بجانب الصورة التي توقّعها.
### التحقق من حاوية
للتحقق من الصورة، ستحتاج إلى تمرير هوية الشهادة المتوقعة ومُصدِر الشهادة عبر العلامتين `--certificate-identity` و `--certificate-oidc-issuer`:```
cosign verify $IMAGE --certificate-identity=$IDENTITY --certificate-oidc-issuer=$OIDC_ISSUER
يمكنك أيضاً تمرير تعبير نمطي لهوية الشهادة وعلامات المُصدِر، --certificate-identity-regexp و --certificate-oidc-issuer-regexp.
التحقق من حاوية مقابل مفتاح عام
يُرجع هذا الأمر 0 إذا تم العثور على توقيع واحد على الأقل بتنسيق cosign للصورة
يطابق المفتاح العام.
انظر إلى الاستخدام المفصّل أدناه للحصول على معلومات وملاحظات حول تنسيقات التوقيع الأخرى.
تتم طباعة أي حمولات صالحة على stdout، بتنسيق json. لاحظ أن هذه الحمولات الموقّعة تتضمن ملخّص صورة الحاوية، وهو ما يسمح لنا بأن نكون متأكدين من أن هذه التوقيعات "المنفصلة" تغطي الصورة الصحيحة.```shell $ cosign verify --key cosign.pub $IMAGE_URI:1h The following checks were performed on these signatures:
- The cosign claims were validated
- The signatures were verified against the specified public key {"Critical":{"Identity":{"docker-reference":""},"Image":{"Docker-manifest-digest":"sha256:87ef60f558bad79beea6425a3b28989f01dd417164150ab3baab98dcbf04def8"},"Type":"cosign container image signature"},"Optional":null}
### التحقق من حاوية في بيئة معزولة عن الشبكة
**ملاحظة:** هذا القسم غير محدّث.
**ملاحظة:** تتطلب معظم سير عمل التحقق طلب مفاتيح خدمة بشكل دوري من مستودع TUF.
للتحقق المعزول عن الشبكة من التوقيعات باستخدام المثيل العام، ستحتاج إلى استرجاع ملف
[trusted root](https://github.com/sigstore/root-signing/blob/main/targets/trusted_root.json) من مستودع
TUF للإنتاج. ستتغير محتويات هذا الملف دون إشعار. بعدم استخدام TUF، ستحتاج
إلى بناء آليتك الخاصة للحفاظ على تحديث نسختك المعزولة عن الشبكة من هذا الملف.
يمكن لـ Cosign إجراء تحقق غير متصل بالإنترنت تمامًا عن طريق التحقق من [bundle](https://github.com/sigstore/cosign/blob/main/specs/SIGNATURE_SPEC.md#properties) والذي يتم توزيعه عادةً كتعليق توضيحي على manifest الصورة.
طالما أن هذا التعليق التوضيحي موجود، يمكن إجراء التحقق غير المتصل.
يتم دائمًا تضمين تعليق الحزمة هذا افتراضيًا للتوقيع بدون مفتاح، لذا فإن وظيفة `cosign sign` الافتراضية ستتضمن جميع المواد اللازمة للتحقق غير المتصل.
للتحقق من صورة في بيئة معزولة عن الشبكة، يجب أن تكون الصورة والتوقيعات متاحة محليًا على نظام الملفات.