8장. 컨테이너 이미지에 서명
Red Hat Enterprise Linux의 컨테이너 이미지에 서명하여 이미지의 진위와 무결성을 보장할 수 있습니다. 이미지에 서명하려면 sigstore 서명을 사용하고 이 서명 기술은 모든 OCI 호환 컨테이너 레지스트리와 호환됩니다. Podman을 사용하여 원격 레지스트리로 푸시하기 전에 이미지에 서명하고 서명되지 않은 이미지가 거부되도록 소비자를 구성할 수 있습니다.
sigstore 서명은 컨테이너 레지스트리에 서명을 저장하므로 별도의 조회 서버가 필요하지 않습니다. 컨테이너 이미지에 서명하면 공급망 공격을 방지하는 데 도움이 됩니다.
8.1. 개인 키를 사용하여 sigstore 서명을 사용하여 컨테이너 이미지에 서명 링크 복사링크가 클립보드에 복사되었습니다!
RHEL(Red Hat Enterprise Linux)에서 개인 키를 사용하여 sigstore 서명으로 컨테이너 이미지에 서명하려면 로컬에서 관리되는 키 쌍과 함께 Podman 툴을 사용할 수 있습니다.
사전 요구 사항
-
container-toolsmeta-package가 설치되어 있습니다.
프로세스
sigstore 공개 또는 개인 키 쌍을 생성합니다.
$ skopeo generate-sigstore-key --output-prefix myKey.private/etc/containers/registries.d/default.yaml파일에 다음 내용을 추가합니다.docker: <registry>: use-sigstore-attachments: trueuse-sigstore-attachments옵션을 설정하면 Podman 및 Skopeo에서 컨테이너 sigstore 서명을 이미지와 함께 읽고 쓸 수 있으며 서명된 이미지와 동일한 리포지토리에 저장할 수 있습니다./etc/containers/registries.d/default.yaml파일에서 시스템 전체 레지스트리 구성을 편집할 수 있습니다./etc/containers/registries.d디렉터리의 YAML 파일에서 registry 또는 repository 구성 섹션을 편집할 수도 있습니다.모든 YAML 파일을 읽고 파일 이름은 임의의 파일일 수 있습니다. 단일 범위(default-docker, registry 또는 namespace)는
/etc/containers/registries.d/디렉터리 내의 하나의 파일에만 존재할 수 있습니다.현재 디렉터리에서
Containerfile을 사용하여 컨테이너 이미지를 빌드합니다.$ podman build -t <registry>/<namespace>/<image>이미지에 서명하고 레지스트리에 내보냅니다.
$ podman push --sign-by-sigstore-private-key ./myKey.private <registry>/<namespace>/<image>podman push명령은 <registry>/<namespace>/<image> 로컬 이미지를 <registry>/<namespace>/<image>로 원격 레지스트리에푸시합니다.--sign-by-sigstore-private-key옵션은myKey.private개인 키를 <registry>/<namespace>/<image> 이미지에 사용하여 sigstore 서명을 추가합니다. 이미지 및 sigstore 서명이 원격 레지스트리에 업로드됩니다.참고컨테이너 레지스트리에서 이동하는 동안 기존 이미지에 서명해야 하는 경우
skopeo copy명령을 사용할 수 있습니다.자세한 내용은 시스템의
podman-push(1)및podman-build(1)도움말 페이지를 참조하십시오.
검증
이미지를 가져옵니다.
$ podman pull <registry>/<namespace>/<image>설정한 대로 서명 존재를 적용하려면
podman pull명령을 실행해야 합니다. 구성된 레지스트리에서 잘못된 키로 서명되거나 서명된 이미지를 가져오려고 하면 명령이 실패합니다.