
कंटेनर और बाइनरी के लिए कोड हस्ताक्षर और पारदर्शिता
Sigstore का उपयोग करके OCI कंटेनरों (और अन्य आर्टिफैक्ट्स) पर हस्ताक्षर करना!
Cosign का लक्ष्य हस्ताक्षरों को अदृश्य अधोसंरचना बनाना है।
Cosign समर्थन करता है:
Cosign को sigstore प्रोजेक्ट के हिस्से के रूप में विकसित किया गया है।
हम एक slack चैनल का भी उपयोग करते हैं!
आमंत्रण लिंक के लिए यहाँ क्लिक करें।
Homebrew, Arch, Nix, GitHub Action, और Kubernetes इंस्टॉल के लिए इंस्टॉलेशन दस्तावेज़ देखें।
Linux, macOS और Windows बाइनरी के लिए, GitHub रिलीज़ एसेट्स देखें।
🚨 यदि आप हमारे GCS बकेट से cosign के रिलीज़ डाउनलोड कर रहे हैं - तो कृपया 31 जुलाई, 2023 की डेप्रिकेशन सूचना पर अधिक जानकारी देखें 🚨
यदि आपके पास Go 1.22+ है, तो आप एक डेवलपमेंट वातावरण सेटअप कर सकते हैं:
$ git clone https://github.com/sigstore/cosign
$ cd cosign
$ go install ./cmd/cosign
$ $(go env GOPATH)/bin/cosign
यदि आप cosign में योगदान देने में रुचि रखते हैं, तो कृपया योगदान दस्तावेज़ पढ़ें।
भविष्य में Cosign का विकास अगले प्रमुख रिलीज़ पर केंद्रित होगा जो sigstore-go पर आधारित होगा। मेंटेनर sigstore-go के भीतर फीचर डेवलपमेंट पर ध्यान केंद्रित करेंगे। sigstore-go में योगदान, विशेष रूप से bring-your-own keys और साइनिंग के आसपास, की सराहना की जाती है। कृपया अच्छे पहले मुद्दों के लिए issue tracker देखें।
Cosign 2.x एक स्थिर रिलीज़ है और इसे समय-समय पर फीचर अपडेट और बग फिक्स मिलते रहेंगे। छोटे दायरे और आकार के PRs सबसे अधिक संभावना है कि जल्दी समीक्षा किए जाएंगे।
जो PRs API को महत्वपूर्ण रूप से संशोधित या तोड़ते हैं, उन्हें स्वीकार नहीं किया जाएगा। जो PRs आकार में महत्वपूर्ण हैं लेकिन ब्रेकिंग बदलाव नहीं लाते, उन्हें स्वीकार किया जा सकता है, लेकिन sigstore-go में PRs की तुलना में कम प्राथमिकता माना जाएगा।
यहाँ बताया गया है कि ghcr.io/sigstore/cosign/cosign इमेज के माध्यम से Dockerfile के अंदर cosign को कैसे इंस्टॉल और उपयोग करें:
FROM ghcr.io/sigstore/cosign/cosign:v2.4.1 as cosign-bin
# Source: https://github.com/chainguard-images/images/tree/main/images/static
FROM cgr.dev/chainguard/static:latest
COPY --from=cosign-bin /ko-app/cosign /usr/local/bin/cosign
ENTRYPOINT [ "cosign" ]
यह दिखाता है कि कैसे:
ध्यान दें कि आपको हमेशा टैग (:latest) के बजाय इमेज के डाइजेस्ट (@sha256:...) के आधार पर हस्ताक्षर करना चाहिए, क्योंकि अन्यथा आप किसी ऐसी चीज़ पर हस्ताक्षर कर सकते हैं जिसका आपने इरादा नहीं किया था!
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
आप प्रमाणपत्र पहचान और जारीकर्ता फ़्लैग के लिए regex भी पास कर सकते हैं, --certificate-identity-regexp और --certificate-oidc-issuer-regexp।
यह कमांड 0 लौटाता है यदि छवि के लिए कम से कम एक cosign प्रारूपित हस्ताक्षर सार्वजनिक कुंजी से मेल खाता हुआ पाया जाता है।
अन्य हस्ताक्षर प्रारूपों पर जानकारी और चेतावनियों के लिए नीचे दिए गए विस्तृत उपयोग को देखें।
कोई भी मान्य पेलोड stdout पर, json प्रारूप में प्रिंट किए जाते हैं। ध्यान दें कि इन हस्ताक्षरित पेलोड में कंटेनर छवि का डाइजेस्ट शामिल होता है, जिससे हमें यह सुनिश्चित होता है कि ये "डिटैच्ड" हस्ताक्षर सही छवि को कवर करते हैं।
$ 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 रिपॉज़िटरी से सर्विस कुंजियाँ अनुरोध करने की आवश्यकता होती है। पब्लिक-गुड इंस्टेंस का उपयोग करके हस्ताक्षरों के एयरगैप्ड सत्यापन के लिए, आपको प्रोडक्शन TUF रिपॉज़िटरी से trusted root फ़ाइल प्राप्त करनी होगी। इस फ़ाइल की सामग्री बिना किसी सूचना के बदल जाएगी। TUF का उपयोग न करके, आपको इस फ़ाइल की अपनी एयरगैप्ड प्रति को अद्यतित रखने के लिए अपना स्वयं का तंत्र बनाना होगा।