CNG 이미지 무결성 확인

CNG 이미지가 레지스트리에 푸시된 후 변조되지 않았음을 보장하기 위해 이들 다이제스트는 cosign을 사용하여 서명됩니다. cosign은 ECDSA-P256 키와 SHA256 해시를 사용합니다. 키는 PEM 인코딩된 PKCS8 형식으로 저장됩니다.

이러한 다이제스트는 다음과 같이 cosign verify 명령을 사용하여 확인할 수 있습니다:

note
이미지는 개인 키를 사용하여 서명되며 해당 공개 키를 사용하여 로컬에서만 확인할 수 있습니다. GitLab.com OIDC 제공자로의 키리스(signing)/확인과 관련하여 이슈 638에서 논의 중입니다.
  1. 서명에 사용된 공개 키를 https://charts.gitlab.io/cosign.pub에서 다운로드합니다:

    wget https://charts.gitlab.io/cosign.pub
    
  2. CNG 이미지를 확인합니다:

    $ cosign verify --key cosign.pub registry.gitlab.com/gitlab-org/build/cng/gitlab-workhorse-ee:v16.9.0 | jq -r
       
    registry.gitlab.com/gitlab-org/build/cng/gitlab-workhorse-ee:v16.9.0 확인 --
    다음과 같은 각 서명에 대해 다음 확인이 수행되었습니다:
      - cosign 클레임이 유효한지 확인되었습니다
      - 투명성 로그에 대한 클레임의 존재가 오프라인에서 확인되었습니다
      - 서명이 지정된 공개 키에 대해 확인되었습니다
    [
      {
        "critical": {
          "identity": {
            "docker-reference": "dev.gitlab.org:5005/gitlab/charts/components/images/gitlab-workhorse-ee"
          },
          "image": {
            "docker-manifest-digest": "sha256:218a67cc46b49ba0563dbdc83618bf11fa5453577a4aa75475823e315952ea79"
          },
          "type": "cosign container image signature"
        },
        "optional": {
          "Bundle": {
            "SignedEntryTimestamp": "MEUCIQCDj2Ffe8Qll9clqAKoBA8wTwg2NrzMLvpVMkw61qdhmAIgQgLYCT7IdGwVEp5UrQjN67Zt9CTATQpi08+CrGgqnxw=",
            "Payload": {
              "body": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI4Mzg1Y2YyYzI0MjI5ZjFhYzk2MTU1ZGU3YzM3ZjcyZmQzOTczYTgwZGIyMjNmNDUwZjlhNGMxNjRmZDIyNmUzIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRVpjcENpRFJ5V1RuT25jRGtmUEtaTnRPc0s4dW9YeFJqMEcrTnZ1VzRwS0FpQThEK2YyWVRtQ2Z3MVFqK0doQmlVb0tFQVA4dE5MWDZOYk1kczFUQ1JJR0E9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCUVZVSk1TVU1nUzBWWkxTMHRMUzBLVFVacmQwVjNXVWhMYjFwSmVtb3dRMEZSV1VsTGIxcEplbW93UkVGUlkwUlJaMEZGYnpGQk5tbEZjbXhrSzFoRU5WSTBiVXRNU1VGNU4wVXhOMlV3WXdwV1VWSldlVEpoTmpoSlRESklSaXRXV1VKeWFqRkpjbHAyT0ZsdU5UUTVaU3RUUVRVeVpVZHZLMEpIU1RWSWJVeGxVbXR2Wm5Ob1MxaG5QVDBLTFMwdExTMUZUa1FnVUZWQ1RFbERJRXRGV1MwdExTMHRDZz09In19fX0=",
              "integratedTime": 1707955615,
              "logIndex": 71468664,
              "logID": "c0d23d6ad406973f9559f3ba2d1ca01f84147d8ffc5b8445c224f98b9591801d"
            }
          }
        }
      }
    ]