8.3. 개인 키를 사용하여 sigstore 서명으로 컨테이너 이미지에 서명

Podman 버전 4.2부터 컨테이너 서명의 sigstore 형식을 사용할 수 있습니다.

사전 요구 사항

  • containers-tool meta-package가 설치됩니다.

절차

  1. sigstore 공용/개인 키 쌍을 생성합니다.

    $ skopeo generate-sigstore-key --output-prefix myKey
    • 공개 및 개인 키 myKey.pubmyKey.private 이 생성됩니다.

      참고

      skopeo generate-sigstore-key 명령은 RHEL 9.2에서 사용할 수 있습니다. 그렇지 않으면 업스트림 Cosign 프로젝트를 사용하여 공개/개인 키 쌍을 생성해야 합니다.

      • cosign 툴을 설치합니다.

        $ git clone -b v2.0.0 https://github.com/sigstore/cosign
        $ cd cosign
        $ make ./cosign
      • 공개/개인 키 쌍을 생성합니다.

        $ ./cosign generate-key-pair
        ...
        Private key written to cosign.key
        Public key written to cosign.pub
  2. /etc/containers/registries.d/default.yaml 파일에 다음 내용을 추가합니다.

    docker:
        <registry>:
            use-sigstore-attachments: true

    use-sigstore-attachments 옵션을 설정하면 Podman 및 Skopeo가 이미지와 함께 컨테이너 sigstore 서명을 읽고 쓰고 서명된 이미지와 동일한 리포지토리에 저장할 수 있습니다.

    참고

    /etc/containers/registries.d/default.yaml 파일에서 시스템 전체 레지스트리 구성을 편집할 수 있습니다. /etc/containers/registries.d 디렉터리의 YAML 파일에서 레지스트리 또는 리포지토리 구성 섹션을 편집할 수도 있습니다. 모든 YAML 파일은 읽기이며 파일 이름은 임의로 지정할 수 있습니다. 단일 범위(default-docker, 레지스트리 또는 네임스페이스)는 /etc/containers/registries.d 디렉터리 내의 하나의 파일에만 존재할 수 있습니다.

  3. 현재 디렉터리에서 Containerfile 을 사용하여 컨테이너 이미지를 빌드합니다.

    $ podman build -t <registry>/<namespace>/<image>
  4. 이미지에 서명하고 레지스트리에 푸시합니다.

    $ 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 명령을 사용할 수 있습니다.

검증

추가 리소스