Image Verification
Tetrate signs TID images using cosign, which is a sigstore project aiming to improve supply chain security. Image signing is the process of adding a signature to a docker image to check its authenticity and integrity. This signature can be verified by using cosign to verify that the image is not tampered with or modified in any way after releasing the build.
The images published to the destination repository are signed using the trustee’s identity: trustee@tetrate-istio-subscription.iam.gserviceaccount.com
.
Tetrate have established https://tis.tetrate.io/trustee as a helper to get the correct parameters for the cosign-verify command.
Verification
Install cosign
Install cosign from sigstore
Run cosign
Verify Certificate signature using cosign CLI. You will need credentials from Tetrate to access Tetrate's private repository.
export REGISTRY="<TIS registry>"
export TIS_PASS="<tis-password>"
echo $TIS_PASS | docker login $REGISTRY -u token --password-stdin
cosign verify $(curl -fsSL https://tis.tetrate.io/trustee) <IMAGE>For example
cosign verify $(curl -fsSL https://tis.tetrate.io/trustee) $REGISTRY/proxyv2:1.22.2-tetratefips0
Check cosign output
Successful verification will result in following output in stdout screen
The following checks were performed on each of these signatures:
- The cosign claims were validated
- Existence of the claims in the transparency log was verified offline
- The code-signing certificate was verified using trusted certificate authority certificatesExample output
$ cosign verify $(curl -fsSL https://tis.tetrate.io/trustee) $REGISTRY/proxyv2:1.22.2-tetratefips0
Verification for <registry>/proxyv2:1.22.2-tetratefips0 --
The following checks were performed on each of these signatures:
- The cosign claims were validated
- Existence of the claims in the transparency log was verified offline
- The code-signing certificate was verified using trusted certificate authority certificates
[{"critical":{"identity":{"docker-reference":"<registry>/proxyv2"},"image":{"docker-manifest-digest":"sha256:cb113b4815a1f85c48a676167d9d12842ae85f3f11d03f367852c40075741bf5"},"type":"cosign container image signature"},"optional":{"1.3.6.1.4.1.57264.1.1":"https://accounts.google.com","Bundle":{"SignedEntryTimestamp":"MEYCIQC2i7U2Jzt+wJKROFfHPF+h7qPkYKtZjly+Z2WUWALKegIhAI+iCHjrwzThf3Y5MyMO896jbzQibvtTcFBASFkfRnpC","Payload":{"body":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJhZDZhOGY2NzdiNjQ4MjZlYWZmMmVjOWQ3YWI5Njc0MjFiYjAzNjVhOTJhNjdkMTE2MjRjNDAxMTEzMGIwMzliIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRnZ1RWdJa053RlpNL2Q1YUg5Z2VnMUlDQ3JLNElxTTBCM1hGVzR1TnVyZ0FpQmNCWFdRdnNDN1pHUTFFdHMrZGpkY1lKTEJ6Y0luUjh0a0M5bWtrS01QaUE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTTRla05EUVc1cFowRjNTVUpCWjBsVlRsVlNSRzVsVURRM2RrTmFNbEpYV21wT1UxSkpTbFJUVEUwd2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcE5lRTFxUlhoTlJGVjZUV3BKZUZkb1kwNU5hazE0VFdwRmVFMUVWVEJOYWtsNFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZRYUVVNGVXTTRVRkprWkVONWJ6TTVRek42TVdWWGQwZ3ZaVUU1VG1wc2RsWnBNMWdLVkRSdWRXWXJUMVUyU1d0eVEzSm9aMDlPUlZBMlJsbENNbE1yV2xjMFpuWmxTRzh2Tld4MGFYQklTR2htUWxkMFpqWlBRMEZhWTNkblowZFVUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZZZVdsVkNsaHViVzVGTVZwS1EzSlRiVzlXTUZaQ2JrVmpTM0J2ZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDFOQldVUldVakJTUVZGSUwwSkVOSGRRU1VVMlpFaEtNV016VW14YVZVSXdXbGhTZVZsWVVteE1WMng2WkVkc2RreFlUakZaYms1cVkyMXNkd3BrUjJ4MlltazFjRmxYTUhWYU0wNXNZMjVhY0ZreVZtaFpNazUyWkZjMU1FeHRUblppVkVGd1FtZHZja0puUlVWQldVOHZUVUZGUWtKQ2RHOWtTRkozQ21ONmIzWk1Na1pxV1RJNU1XSnVVbnBNYldSMllqSmtjMXBUTldwaU1qQjNTM2RaUzB0M1dVSkNRVWRFZG5wQlFrTkJVV1JFUW5SdlpFaFNkMk42YjNZS1RESkdhbGt5T1RGaWJsSjZURzFrZG1JeVpITmFVelZxWWpJd2QyZFphMGREYVhOSFFWRlJRakZ1YTBOQ1FVbEZaWGRTTlVGSVkwRmtVVVJrVUZSQ2NRcDRjMk5TVFcxTldraG9lVnBhZW1ORGIydHdaWFZPTkRoeVppdElhVzVMUVV4NWJuVnFaMEZCUVZsNFdGaExPSGhCUVVGRlFYZENSMDFGVVVOSlIzSTNDbmxaVFM4MFdEaDJVMDVaWkROWVYzQjFXWGh2YTFKaFltdGlkWGxKVUZORlRFVjFUbE5xYkRaQmFVRTVTWE52ZDAxeU5UZHlTWGx1VDA5b1IzSlJVRTRLTlZoSlpUTmthVVpSU2psS1EyZGpiblZMY2trMWVrRkxRbWRuY1docmFrOVFVVkZFUVhkT2NFRkVRbTFCYWtWQmIydFBiQzgzZGtScmJtaHhlbUpET0FwWlIyUTRhR1pwYlRaRlJUTkdhR0ZzZHpaYVFtUmFlVVpyZVdOR05qUnlZMGw2ZGpVMGFGQnJjMVpvZWtOWGJtWkJha1ZCWjNaVlVqRmtZMEpVZURsTUNuRjNRV3MxWTI0eFpsQXZVMWRaWVZwNWRqTjBkMk15UlVGVkwySndXR3c1Tm5WTmEwUjZhRFpMZVVoNVNWSlVNVTV0Vkc4S0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19","integratedTime":1702272741,"logIndex":55782018,"logID":"c0d23d6ad406973f9559f3ba2d1ca01f84147d8ffc5b8445c224f98b9591801d"}},"Issuer":"https://accounts.google.com","Subject":"trustee@tetrate-istio-subscription.iam.gserviceaccount.com"}}]To check the Subject
$ cosign verify $(curl -fsSL https://tis.tetrate.io/trustee) $REGISTRY/proxyv2:1.22.2-tetratefips0 | jq -r '.[].optional.Subject'
Verification for <registry>.tetrate.io/proxyv2:1.22.2-tetratefips0 --
The following checks were performed on each of these signatures:
- The cosign claims were validated
- Existence of the claims in the transparency log was verified offline
- The code-signing certificate was verified using trusted certificate authority certificates
trustee@tetrate-istio-subscription.iam.gserviceaccount.com
Conclusion
By using cosign to verify Tetrate's images, you can confidently ascertain that the integrity of the image is maintained, reflecting Tetrate's commitment to secure and reliable software distribution.