검색

8.7. 개인 키 및 Rekor로 sigstore 서명으로 컨테이너 이미지에 서명

download PDF

Podman 버전 4.4부터 Rekor 서버와 함께 컨테이너 서명의 sigstore 형식을 사용할 수 있습니다. 공용 rekor.sigstore.dev 서버에 공용 서명을 업로드할 수도 있으므로 Cosign과의 상호 운용성이 증가합니다. 그런 다음 cosign verify 명령을 사용하여 Rekor를 명시적으로 비활성화하지 않고도 서명을 확인할 수 있습니다.

사전 요구 사항

  • container-tools meta-package가 설치되어 있습니다.

절차

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

    $ skopeo generate-sigstore-key --output-prefix myKey
    • 공개 및 개인 키 myKey.pubmyKey.private 이 생성됩니다.
  2. /etc/containers/registries.conf.d/default.yaml 파일에 다음 내용을 추가합니다.

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

      참고

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

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

    $ podman build -t <registry>/<namespace>/<image>
  4. file.yml 파일을 생성합니다.

    privateKeyFile: "/home/user/sigstore/myKey.private"
    privateKeyPassphraseFile: "/mnt/user/sigstore-myKey-passphrase"
    rekorURL: "https://<your-rekor-server>"
    • file.yml 은 sigstore 서명을 생성하는 데 필요한 옵션을 저장하는 데 사용되는 sigstore 서명 매개 변수 YAML 파일입니다.
  5. 이미지에 서명하고 레지스트리에 푸시합니다.

    $ podman push --sign-by-sigstore=file.yml <registry>/<namespace>/<image>
    • 또는 유사한 --sign-by-sigstore 옵션과 함께 skopeo copy 명령을 사용하여 컨테이너 레지스트리에서 이동하는 동안 기존 이미지에 서명할 수 있습니다.
주의

공용 서버에 대한 제출에는 서명에 대한 공개 키 및 메타데이터에 대한 데이터가 포함되어 있습니다.

검증

  • 다음 방법 중 하나를 사용하여 컨테이너 이미지가 올바르게 서명되었는지 확인합니다.

    • cosign verify 명령을 사용합니다.

      $ cosign verify <registry>/<namespace>/<image> --key myKey.pub
  • podman pull 명령을 사용합니다.

    • /etc/containers/policy.json 파일에 rekorPublicKeyPath 또는 rekorPublicKeyData 필드를 추가합니다.

      {
        ...
        "transports": {
      	"docker": {
              "<registry>/<namespace>": [
                  {
                      "type": "sigstoreSigned",
                      "rekorPublicKeyPath": "/path/to/local/public/key/file",
                  }
              ]
      	...
      	}
        }
        ...
      }
    • 이미지를 가져옵니다.

      $ podman pull <registry>/<namespace>/<image>
      • podman pull 명령은 구성된 대로 서명 존재를 강제 시행하며 추가 옵션은 필요하지 않습니다.

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.