9장. 컨테이너 이미지 서명
GPG(GNU 개인 정보 보호 ECDHE) 서명 또는 sigstore 서명을 사용하여 컨테이너 이미지에 서명할 수 있습니다. 두 서명 기술 모두 일반적으로 모든 OCI 호환 컨테이너 레지스트리와 호환됩니다. Podman을 사용하여 원격 레지스트리로 푸시하고 서명되지 않은 이미지가 거부되도록 소비자를 구성할 수 있습니다. 컨테이너 이미지에 서명하면 공급망 공격을 방지하는 데 도움이 됩니다.
GPG 키를 사용하여 서명하려면 별도의 조회 서버를 배포해야 합니다. lookaside 서버는 모든 HTTP 서버일 수 있습니다. Podman 버전 4.2부터 컨테이너 서명의 sigstore 형식을 사용할 수 있습니다. GPG 키와 비교하면 sigstore 서명이 컨테이너 레지스트리에 저장되므로 별도의 조회 서버가 필요하지 않습니다.
9.1. GPG 서명으로 컨테이너 이미지 서명 링크 복사링크가 클립보드에 복사되었습니다!
GPG(GNU 개인 정보 보호 ECDHE) 키를 사용하여 이미지에 서명할 수 있습니다.
사전 요구 사항
-
container-toolsmeta-package가 설치되어 있습니다. - GPG 툴이 설치되어 있어야 합니다.
lookaside 웹 서버가 설정되어 있으며 여기에 파일을 게시 할 수 있습니다.
/etc/containers/registries.d/default.yaml파일에서 시스템 전체 레지스트리 구성을 확인할 수 있습니다.lookaside-staging옵션은 서명 쓰기를 위한 파일 경로를 참조하며 일반적으로 서명을 게시하는 호스트에 설정됩니다.# cat /etc/containers/registries.d/default.yaml docker: <registry>: lookaside: https://registry-lookaside.example.com lookaside-staging: file:///var/lib/containers/sigstore ...
절차
GPG 키를 생성합니다.
# gpg --full-gen-key공개 키를 내보냅니다.
# gpg --output <path>/key.gpg --armor --export <username@domain.com>현재 디렉터리에서
Containerfile을 사용하여 컨테이너 이미지를 빌드합니다.$ podman build -t <registry>/<namespace>/<image><
registry> , <namespace> , <image>를 컨테이너 이미지 식별자로 바꿉니다. 자세한 내용은 컨테이너 레지스트리를 참조하십시오.이미지에 서명하고 레지스트리에 푸시합니다.
$ podman push \ --sign-by <username@domain.com> \ <registry>/<namespace>/<image>참고컨테이너 레지스트리에서 기존 이미지에 서명해야 하는 경우
skopeo copy명령을 사용할 수 있습니다.선택 사항: 새 이미지 서명을 표시합니다.
# (cd /var/lib/containers/sigstore/; find . -type f) ./<image>@sha256=<digest>/signature-1로컬 서명을 lookaside 웹 서버에 복사합니다.
# rsync -a /var/lib/containers/sigstore <user@registry-lookaside.example.com>:/registry-lookaside/webroot/sigstore
서명은 lookaside-staging 옵션으로 결정된 위치에 저장됩니다(이 경우 /var/lib/containers/sigstore 디렉터리).
검증
- 자세한 내용은 GPG 이미지 서명 확인을 참조하십시오.