강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

taeho Kim님의 프로필 이미지
taeho Kim

작성한 질문수

[DevOps] 빠르고 안전한 어플리케이션 배포 파이프라인(CI/CD) 만들기

2.9. [SIGN/VERIFY] cosign 실습 및 파이프라인 적용

cosign tlog 관련 409에러

작성

·

16

1

1. 무엇을 하고 싶으신가요?

cosign sign을 통한 이미지 스캔을 하고 싶은데 단순히 이미지 재빌드하고 푸시하면 해결될 것이라고 생각하는데 그러지 않고 해결할 수 있는 방법을 찾고 싶습니다.

 

2. 언제, 어떤 오류가 발생하시나요?

  cosign에서 맨처음에 태그 기반으로 사이닝을 진행(최초 --tlog-upload=false 옵션 없이 이때 따로 진행할거냐는 경고 없이 바로 사이닝 진행 , 이후 --tlog-upload=false 옵션과 함께 진행하였지만 이미 사인되어있다는 메시지 그리고 ECR을 확인해보니 레포지토리에 서명 결과가 푸시된 것을 확인) , 이후 서명 결과를 ECR에서 삭제하고 다이제스트 기반으로 sign 명령을 내려도 계속 409 에러가 발생합니다.

 

3. 어떤 시도를 해보셨나요?

 

4. 작성한 코드를 공유해주세요.

cosign sign --tlog-upload=false \
  --key awskms:///REDACTED-KMS-KEY-ID \
  <AWS_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/<REPO>@$(
    docker buildx imagetools inspect \
      <AWS_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/<REPO>:latest \
      --format "{{json .Manifest}}" | jq -r ".digest"
  )

Error: signing [<AWS_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/<REPO>@sha256:<DIGEST>]:
signing digest: signing bundle:
[POST /api/v1/log/entries][409] createLogEntryConflict
{"code":409,"message":"an equivalent entry already exists in the transparency log with UUID <REDACTED>"}


답변 2

0

천강민님의 프로필 이미지
천강민
지식공유자

안녕하세요.

  1. 경고 미출력 관련해서는 cosign 버전이 올라가면서, 내부적으로 구현이 변경된 부분이 있는 것으로 보입니다. cosign 버전 공유해주시면 조금 더 찾아볼 수 있을 것 같구요. (cosign version)

  2. 409 발생하는 부분은 rekor 라고 하는 외부 투명성(transparency) 로그 업로드 하는 부분에 서명이 업로드가 돼서 발생하는 것으로 보입니다. 가장 빠르게 해결 가능한건 시그니처가 변경될 수 있도록 내용 변경 후에 빌드를 다시 수행하시는게 나을 것 같습니다. 이 또한 버전 확인이 필요할 것 같네요.

일단은 진행하기 위해서 말씀드린 것 처럼 다시 빌드 하시기를 권장 드립니다!

감사합니다.

 

천강민님의 프로필 이미지
천강민
지식공유자

추가로 —tlog-upload=false 꼭 설정해주세요!

0

안녕하세요, 인프런 AI 인턴입니다. taeho Kim님.

cosign을 사용하여 컨테이너 이미지에 서명할 때 발생하는 409 에러는 이미 해당 이미지에 대해 서명 로그가 존재하기 때문에 발생합니다. 이는 tlog(투명성 로그)에 이미 기록이 존재한다는 의미입니다. 이러한 문제를 해결하기 위한 몇 가지 방법을 소개해드리겠습니다.

  1. 서명을 철회하기: cosign에서는 cosign revoke 명령을 통해 서명 철회가 가능합니다. 하지만, 이 경우에도 기존 로그가 삭제되지 않는 경우가 있으므로 tlog에 관련된 설정이 구체적으로 필요할 수 있습니다.

  2. 이미지 재빌드 및 재푸시:

    • 이미지의 내용을 변경하지 않고 단순히 이미지 태그만 바꾸어보는 방법도 가능합니다.
    • docker build 명령을 활용하여 기능적으로 동일하지만, 다른 다이제스트를 가진 이미지를 생성한 다음 푸시합니다.
  3. 이미지 태그 변경: 기존 이미지에 새로운 태그를 추가하여 다른 형태로 푸시하여 서명합니다.

추가적으로, cosign 문서나 관련 커뮤니티에서 더 구체적인 해결책을 살펴보는 것도 권장드립니다. cosign GitHub repository에서 관련 이슈를 검색하거나, 문제 해결을 위한 최신 정보를 얻을 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

taeho Kim님의 프로필 이미지
taeho Kim

작성한 질문수

질문하기