Red Hat Training
A Red Hat training course is available for RHEL 8
8장. 컨테이너 이미지 서명
GPG(GNU 개인 정보 보호 ECDHE) 서명 또는 sigstore 서명을 사용하여 컨테이너 이미지에 서명할 수 있습니다. 두 서명 기술 모두 일반적으로 모든 OCI 호환 컨테이너 레지스트리와 호환됩니다. Podman을 사용하여 원격 레지스트리로 푸시하고 서명되지 않은 이미지가 거부되도록 소비자를 구성할 수 있습니다. 컨테이너 이미지에 서명하면 공급망 공격을 방지하는 데 도움이 됩니다.
GPG 키를 사용하여 서명하려면 별도의 조회 서버를 배포해야 합니다. lookaside 서버는 모든 HTTP 서버일 수 있습니다. Podman 버전 4.2부터 컨테이너 서명의 sigstore 형식을 사용할 수 있습니다. GPG 키와 비교하면 sigstore 서명이 컨테이너 레지스트리에 저장되므로 별도의 조회 서버가 필요하지 않습니다.
8.1. GPG 서명으로 컨테이너 이미지 서명
GPG(GNU 개인 정보 보호 ECDHE) 키를 사용하여 이미지에 서명할 수 있습니다.
사전 요구 사항
-
container-tools
모듈이 설치되어 있습니다. - 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 이미지 서명 확인을 참조하십시오.
추가 리소스
-
podman-image-trust
도움말 페이지 -
podman-push
man 페이지 -
podman-build
man 페이지 - GPG 키 쌍을 생성하는 방법